CodeGo.net>获取MP3文件的长度

我目前正在尝试用C#编写音频播放器.我正在使用BASS库处理播放音乐,但是现在我对获取歌曲的长度有小问题.

好吧,我已经阅读了BASS文档,并找到了一种方法:
我要做的是

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

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

所以我的问题是:是否有其他方法可以在不创建Steam文件的情况下获得它(不是那么昂贵).我稍后会考虑阅读id3标签.创建该流是“无论如何都必须做的邪恶”,即使我试图与其他库一起获得它,它也会做完全相同的事情?

解决方法:

您可以使用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);

有一个code project that could help you as well

上一篇:Java检测音频文件(mp3)


下一篇:Android Media Player无法通过PVMFErrNotSupported支持MP3?