1.ijkplayer是什么
ijkplayer是b站开源的一个视频插件,基于ffmpeg, 支持 Android 和 iOS,可以代替android自带的videview,有不错的体验,支持的视频文件格式也挺多的。
2.编译ijkplayer
由于编译ijkplayer比较耗时间,我这边有现成编译好的so包,你这边直接拿去用就可以了,下面会给出下载的连接。
3.eclipse集成ijkplayer
3.1 导入相应的资源
由于集成ijkplayer需要导入相应的so文件,也就是第2步编译生成的,你那边直接把我项目下libs目录中的jar包和so文件拿过去复制进自己的项目即可。
注:由于ijkplayer需要v7包的支持,你需要把我提供的appcompat这个library引入到自己的项目中
3.2 初始化播放器
在自己的activity中需要加入以下代码,引入刚才编译好的so文件
IjkMediaPlayer.loadLibrariesOnce(null); IjkMediaPlayer.native_profileBegin("libijkplayer.so");
3.3 初始化自定义播放器
//这里使用的是Demo中提供的AndroidMediaController类控制播放相关操作 mMediaController = new AndroidMediaController(this, false); mMediaController.setSupportActionBar(actionBar); mVideoView = (IjkVideoView) findViewById(R.id.video_view); mVideoView.setMediaController(mMediaController);
3.3设置本地播放器位置
mVideoView.setVideoPath(mVideoPath);
mVideoView.start();
3.4 销毁时释放资源
@Override public void onBackPressed() { mBackPressed = true; super.onBackPressed(); } @Override protected void onStop() { super.onStop(); //点击返回或不允许后台播放时 释放资源 if (mBackPressed || !mVideoView.isBackgroundPlayEnabled()) { mVideoView.stopPlayback(); mVideoView.release(true); mVideoView.stopBackgroundPlay(); } else { mVideoView.enterBackground(); } IjkMediaPlayer.native_profileEnd(); }
3.5 进度条设置
seekbar.setOnSeekBarChangeListener(new OnSeekBarChangeListenerImp()); class OnSeekBarChangeListenerImp implements SeekBar.OnSeekBarChangeListener { // 触发操作,拖动 public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) { } // 表示进度条刚开始拖动,开始拖动时候触发的操作 public void onStartTrackingTouch(SeekBar seekBar) { } // 停止拖动时候 public void onStopTrackingTouch(SeekBar seekBar) { // TODO Auto-generated method stub if (player != null && player.isPlaying()) { // 设置当前播放的位置 videoView .seekTo((int) (1.0f * seekBar.getProgress() / 100 * videoView .getDuration())); } } }
4。 下载地址