gpt4 book ai didi

c# - 如何在 C# 中读取 .wav 文件的比特率

转载 作者:太空狗 更新时间:2023-10-29 22:26:33 30 4
gpt4 key购买 nike

鉴于我有一个 .wav 文件,在 C# 中读取其比特率属性的最佳方法是什么。试过Shell,问了个问题Is "Bit rate" property fixed in index 28?没有答案。此外,我现在相信 Shell 不是读取音频文件属性的最佳方式。我研究了不同的开源媒体库,找不到太多。

TagLib#:这个工作正常,但有两个问题。它不反射(reflect)实际比特率在某些比特率很低的情况下(比如小于30),它只是返回0。其次,我不确定是否可以用于商业用途。许可证说 http://opensource.org/licenses/LGPL-2.1

NAudio:根本没有公开任何属性来读取比特率,所以我必须计算它。经过研究,我得到了这个计算比特率的公式。比特率 = 采样率 * channel 数 * BitsPerSample。这在大多数情况下工作正常,但是如果您为某些 .wav 文件设置了 BitsPerSample = 0,则会失败。是的,文件绝对没问题,我可以播放它,但 BitsPerSample 仍然为 0。

MediaInfo:同样没有直接的属性,必须遍历音频文件的所有属性,然后搜索“整体比特率”。而且必须在项目中添加两个dll,一个是.net wraper,另一个是实际的dll。

对于这么长的总结,我深表歉意,但我不想在不展示我已经完成的工作的情况下问“嘿,我怎样才能获得音频文件的比特率”。那么,如果您有一个 .wav 音频文件,您会使用什么库/方法来获取比特率?

最佳答案

对于 NAudio,比特率是通过 WaveFormat 结构的 AverageBytesPerSecond 成员计算的:

using (var reader = new WaveFileReader(filename))
{
bitrate = reader.WaveFormat.AverageBytesPerSecond * 8;
}

这将适用于所有未压缩的音频格式和大多数压缩格式。 WAV 文件格式是一种容器格式,实际上可以在任何 编解码器中包含音频,尽管它最常见的用途是 PCM。但并非所有编解码器都是 CBR(恒定比特率)。有些具有可变比特率,因此 AverageBytesPerSecond 属性可能是一个估计值。

关于c# - 如何在 C# 中读取 .wav 文件的比特率,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21567920/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com