使用 C# 测试音频文件

Posted

技术标签:

【中文标题】使用 C# 测试音频文件【英文标题】:Testing an Audio File Using C# 【发布时间】:2014-07-13 06:34:38 【问题描述】:

我想编写一个脚本来测试特定的 .WAV 文件并确定它是否被正常录制。我的意思是,我要让多台计算机同时录制相同的输入,保存它们的音频文件,然后我需要看看哪些计算机由于那里的任何原因无法录制它可能是。

我正在考虑检查音频文件的大小,但我不确定是否可以说某台在其输出文件中没有实际录音的 PC 未通过测试,而另一台 PC 已通过它,仅基于输出文件的大小。

我希望我对我的问题足够清楚。最好的问候。

【问题讨论】:

【参考方案1】:

您可以查询文件属性的采样率,采样率越高质量越好。像这样,取自这里:Whant to check all kind of audio & video quality in asp.net C#

    using WMPLib; 

    WindowsMediaPlayerClass wmp = new WindowsMediaPlayerClass();
    IWMPMedia mediaInfo = wmp.newMedia("myfile.wmv"); 

    // duration
    Console.WriteLine("Duration = " + mediaInfo.duration);

    // write named attributes
    for (int i=0; i<mediaInfo.attributeCount; i++) 
    
      Console.WriteLine(mediaInfo.getAttributeName(i) + " = " +  m    ediaInfo.getItemInfo(mediaInfo.getAttributeName(i)) );
    

或者使用第三部分工具/库来测试音质

【讨论】:

似乎从 WAV 文件中检索到的唯一属性是它的持续时间。另一方面,在另一个 MP3 文件中,我设法检索到更多的属性,尽管它们似乎都没有帮助我或与我的情况有关。【参考方案2】:

NAudio 是我的解决方案。我强烈建议在类似情况下使用这个库。

【讨论】:

以上是关于使用 C# 测试音频文件的主要内容,如果未能解决你的问题,请参考以下文章

在 C# 中使用 FFMPEG 合并音频和视频文件

如何使用 c# 将两个音频文件和一个视频文件合并到一个视频文件中?

使用 C# 增加或减少音频文件的音高

C#中的声音,将音频文件放在哪里?

在 C# 中合并两个音频文件

如何在 C# 中分层两个音频文件?