这一次是采用的github上的一个demo进行修改,历经两天时间终于修复完毕,下面放出部分思路以及修复过程
源地址:https://github.com/Zhaoss/WeiXinRecordedDemo 1444颗star
我下载下来,发现BUG不止一个两个,ANR无响应,我所需要的重要功能视频剪辑也是个水货,ffmpeg的编译命令都是错的,,我一度怀疑这1444颗star是不是假的,,,但是涂鸦 添加图片以及倍速播放都是正常的,也许大部分人只需要前者那些功能,但是我这里只需要剪辑就行。
踩过的坑在这里记录一下,以便日后使用。(笔者只用视频剪辑那块,其他地方没去用过,所以单独把视频剪辑抽离出来了)
首先把坑点说出来。
1 ffmpeg是错的,需要自己重新编译命令 (网上搜一下剪辑ffmpeg命令就OK了),可以自己去调试打印他的命令是什么样的
2 剪辑时间也是个坑点,去看作者的startTime 和 endTime,虽然时间是算对了,但是,在用户体验上,用户体验,用户体验!!!
你虽然选择了startTime和endTime,但是吧,,它只会播放一次,,对你没看错,,循环播放 又从头开始播放了。。所以
这里要写一个play()方法,endTime也是,不对,endTime无效。。。所以这里要花点功夫了。
2.1解决方法
1(关于起始点的修复)实现视频播放器的回调方法,一旦播放完毕,调用播放方法 同时seekTo(startTime),立即跳转到选择的时间
2(关于终点的修复)这里我也没找到播放器的回调方法,于是自己开辟了一个线程,只要启动了播放,就实时返回当前的播放位置,同时
判断当前播放位置是否大于endTime,大于就调用play seekTo方法即可。
3(重头戏来了) 呵呵呵,//如果设置targetSdkVersion版本为23或23以上时, System.loadLibrary("utility")初始化就会UnsatisfiedLinkError
我在gradle里面看见这个,,,如果你合成到你的项目里面去,你会发现只要是6.0以上的操作系统都会发一个警告,是否全屏APP???
没办法各种查阅资料,翻墙,百度,都查过了,是so库底层编译的问题,网上基本方法都是上面这样 设置低于 23,但是我真的不能忍有个警告
(重新整理思路)
所以,我想了另外一种思路。调用系统相机录制,返回视频路径,然后,调用另外一个剪辑方法,用这个demo的UI不就行了,
所以我在github上找了个剪辑的框架,超级简单,还可以用ffmpeg原始命令,爽到不行
https://github.com/yangjie10930/EpMedia 虽然star不多,但是我觉得比上面那个要厉害一些,速度无可比拟(600M的视频文件,剪辑不超过20S)
以上就是这次的解决的办法了,浪费了挺多时间的。不过踩坑是日常的~~~~~~
网友评论