正在获取mp3文件长度

本文关键字:文件 mp3 获取 | 更新日期: 2023-09-27 18:30:08

我目前正在尝试用C#编写一个音频播放器。我正在使用BASS库来处理播放音乐,但现在我在获取歌曲长度方面遇到了小问题。

我已经阅读了BASS文档并找到了一种方法:我所需要做的就是

int stream = Bass.BASS_StreamCreateFile(filepath,....);
int length = Bass.BASS_ChannelBytes2Seconds(stream, Bass.BASS_ChannelGetLength(stream));

在大多数情况下,我都能得到歌曲的有效长度。问题就从这里开始了。据我所知,流的创建操作相当昂贵(如果我错了,请纠正我),创建流只是为了获得歌曲的长度看起来有点傻。

所以我的问题是:有没有其他方法可以在不创建蒸汽文件的情况下获得它(不那么昂贵)。我稍后会考虑阅读id3标签。创建那个流是"无论如何都必须做的邪恶"吗?即使我试图用其他库获取它,它也会做完全相同的事情?

正在获取mp3文件长度

您可以使用Microsoft.WindowsAPICodePack.Shell:

using Microsoft.WindowsAPICodePack.Shell;

然后这样编码:

string file = "myfile.mp3"
ShellFile so = ShellFile.FromFilePath(file);
double 100nanoseconds;
double.TryParse(so.Properties.System.Media.Duration.Value.ToString(), out 100nanoseconds);

有一个代码项目也可以帮助您