我正在使用VideoView播放一个保存在res/raw中的视频文件。我找不到一种方法来控制视频的播放速度。基本上,我想在移动滚动条的同时减少和增加回放。有没有什么办法来实现它呢?
发布于 2011-04-13 12:50:39
不能,您不能简单使用VideoView来更改播放速率。VideoView和MediaPlayer仅提供有限的媒体功能。
你必须使用一些第三方库,例如PVPlayer,并自己实现它。
这也是为什么Android上优秀的媒体播放器如此有价值的原因:)
发布于 2018-08-15 20:58:49
您可以使用此功能,但它适用于api 23及更高版本
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);
}
}
});发布于 2021-09-15 00:12:18
我想说的是,Mk Kamal的解决方案有一个意想不到的副作用:在OnPreparedListener中调用setPlaybackParams会迫使VideoView在应用程序从后台返回时重复最新播放的视频。我不知道是错误还是功能,但我找到了避免这种行为的方法:
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对象。
https://stackoverflow.com/questions/4614365
复制相似问题