【发布时间】:2019-07-16 11:22:07
【问题描述】:
我正在开发一个 WPF 应用程序,我必须在其中播放音频。我收到.mp4 格式(字节数组)的音频数据,唯一的限制是我无法将其写入硬盘。
我找到了几种播放.mp4 格式的解决方案,例如使用WMPLib.WindowsMediaPlayer,但我无法提供字节数组或流到该库来播放音频。它只接受文件路径。
然后我找到了System.Media.SoundPlayer,它可以播放流中的音频,但只是.wav 格式。我开始寻找从 mp4 转换为 wav 的解决方案。我找到了NAudio 库,我可以通过以下方式进行转换:
using (var data = new MediaFoundationReader(filePath)) {
var stream = new MemoryStream();
WaveFileWriter.WriteWavFileToStream(stream, data);
}
问题在于我可以仅使用文件路径参数来实例化MediaFoundationReader。我没有找到任何不使用文件来创建它的方法。我认为这也是一个死胡同。
那么,关于如何在内存中转换音频,或者如何从字节数组或流中直接播放 .mp4 文件,任何建议都会有所帮助?
【问题讨论】:
-
也许你可以从 github 获取代码并尝试将构造函数添加到
MediaFoundationReader类以获取流。我想,一旦它获取文件,它无论如何都会打开流,所以你可以传递一个流并从那里继续。 -
是的,我已经检查过那个库的代码,修改代码不会那么容易,也许我会试试,谢谢
标签: c# wpf audio audio-converter