2017-10-25 17 views
0

SimpleExoPlayerを使用して、デフォルトのコントロールで未処理のフォルダからビデオを再生しています。しかし、すべて正常に動作しますが、残り時間をコントロールバーの右端に合計時間の代わりに表示したかったのです。私はgetDurationプレーヤーの方法と残りの時間を合計時間をplayer.getDuration() - player.getCurrentPosition()で得ることができます。しかし、私は秒ごとに残りの時間を更新し、ビューに表示する方法はありません。Exoplayerでビデオの残り時間を表示

どうすればこの問題を解決できますか?

答えて

0

これは、1秒ごとに更新の進捗を実装する方法の簡単な例です。
プレーヤーが再生していない間(ExoPlayer.addListener(Player.EventListener);からイベントを受け取ることができます)、Activityが一時停止/破棄されている間は、まだHandler.removeCallbacks(updateProgressAction)を使用してください。

public class MainActivity extends AppCompatActivity { 
     private final Runnable updateProgressAction = new Runnable() { 
      @Override 
      public void run() { 
       updateProgress(); 
      } 
     }; 
     private TextView mTextView; 
     private Handler mHandler; 
     private SimpleExoPlayer mSimpleExoPlayer; 

     @Override 
     protected void onCreate(Bundle savedInstanceState) { 
      super.onCreate(savedInstanceState); 
      setContentView(R.layout.activity_main); 
      mTextView = findViewById(R.id.my_text); 
      SimpleExoPlayerView simpleExoPlayerView = findViewById(R.id.player_view); 
      mSimpleExoPlayer = ExoPlayerFactory.newSimpleInstance(this, new DefaultTrackSelector(new DefaultBandwidthMeter())); 
      simpleExoPlayerView.setPlayer(mSimpleExoPlayer); 
      Uri uri = Uri.parse("https://devstreaming-cdn.apple.com/videos/streaming/examples/bipbop_4x3/bipbop_4x3_variant.m3u8"); 
      String userAgent = Util.getUserAgent(this, "appName"); 
      HlsMediaSource mediaSource = new HlsMediaSource(uri, new DefaultDataSourceFactory(this, userAgent), null, null); 
      mSimpleExoPlayer.prepare(mediaSource); 
      mSimpleExoPlayer.setPlayWhenReady(true); 
      mHandler = new Handler(); 
      mHandler.post(updateProgressAction); 
     } 

     private void updateProgress() { 
      mTextView.setText("calculate time and format"); 
      long delayMs = TimeUnit.SECONDS.toMillis(1); 
      mHandler.postDelayed(updateProgressAction, delayMs); 
     } 
    } 
関連する問題