我的应用程序输出波文件,我有实现水印的需求。我指的是另一个wave文件,其中包含4秒钟的内容,有人说"这个文件是受版权保护的材料";并且每隔30秒将其叠加到原始文件中。
我试过很多方法,但都不太奏效。我可以使用OffsetSampleProvider
将水印填充到30秒,并将其与MixingSampleProvider
混合,但这只会混合在一个副本中。
LoopStream
是WaveStream
,而不是ISampleProvider
,即使我能做转换,我认为这将永远混合,因为LoopStream
永远不会停止返回数据。
这似乎是一个相当基本的用例,但我不知道如何做到这一点!
你离得不远。您可以使用ToSampleProvider
扩展方法将LoopStream
转换为ISampleProvider
,然后您可以使用Take
扩展方法来限制循环流的持续时间,以匹配与之混合的文件的持续时间。