動画をコマ送りにする際に、現再生時間よりコマ送りする秒数が動画の総再生時間を超える場合、
何もしないという処理を行いたいです。
動画の総再生時間を取得したいのですが、取得した時間が-9223372036854775807となってしまいます。
原因と対処方法を教えてください。
よろしくお願いいたします。
java
1 con = getActivity(); 2 player = ExoPlayerFactory.newSimpleInstance(con); 3 player.addListener(this); 4 lagkeisan(); 5 long allpos = player.getDuration(); 6 long pos = player.getCurrentPosition(); 7 if(allpos>(pos+100)) { 8 player.seekTo(pos + 100); 9 }else{ 10 } 11
onPlaybackStateChanged で state が Player.STATE_READY になったら getDuration できるかも。
https://stackoverflow.com/questions/35298125/exoplayer-getduration
https://exoplayer.dev/doc/reference/com/google/android/exoplayer2/Player.EventListener.html#onPlaybackStateChanged(int)
ありがとうございます。
送っていただいたサイトを参考にしたところ正常に動きました。
ただいまいちなぜ動いたのかわからず、戸惑っています。
自己解決方法を記載いたしますので、ご教示いただければ幸いです。
「ExoPlayer getDuration」で検索してそれっぽいのを見つけただけなので、詳しいことは分かりませんが、動画ファイルが巨大だったりストリーミングだったりすると duration を取得するのに時間がかかる場合があるので、ファイルを開いた時点ではまだ分からない (裏で非同期で読み込んでいる) のだと想像します。
いつもありがとうございます。
非同期のため初期に数値を入れてしまうと数値が取得されておらず、数字がおかしくなっていたということですね。
ボタンを押されるたびに取得することで解決することができました。
1と表示される理由も同様の原因でした。
本当にありがとうございます。
回答1件
あなたの回答
tips
プレビュー