最近项目当中有用到视频播放器这个功能,分享一个我的开发心得。一般情况下,我们不会去写一个视频播放器,因为需要很多知识和播放场景考虑。分享一个我使用到的视频播放器的库,JZVideo (俗称饺子播放器)。
JZVideo集成
implementation 'cn.jzvd:jiaozivideoplayer:7.5.0'
XML使用
<cn.jzvd.JzvdStd
android:id="@+id/jz_video"
android:layout_width="match_parent"
android:layout_height="200dp" />
在代码中设置视频地址、缩略图、标题
MyJzvdStd jzvdStd = (MyJzvdStd) findViewById(R.id.jz_video);
jzvdStd.setUp("http://jzvd.nathen.cn/c6e3dc12a1154626b3476d9bf3bd7266/6b56c5f0dc31428083757a45764763b0-5287d2089db37e62345123a1be272f8b.mp4", "饺子闭眼睛");
jzvdStd.posterImageView.setImage("http://p.qpic.cn/videoyun/0/2449_43b6f696980311e59ed467f22794e792_1/640");
setUp 方法参数说明:
- 参数一:视频的播放路径;
- 参数二:视频的标题。
posterImageView.setImage 方法是设置视频未播放的时候的缩略图展示。
界面生命周期绑定
@Override
public void onBackPressed() {
if (Jzvd.backPress()) {
return;
}
super.onBackPressed();
}
@Override
protected void onPause() {
super.onPause();
Jzvd.releaseAllVideos();
}
绑定生命周期可以更好的处理交互问题。
混淆配置
上线App的时候,出于代码安全以及apk大小优化的情况下,可以在proguard-rules.pro 加入以下代码:
-keep public class cn.jzvd.JZMediaSystem {*; }
-keep public class cn.jzvd.demo.CustomMedia.CustomMedia {*; }
-keep public class cn.jzvd.demo.CustomMedia.JZMediaIjk {*; }
-keep public class cn.jzvd.demo.CustomMedia.JZMediaSystemAssertFolder {*; }
-keep class tv.danmaku.ijk.media.player.** {*; }
-dontwarn tv.danmaku.ijk.media.player.*
-keep interface tv.danmaku.ijk.media.player.** { *; }
这是在App当中对JZVideo 的简单使用,如果下次项目项目当中有比较复杂的交互或者处理,我会另外写一篇博客分享的。
|