我正在寻找我的问题的解决方案,因为我的音频文件(.wav)在我的解决方案的资源中。我需要检测它会玩多长时间。
如何计算资源中音频的持续时间?
有没有办法检测在我的资源中播放某个音频文件需要多长时间?
答案 0 :(得分:4)
您可以使用NAudio来阅读资源流并获取持续时间
using NAudio.Wave;
...
WaveFileReader reader = new WaveFileReader(MyProject.Resource.AudioResource);
TimeSpan span = reader.TotalTime;
您也可以执行Matthew Watson所建议的内容,并将长度作为额外的字符串资源。
此外,this SO question有多种不同的方法来确定持续时间,但大部分都是针对文件的,而不是针对从资源中抓取的流。
答案 1 :(得分:2)
我有一个更好的解决方案,你的问题没有任何库
byte[] TotalBytes = File.ReadAllBytes(FilePath);
从ur文件中获取所有字节后,您需要获得每秒的位数。
bitrate = (BitConverter.ToInt32(new[] { TotalBytes[28], TotalBytes[29], TotalBytes[30], TotalBytes[31] }, 0) * 8);
现在您已经可以在几秒钟内获得持续时间。
Duration = (TotalBytes.Length - 8) * 8 / bitrate;