6

因此,我尝试将 MonoDevelop 与 NAudio 和 Ubuntu Linux 一起使用,由于某种原因,它错误地说找不到 winmm.dll,所以我尝试下载它,并且“添加引用”对话框声称它不是有效的 .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");上的错误

4

1 回答 1

10

NAudio 的很大一部分由互操作包装器组成,用于访问 Windows API 调用,例如 waveIn/waveOut、DirectSound、WASAPI、ACM、MediaFoundation 和 DMO。这些都不能在 Linux 上运行,因为这些 API 方法不存在。我想理论上它们可能在 Windows API 仿真层之上工作,但实际上创建一个IWavePlayer调用 Linux 声音 API 的实现会更好。

NAudio 的某些部分应该跨平台工作,例如大多数IWaveProviderISampleProvider实现。WaveFileReader也许应该可以工作,但是由于它使用了mmioStringToFOURCCWindows API 调用而失败了。我将很快删除此依赖项,因为它目前也停止WaveFileReader在 Windows 应用商店应用程序中使用。

于 2012-12-10T07:29:04.770 回答