2016-01-14 73 views
-1

我目前正在进行一个简单的独奏项目,以查找并连续播放我的机器上的歌曲,一个播放下一个。音乐是我下载的各种格式。C#查找视频和音频文件长度

MP4,MP3,MPEG,AVI和WAV

一切从递归搜索音乐的指定目录播放文件和创建播放列表的作品。但我似乎无法弄清楚如何找到这些文件的长度,以确定在继续播放另一首歌曲之前该节目应该等待多长时间。

我在Windows 8惠普笔记本电脑上使用Unity3d构建此程序。任何输入赞赏。

+4

看这个问题。 http://stackoverflow.com/questions/18602652/getting-mp3-file-length – ciro

+0

所以它看起来像Microsoft.WindowsAPICodePack.Shell是用于此代码的库。我已经去了,下载了它的DLL,但我可以在哪里安装它用于我的项目? –

+0

建议重新打开它,因为'重复'问题是关于一个非常特定的库BASS,这是关于Unity3D的,它有一套完全不同的库。 – Rushyo

回答

0

如果您使用音频剪辑,您可以使用此: http://docs.unity3d.com/ScriptReference/AudioClip-length.html http://docs.unity3d.com/ScriptReference/AudioSource-isPlaying.html

由于@Wai哈李的建议,我应该与链接添加一些说明,所以在这儿呢。 您可以使用AudioClip.Length和AudioSource.IsPlaying(上面链接的文档)来获取必要的信息。

+0

谢谢,但我玩的文件是Unity项目的外部。由于它们有很多不同的格式,例如mp3,mp4等,我正在使用Media Player播放歌曲,而不是将它们串流到Unity中。 –

0

正如stud说的,对于Unity中的音频文件,请使用AudioClip.Length。然后对于视频数据,您应该使用MovieTexture.Duration类。

使用C#中的媒体文件有时(甚至在2015年)仍然是一个痛点,所以我的建议是尽可能利用类似TagLib这样的库。如果像TagLib这样的库过度使用,那么查看它们的源代码并获取所需的位。

-2

我想你可以使用System.io命名空间的fileInfo类来获得它的长度。例如:

FileInfo fileInfo = new FileInfo(dlg.FileName); 

这会给你的fileInfo.Length字节长度。然后,您可以将其转换为显示为千字节或兆字节。例如:

fileInfo.Length/1024 

...会给你以千字节为单位的长度。

+0

这与音频长度不一样。此外,如果您打算在Stack Overflow中给出更多答案,那很好,但请注意代码格式由缩进和反引号组成。您可能想阅读[this](http://stackoverflow.com/help/how-to-answer)。 –