0

我想从 url 播放媒体文件 (mp3)。而且我想得到那个mp3文件的长度。我成功播放文件,但我也想显示 SeekBar。为此,我需要知道媒体文件的长度(以秒为单位)。

我怎样才能做到这一点?

我找到了一种方法,但使用它我认为它不会在几秒钟内给我长度。

 URLConnection cn = new URL(mediaUrl).openConnection();
 cn.connect();
 int length =  cn.getContentLength();

我认为它返回字节。那么我可以将其转换为秒吗?或者任何人知道其他方式?

4

3 回答 3

1

您发布的代码是从 URL 中提取任何数据所需要的。

实际上,您可能正在从中提取 MP3 文件,urlgetContentLength()您正在调用的是对该URLConnection对象的操作 - 它返回的是您正在下载的文件的大小(字节、千字节、兆字节)。

如果您想检查 MP3 的播放时间,您将不得不将数据压缩到一个有效的媒体对象中,然后该对象应该有它自己的访问器,例如getDuration().

于 2012-04-12T11:59:49.903 回答
1

查看 getHeaderFields() 方法,然后检查是否有包含长度的响应标头。如果没有,您可以获取内容,从流中读取 mp3 元数据并计算 kbps。一旦你有了它,你可以使用以字节为单位的长度来获取时间长度。

于 2012-04-12T11:50:54.107 回答
0

媒体流开始后,您可以使用mediaplayer.getDuration获取媒体文件的总持续时间。然后可以在可运行文件中使用此值来定期更新您的搜索栏。

于 2012-04-12T11:58:35.193 回答