如何将 RIFF block 数据写入 WAV 文件的结尾?是的,没错,写入 WAV 文件的结尾。为什么?因为我要替换的旧程序就是这样做的,集成程序就是这样准备的,它们不能被修改。
我个人会使用 BASS.NET ,它确实处理 RIFF ICMT 标签。
EncoderWAV 类提供允许它的 WAV_AddRiffInfo 属性。
// re-encodes a file and adds a comment to it.
var init = Bass.BASS_Init(-1, 44100, BASSInit.BASS_DEVICE_DEFAULT, IntPtr.Zero);
if (init)
{
int channel = Bass.BASS_StreamCreateFile("filename", 0, 0, BASSFlag.BASS_STREAM_DECODE);
var tagInfo = new TAG_INFO { comment = "your comment" };
var encoderWav = new EncoderWAV(channel);
encoderWav.WAV_AddRiffInfo = true;
encoderWav.TAGs = tagInfo;
encoderWav.OutputFile = "output.wav";
var start = encoderWav.Start(null, IntPtr.Zero, false);
Bass.Free();
}
注意:不要忘记将 bass.dll 放在您的 .EXE 所在的位置
(起初 BASS 是一个 C 库,BASS.NET 为它提供了一个包装器,但也提供了许多原始库中没有的很酷的东西,例如编码器、可视化器等......)
IMO BASS.NET 是 .NET 最好的音频库,尤其是低级的东西,实际上这是唯一的:-)
我是一名优秀的程序员,十分优秀!