我目前正在尝试用 C# 编写一个音频播放器。我正在使用 BASS 库来处理播放音乐,但现在我在获取歌曲长度方面遇到了小问题。
好吧,我读过 BASS 文档并找到了一种方法:
我需要做的“所有”就是
int stream = Bass.BASS_StreamCreateFile(filepath,....);
int length = Bass.BASS_ChannelBytes2Seconds(stream, Bass.BASS_ChannelGetLength(stream));
在大多数情况下,我都能得到有效的歌曲长度。问题就从这里开始了。据我所知,流创建操作非常昂贵(如果我弄错了,请纠正我)并且创建流只是为了获得歌曲的长度看起来有点愚蠢。
所以我的问题是:有没有其他方法可以在不创建蒸汽文件的情况下获得它(不是那么昂贵)。稍后我会考虑读取 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);
有一个代码项目也可以帮助你
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)