gpt4 book ai didi

.net - 是否可以在不使用Windows Media Player的情况下获取WMA文件的长度?

转载 作者:行者123 更新时间:2023-12-02 22:47:28 25 4
gpt4 key购买 nike

我需要找到一种无需使用任何Windows Media Player(WMP)dll即可获取WMA文件长度的方法。我找到了使用WMP dll来执行此操作的方法,您可以看到here,但是由于另一个问题,我宁愿找到一种无需使用WMP的方法。

下面可以看到一种使用NAudio并与MP3配合使用的有前途的方法:

double GetMediaDuration(string MediaFilename)
{
double duration = 0.0;
using (FileStream fs = File.OpenRead(MediaFilename))
{
Mp3Frame frame = Mp3Frame.LoadFromStream(fs);
if (frame != null)
{
_sampleFrequency = (uint)frame.SampleRate;
}
while (frame != null)
{
if (frame.ChannelMode == ChannelMode.Mono)
{
duration += (double)frame.SampleCount * 2.0 / (double)frame.SampleRate;
}
else
{
duration += (double)frame.SampleCount * 4.0 / (double)frame.SampleRate;
}
frame = Mp3Frame.LoadFromStream(fs);
}
}
return duration;
}

有谁知道将其移植到WMA文件上的方法?

我查看了WindowsMediaFormat项目的源代码,但是找不到WMAFrame类或任何显然可以让我换出一个类的东西,以使其能够用于WMA。

最佳答案

您将不需要NAudio,但是需要Windows Media.NET(http://windowsmedianet.sourceforge.net/)

您将打开MediaReader,并检索作为压缩音频包的所谓的“样本”。他们每个人都有其持续时间。遍历整个文件,总计每个软件包的持续时间,这是您的解决方案。

如果有时间,我会得到一些代码。

更多信息:

读者:http://msdn.microsoft.com/en-us/library/dd757425(v=vs.85).aspx

未压缩样本的回调:http://msdn.microsoft.com/en-us/library/dd743503(v=vs.85).aspx

希望您能够将所有内容放在一起!

但是,有一个问题,那就是让我的 friend 发疯的问题-无论WMA文件中实际压缩了多少PCM,最后获得的压缩样本都将被“填充”为完整帧长度,因此如果您希望实际长度是在压缩之前给出的,您可以忘记它。

关于.net - 是否可以在不使用Windows Media Player的情况下获取WMA文件的长度?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16107774/

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