android视频开发倍速播放,调整视频播放速度
最近公司做的项目中有一个这样的需求,当我的APP通过蓝牙连接跑步机的时候,需要和跑步机同步的播放频。而且跑步机上边的调节速度按钮,可以同步的使APP视频的播放速度同步的加快,这样的来达到模拟场景跑步速度的加快。最开始的解决方案,使用android原生的VideoView控件,非常轻松的就实现了跑步播放视频的功能,可是怎么控制速度呢,找来找去发现实现不了(那位大神可以做到,可以给我留言,学习学习).后来又找了几个其他的播放框架,发现大多数都是通过自定义android原生的来实现的播放,同样的不能实现调整播放速度。最后想到干脆终极的解决方案吧,FFmpeg吧,可惜好无奈啊,宝宝现在C语言还只是初步。哎!最后在网上看到两个基于FFmpeg开发的视频框架,可以解决这个问题。就是大名鼎鼎的Vitamio和VLC.最后我选择了Vitamio,因为这个的资料多一些。朋友们也可以去github看看VLC怎么做。这里提醒一下,使用Vitamio需要到官网去下载最新的5.2版本。因为github的4.0版本bug太多,而且不支持64位架构的处理器。还不支持android6.0.直接来看看我怎么做的吧
第一步:去官网下载最新的依赖包和demo。中间那个initActivity就是我们所需要的依赖。
第一步:导入我们的工程吧。import Module.
什么?报错了,别慌,让我们制定编译的SDK版本。
修改一下我们的版本,点击一下 Try Again.重新编译一下,就通过了。
第二步:依赖到我们的项目中:看到最后一步就算成功了。
第三步:开始编写我们的代码吧
package demo.cdy.com.myvitamiodemo;import android.support.v7.app.AppCompatActivity;import android.os.Bundle;import android.view.View;import io.vov.vitamio.MediaPlayer;import io.vov.vitamio.Vitamio;import io.vov.vitamio.widget.MediaController;import io.vov.vitamio.widget.VideoView;public class MainActivity extends AppCompatActivity implements MediaPlayer.OnErrorListener { private VideoView videoView; private MediaController mMediaController; private MediaPlayer mPlayer; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); //第一步注册 Vitamio.isInitialized(getApplicationContext()); //初始化我们的控件,注意使依赖包的,不是android原生的。 videoView = (VideoView) findViewById(R.id.videoView); //实例化控制器 mMediaController = new MediaController(this); videoView.setMediaController(mMediaController);//绑定控制器 videoView.setVideoQuality(MediaPlayer.VIDEOQUALITY_HIGH);//设置播放画质 高画质 videoView.setOnPreparedListener(new MediaPlayer.OnPreparedListener() { @Override public void onPrepared(MediaPlayer mMediaPlayer) { // optional need Vitamio5.2 //视频预处理完成后回掉,设置播放速度 mPlayer = mMediaPlayer; //mMediaPlayer的setPlaybackSpeed方法控制视频的播放速度。数值从e.g. 0.8 or 2.0, default to 1.0, range in [0.5-2] mMediaPlayer.setPlaybackSpeed(1.0f); } }); videoView.setVideoPath("http://www.midea.com/video/masvod/public/2015/02/28/20150228_14bcec18032_r1_800k.mp4"); //设置错误回掉 videoView.setOnErrorListener(this); } @Override public boolean onError(MediaPlayer mp, int what, int extra) { return false; }}
看效果图:
最后说名一下:播放速度的控制使是通过
mMediaPlayer.setPlaybackSpeed(1.0f);
来控制的。我们在setOnPreparedListener回掉方法中,把这个MediaPlayer对象给拿出来。以后调节速度就可以自己写按钮通过这个mPlayer对象来随时随地的控制了。
是不是很方便呢,大家如果有更好的更简洁的办法请留言哦,因为这个依赖包实在太大了,足足压缩之后apk将会增加10M。期待更简洁的办法。
博客已经移步:chaodongyang.com
如果喜欢我的文章需要更多干货,请扫描下方二维码,关注我的微信公众号
更多相关文章
- RadioButton使用的过程中Text文本和图片显示的问题
- Android音视频处理技术 视频录制
- Android 三大图片缓存原理、特性对比
- Android调用系统相机、自定义相机、处理大图片
- 【Android Demo】图片之滑动效果(Gallery)
- Android 加载.gif格式图片
- android 拍照+从手机相册选择返回图片到imagview
- Android 获取系统相册中的所有图片
- Android之背景图片设置为重复而不是默认的拉伸