【问题标题】:android mediaplayer doesn't update duration of video when streaming from remote server从远程服务器流式传输时,android mediaplayer 不会更新视频的持续时间
【发布时间】:2014-05-29 11:54:56
【问题描述】:

流式文件正在服务器上的文件中录制,并且持续时间正在增加,但媒体播放器仅获得一次持续时间,并且在达到此持续时间时停止播放。 mediaplayer 仅在设置源时才获取流的持续时间:

mp.setDataSource("http://url/1.ts");

问题是如何在不停止视频播放的情况下更新媒体播放器时长?

【问题讨论】:

  • 您是存储在某处并进行流式传输还是直接从相机流式传输??
  • 不是来自相机,是在服务器上的文件中记录的

标签: android video-streaming android-mediaplayer http-live-streaming android-videoview


【解决方案1】:

首先:像这样定义Runnable方法

private Runnable UpdateSongTime = new Runnable() {
    @SuppressLint("NewApi")
    public void run() {
        startTime = mediaPlayer.getCurrentPosition();
        startTimeField.setText(String.format(
                "%02d:%02d",
                TimeUnit.MILLISECONDS.toMinutes((long) startTime),
                TimeUnit.MILLISECONDS.toSeconds((long) startTime)
                        - TimeUnit.MINUTES.toSeconds(TimeUnit.MILLISECONDS
                                .toMinutes((long) startTime))));
        float i = (float) mediaPlayer.getCurrentPosition();
        float ii = (float) mediaPlayer.getDuration();
        float iii = (i / ii) * 100;

        seekbar.setProgress((int) iii);
        myHandler.postDelayed(this, 200);

    }
};

然后在线程(AsyncTask 类)中像这样调用 Runnable 方法

mediaPlayer.setOnPreparedListener(new OnPreparedListener() {
    @Override
    public void onPrepared(MediaPlayer mp) {
        mediaPlayer.start();
        myHandler.postDelayed(UpdateSongTime, 100);
}); }

如果需要,这是处理程序声明:

    private Handler myHandler = new Handler();

不要忘记通过发布此代码来删除处理程序:

    mediaPlayer.setOnCompletionListener(new OnCompletionListener() {

                @Override
                public void onCompletion(MediaPlayer mp) {
                    seekbar.setProgress(0);
                    mediaPlayer.seekTo(0);                       
                    myHandler.removeCallbacks(UpdateSongTime);
                    btn.setImageResource(R.drawable.play);

                }
            });

希望对你有帮助:)

【讨论】:

  • 谢谢,但我需要更新的不是搜索栏,而是应该从服务器上的文件中检索的视频的实际持续时间
猜你喜欢
  • 2012-08-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-06-03
  • 2014-04-11
相关资源
最近更新 更多