2012-04-12 119 views
0

我想從url播放媒體文件(mp3)。我也想得到這個mp3文件的長度。 我成功地播放文件,但我也想顯示SeekBar。爲此,我需要在幾秒鐘內知道媒體文件的長度。流媒體長度

我該如何做到這一點?

我找到了一種方式,但使用它我不認爲它給了我在幾秒鐘內的長度。

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

我認爲它返回字節。那麼我可以把它轉換成幾秒鐘? 還是有人知道其他方式?

+0

嘗試與[這裏]相同的方式(http://stackoverflow.com/questions/7802645/in-android-how-to-get-the-progress-time-of-the-video-played-under-videoview/7803166#7803166)視頻已完成。 – 2012-04-12 12:16:33

+0

@LalitPoptani感謝您的回覆,但我不認爲該視頻正在從網址播放。所以當我嘗試getDuration()方法時,它給了我緩衝區的持續時間,但是當緩衝區滿時,它的值發生了變化。像第一個400,567,1234,最後是4000.所以我的Seekbar在波動......我希望你能理解。 – 2012-04-12 12:38:50

回答

1

檢出getHeaderFields()方法,然後檢查是否有包含長度的響應頭。如果沒有,您可以獲取內容,從流中讀取mp3元數據並計算出kbps。一旦你有了,你可以使用長度以字節爲單位來獲得長度。

0

一旦您的媒體流開始,您可以使用mediaplayer.getDuration來獲取媒體文件的總持續時間。然後可以在可運行內使用此值來定期更新您的搜索欄。

+0

mediaplayer.getDuration返回只有多少緩衝不是總持續時間.... :( – 2012-04-13 04:01:36

1

您發佈的代碼是從URL中提取任何數據所需的代碼。

你實際上可以從這個url拉的MP3文件,但getContentLength()你正在呼籲URLConnection對象行事 - 它返回什麼是文件的大小您正在下載(字節,千字節,兆字節) 。

如果你想檢查MP3的播放時間,你將不得不將數據存儲到一個有效的媒體對象,然後應該有它自己的訪問器,如getDuration()