私はMediaPlayerをHoneycombで使用しており、onPrepared()関数でHLS(httpライブストリーミング)ビデオの再生時間を取得できません。Android MediaPlayer:prepare()の後にgetDuration()が返される
getDuration()
がprepare()
後に呼び出された場合は、0を返します。
public void onPrepared(MediaPlayer mp) {
// getduration returns 0
mediaPlayer.start();
Log.d(TAG, "duration: " + mediaPlayer.getDuration());
}
しかし、動画の再生が始まります。
getDuration()
た場合は、それが
public void onVideoSizeChanged(MediaPlayer mp, int width, int height) {
// returns the correct value
Log.d(TAG, "duration: " + mediaPlayer.getDuration());
}
はなぜonVideoSizeChanged()
ではなくonPrepared()
でgetDuration()
作業を行い、正しい値を返しますonVideoSizeChanged()
に呼ばれているのですか?
:最初はgetDuration()はまったく動作しませんでしたが、onVideoSizeChanged()で正しい値を返すことがわかりました。これを反映する修正された質問。
ありがとう! – jules
mp.getDuration()がスレッドで呼び出された場合、このスレッドはそれぞれ100msを呼び出していましたか?私は、この関数はゼロではないが、正しいものではないという点について考える。どうして ? – phongvan