所以我试图使用NAudio和Ubuntu Linux的MonoDevelop,出于某种原因它的错误说,winmm.dll没有find,所以我试图下载它,并且“添加引用”对话声明它不是一个有效的.NET库。 这是我的代码….
using System; using System.IO; using Gst; using GLib; using Gst.BasePlugins; using NAudio; using NAudio.Wave; namespace record_audio_simple_test { class MainClass { //Define class variables private NAudio.Wave.WaveFileReader waveFile = null; private NAudio.Wave.DirectSoundOut output = null; public static void Main (string[] args) { WaveFileReader waveFile = new WaveFileReader("../../convo47.wav"); } } }
它说这行上的错误WaveFileReader waveFile = new WaveFileReader(“../../ convo47.wav”);
NAudio的很大一部分包含interop包装,用于访问诸如waveIn / waveOut,DirectSound,WASAPI,ACM,MediaFoundation和DMO等Windows API调用。 这些都不会在Linux上工作,因为这些API方法不存在。 我认为从理论上讲他们可能在Windows API模拟层上工作,但是最好创建一个IWavePlayer
的实现来调用Linux声音API。
NAudio的一些部分应该是跨平台的,比如IWaveProvider
和ISampleProvider
实现。 WaveFileReader
应该可以工作,但是由于它使用了mmioStringToFOURCC
Windows API调用,所以mmioStringToFOURCC
。 我将很快删除这个依赖关系,因为它正在阻止WaveFileReader
在Windows应用商店应用中使用。