0
我在Honeycomb上使用MediaPlayer,並且無法獲取函數onPrepared()中的任何HLS(http實況流)視頻的持續時間。Android MediaPlayer:getDuration()在prepare()後返回0
如果getDuration()
被prepare()
後調用,則返回0:
public void onPrepared(MediaPlayer mp) {
// getduration returns 0
mediaPlayer.start();
Log.d(TAG, "duration: " + mediaPlayer.getDuration());
}
然而,視頻開始播放。
如果getDuration()
被稱爲onVideoSizeChanged()
它返回正確的值,
public void onVideoSizeChanged(MediaPlayer mp, int width, int height) {
// returns the correct value
Log.d(TAG, "duration: " + mediaPlayer.getDuration());
}
爲什麼在onVideoSizeChanged()
但不是在onPrepared()
getDuration()
工作?
編輯:起初我以爲getDuration()完全不起作用,但發現它在onVideoSizeChanged()中返回正確的值。修改問題以反映這一點。
感謝您的幫助的解釋! – jules
如果在一個線程中調用mp.getDuration()會發生什麼,該線程每100ms調用一次?我認爲這個函數返回的時間不是零,而是不正確。爲什麼? – phongvan