c# - 如何将 RIFF block 数据写入使用 NAudio 制作的 WAV 文件?

标签 c# .net audio wav naudio

如何将 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 最好的音频库,尤其是低级的东西,实际上这是唯一的:-)

关于c# - 如何将 RIFF block 数据写入使用 NAudio 制作的 WAV 文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15820043/

相关文章:

c# - C# 中具有多种数据类型的多维数组?

c# - 如何遍历参数数组并将它们相互关联

c# - 用于跨平台开发的单声道资源

c# - 在数据中用逗号解析 CSV

c# - 捕捉声音输出

c# - jQuery Datatables 使用 WCF 进行服务器端处理

c# - Windows 窗体应用程序仍然是一个不错的选择吗?

c# - 使用 LINQ 查找存在于两个集合中的元素

java - 包接口(interface)在哪里定义?

c++ - 如何以编程方式更改非默认声音设备的音量?