如何通过.NET/C#获取MP3文件的持续时间?

4

我需要创建一个包含mp3歌曲的M3U播放列表。

有没有办法读取MP3文件的持续时间属性?


可能是如何从mp3中读取元数据?的重复问题。 - Jonathon Chase
4
我们是来帮你在谷歌上搜索资料还是你已经自己进行了研究和尝试?如果你不知道这个网站(https://www.google.com/webhp?sourceid=chrome-instant&ion=1&espv=2&ie=UTF-8#q=mp3%20c%23%20duration)的话。 - Rick S
有没有办法读取MP3文件的持续时间属性? 有! - Ňɏssa Pøngjǣrdenlarp
2
可能是如何在.NET中检索MP3的持续时间?的重复问题。 - David Culp
2个回答

14

不要重复造轮子。使用像NAudio这样的外部库来完成繁重的工作。

  • NAudio 可在GitHub上获取。

你可以像这样使用它:

Mp3FileReader reader = new Mp3FileReader("<YourMP3>.mp3");
TimeSpan duration = reader.TotalTime;

当然,另一种选择是这个答案

要使用Mp3FileReader类,您必须在文件中添加using NAudio.Wave;


5
感谢大家的帮助。
我尝试使用TagLib,它运行良好。
TagLib.File f = TagLib.File.Create(<pathToFile>, TagLib.ReadStyle.Average);
var duration = (int)f.Properties.Duration.TotalSeconds;

4
TagLib存在一个bug,影响到音频文件的时长属性。大多数情况下,实际时长只有标签库中所显示时长的70%左右。 - StartCoding
@StartCoding~谢谢提醒。我决定使用NReco.VideoInfo代替。它包装了来自ffmpeg工具箱的ffprobe。如果一个人需要处理大量视频,那么ffmpeg已经在系统路径中了。 - InteXX

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接