Android MediaPlayer 音频倍速播放,调整播放速度
本文链接: android mediaplayer 倍速播放,调整播放速度
现在市面上的很多音视频app都有倍速播放的功能,例如把播放速度调整为0.5、1.5、2倍等等。
从android api 23 (android m)开始,mediaplayer支持调整播放速度。
使用的方法是setplaybackparams,传入一个代表播放属性的类playbackparams。
本文介绍如何使用mediaplayer调整播放速度。
mediaplayer.setplaybackparams 说明
播放速度设置在playbackparams对象中,再将此对象传入setplaybackparams。
setplaybackparams是一个native方法。
如果mediaplayer没有准备(在prepared之前),调用此方法并不会改变mediaplayer的状态。
在mediaplayer成功prepare之后,如果设置的速度为0,相当于调用了pause方法;如果设置速度不为0,相当于调用了start方法。
异常情况
如果mediaplayer没有初始化或者已经被释放,即处于idle或end状态,调用setplaybackparams方法会抛出illegalstateexception异常。
如果传入的playbackparams不被支持,则抛出illegalargumentexception异常。
如果设置速度小于0,则抛出java.lang.illegalargumentexception异常。
mediaplayer.setplaybackparams 方法示例
设置播放速度。先判断当前系统版本。
private boolean setplayspeed(float speed) { if (build.version.sdk_int >= build.version_codes.m) { playbackparams params = mediaplayer.getplaybackparams(); params.setspeed(speed); mediaplayer.setplaybackparams(params); return true; } return false; }
getplaybackparams可以获取到mediaplayer当前的playbackparams对象。
也可以给这个方法加上try catch,结合返回的boolean值判断设置速度是否成功。
private boolean setplayspeed(float speed) { if (build.version.sdk_int >= build.version_codes.m) { try { playbackparams params = mediaplayer.getplaybackparams(); params.setspeed(speed); mediaplayer.setplaybackparams(params); return true; } catch (exception e) { log.e(tag, "setplayspeed: ", e); return false; } } return false; }
参考代码 https://github.com/rustfisher/android-mediaplayer
playbackparams 包含的速度值
调整mediaplayer播放速度时,我们使用了playbackparams对象。audiotrack也会用到这个类。
playbackparams包含着播放时候的一些属性。例如speed就是播放速度。
playbackparams.setspeed(float speed)
传入速度倍率值。会标记当前设置过了速度。
public playbackparams setspeed(float speed) { mspeed = speed; mset |= set_speed; return this; }
playbackparams.getspeed()
获取已设置的速度值。如果之前没设置过速度,则抛出illegalstateexception异常。
public float getspeed() { if ((mset & set_speed) == 0) { throw new illegalstateexception("speed not set"); } return mspeed; }
上一篇: mimalloc剖析
下一篇: mysql 多表查询
推荐阅读
-
Android MediaPlayer 音频倍速播放,调整播放速度
-
Android提高之MediaPlayer播放网络音频的实现方法
-
Android MediaPlayer音频播放器详解
-
解决Android使用MediaPlayer只播放视频不播放音频的方法
-
会声会影怎么调整音频播放速度? 会声会影给声音设置速度的方法
-
Android 华为手机音频设置播放倍速mMediaPlayer.getPlaybackParams().setSpeed(speed)无效果
-
Android音频播放—MediaPlayer
-
Android播放在线音频问题,报错MediaPlayer error
-
Android MediaPlayer 音频倍速播放,调整播放速度
-
Android 之 使用MediaPlayer播放音频