首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在android中控制视频播放速度

在android中控制视频播放速度
EN

Stack Overflow用户
提问于 2011-01-06 19:24:12
回答 4查看 8.5K关注 0票数 8

我正在使用VideoView播放一个保存在res/raw中的视频文件。我找不到一种方法来控制视频的播放速度。基本上,我想在移动滚动条的同时减少和增加回放。有没有什么办法来实现它呢?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2011-04-13 12:50:39

不能,您不能简单使用VideoView来更改播放速率。VideoViewMediaPlayer仅提供有限的媒体功能。

你必须使用一些第三方库,例如PVPlayer,并自己实现它。

这也是为什么Android上优秀的媒体播放器如此有价值的原因:)

票数 2
EN

Stack Overflow用户

发布于 2018-08-15 20:58:49

您可以使用此功能,但它适用于api 23及更高版本

代码语言:javascript
复制
 mVideo.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {
        @Override
        public void onPrepared(MediaPlayer mp) {

            //works only from api 23
            PlaybackParams myPlayBackParams = null;
            if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.M) {
                myPlayBackParams = new PlaybackParams();
                myPlayBackParams.setSpeed(0.8f); //you can set speed here
                mp.setPlaybackParams(myPlayBackParams);
            }

        }
    });
票数 12
EN

Stack Overflow用户

发布于 2021-09-15 00:12:18

我想说的是,Mk Kamal的解决方案有一个意想不到的副作用:在OnPreparedListener中调用setPlaybackParams会迫使VideoView在应用程序从后台返回时重复最新播放的视频。我不知道是错误还是功能,但我找到了避免这种行为的方法:

代码语言:javascript
复制
private float speed = 0.8f;
private final MediaPlayer.OnInfoListener listener = (mp, what, extra) -> {

    if (what == MediaPlayer.MEDIA_INFO_VIDEO_RENDERING_START) {
        mp.setPlaybackParams(mp.getPlaybackParams().setSpeed(speed));
        return true;
    }
    return false;
};


videoView.setOnPreparedListener(
                mp -> {
                    mp.setOnInfoListener(listener);
                }
        );

只有当播放器已经启动时,才会发送MEDIA_INFO_VIDEO_RENDERING_START

我想强调的是,getPlaybackParams被注释为@NonNull,因此没有必要创建新的PlaybackParams对象。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4614365

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档