【问题标题】:Android MediaPlayer seekTo does not workAndroid MediaPlayer seekTo 不起作用
【发布时间】:2014-05-07 10:31:48
【问题描述】:

MediaPlayer 的 seekTo() 方法有问题。好像根本没用!我关注了有关此问题的其他线程并尝试了不同的解决方法,但仍然 seekTo() 什么都不做!这是我的代码:

private MediaPlayer mMediaPlayer;

@Override
protected void onCreate(Bundle savedInstanceState) {
 ...
    final VideoView videoView = (VideoView)findViewById(R.id.videoView);
    MediaController mediaController = new MediaController(this);
    mediaController.setAnchorView(videoView);
    final Uri video = Uri.parse("android.resource://"+getPackageName()+"/"+R.drawable.video_myopia);
    videoView.setMediaController(mediaController);
    videoView.setVideoURI(video);
    videoView.setOnPreparedListener(new OnPreparedListener() {
        @Override
        public void onPrepared(MediaPlayer mp) {

            mMediaPlayer = mp;

            System.out.println("CURRENT POSITION 0: " + mp.getCurrentPosition());
            mp.seekTo(3000);
            System.out.println("CURRENT POSITION 1: " + mp.getCurrentPosition());
            mp.start();
            System.out.println("CURRENT POSITION 2: " + mp.getCurrentPosition());
        }
    });

System.out.println() 显示以下输出:

  • 位置 0: 0
  • 位置 1:3000
  • 位置 2:3000

(注意:我也尝试在 seekTo() 之前 start(),然后在 seekTo() 方法之后再次 start())

所以在 mp.start() 行之后 mp.getCurrentPosition() 说它在 3000 但问题是它不是!视频从头开始。在我尝试搜索的每种情况下,在 seekTo(ms) 和 start() 之后,无论如何视频都会从头开始。

我必须提到,我还使用 mp.setOnSeekCompleteListener() 来了解搜索何时完成。在这个回调中,我尝试再次开始()视频,但它总是从头开始。

有人可以帮帮我吗?我将不胜感激任何建议:)。谢谢!

【问题讨论】:

  • 我也遇到了同样的问题,还没找到解决办法,你呢?
  • 我记得我解决了这个问题。我会发布一个答案。
  • 谢谢Ispas,我会看看你的答案。

标签: android video media-player media android-videoview


【解决方案1】:

我发现我的视频不可搜索,这就是为什么我每次使用 seekTo 时都会让我的视频从头开始。为了解决问题,我将它们转换为 H.264

【讨论】:

  • 您是在 Android 中执行此操作的吗?如果是,怎么做?
  • 我没有为此使用 Android。我记得我使用 ffmpeg 转换视频并查找视频是否可搜索。或者,我也认为我在互联网上搜索过Androis支持什么类型的编解码器
  • @IspasClaudiu,你能告诉我你是怎么发现你的视频不可搜索的吗?
  • @AhmedAshrafG 我不记得我使用的软件,但我想视频工具或 ffmpeg 可以告诉你这类信息
  • 将视频转换为 h.264 不会使其可搜索。我有一个不可搜索的 mp4 - 至少不使用 Android 上的默认视频播放器应用程序。大量测试清楚地表明,视频的编码方式将决定 Android 是否可以使其可搜索。视频可以使用 VLC 等视频播放器进行搜索,但不能使用 Android 的默认播放器进行搜索。使用 MediaCodec 对视频进行编码以创建可搜索的 mp4 比看起来要复杂得多。奇怪的是,Android 上的默认相机应用可以创建可搜索的 mp4。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多