allprojects {
repositories {
...
maven { url 'https://jitpack.io' }
}
}
项目最外部有一个dependencies.gradle,所有的项目依赖都在这里面,然后参考项目根目录的build.gradle,在最顶部有apply from: 'dependencies.gradle',这样gsyVideoPlayer就可以找到对应的依赖了。gradle方便可参考察Android蹲坑的疑难杂症集锦(兼Gradle) 二
其次,因为so有五个平台,远程依赖库比较大,依赖的时候如果有条件,可以开启vpn,用L2TP协议,依赖下载会快一些。
确保你的拆包Application配置正常,若是开启混淆,确保混淆已经添加 。
而且有时候你需要的是clear一下。
-keep class tv.danmaku.ijk.** { *; }
-dontwarn tv.danmaku.ijk.**
-keep class com.shuyu.gsyvideoplayer.** { *; }
-dontwarn com.shuyu.gsyvideoplayer.**
可以配置ndk abiFilters,确保使用到的so文件夹下都有对用的so文件,用Analyze Apk查看so是否应打包到各个文件夹。
参考#issue23
参考#issue24
是否已经添加下方的代码到gradle
android {
···
defaultConfig {
···
ndk {
//APP的build.gradle设置支持的SO库架构
abiFilters 'armeabi', 'armeabi-v7a', 'x86'
}
}
}
sourceSets {
main {
jniLibs.srcDirs = ['libs']
}
}
是否监听了列表滑动了,在监听里更新了列表之类的。
如果拍摄的视频播放不了,可以尝试用使用系统录制的项目:VideoRecord 或者使用JAVACV录制的项目:FFmpegRecorder,测试视频是否可以播放。
黑屏相关issues: bilibili/ijkplayer#2541 bilibili/ijkplayer#1875
缓存不支持m3u8\HLS,播放m3u8\HLS格式,需要cacheWithPlay为false
setUp(String url, boolean cacheWithPlay····)
<activity
android:name=".PlayActivity"
android:configChanges="orientation|keyboardHidden|screenSize"
android:screenOrientation="portrait" />
若网络环境不好,可以尝试关闭缓存来播放,因为proxy方式的边播边缓存对于网络的要求有点高。
在setUp的时候,设置带有 Map<String, String> mapHeadData 参数的方法,在Ijk内部其实就是转为setOption方法。 可参考ijkPlayer的issues-1150
1、这种情况一般都是so里没有打包支持的格式,如果需要支持你想要的格式,可以自己重新编译so,在module配置文件加上需要额外支持的格式。github首页有编译教程。
模拟器的不接!
1、是否关闭了硬解码!
2、Activity的config是否配置了!
3、视频的分辨率和帧数是多少,机器是否支持的了
第3步可以通过尝试降低倍数:
VideoOptionModel videoOptionModel =
new VideoOptionModel(IjkMediaPlayer.OPT_CATEGORY_PLAYER, "framedrop", 50);
List<VideoOptionModel> list = new ArrayList<>();
list.add(videoOptionModel);
GSYVideoManager.instance().setOptionModelList(list);
对于如http://xxxxxxx.中文.mp4的url,如果出现 http 400 error的情况,请自行转换中文url到url编码; 如 http://tool.oschina.net/encode?type=4 这里转化。