思路1

使用libffmpeg.so动态链接库,android的java层使用jni调用libffmepg.so中的方法实现获得视频信息、转换、获得进度

评价

正规路子,谷歌推荐开发方式,兼容性好

思路2

使用编译好的ffmpeg可执行文件(armel,可运行于所有的arm平台),利用java层的getRunTime().exec()执行app->data目录下的bin文件ffmpeg,通过重定向输出流来获得执行结果,通过对执行结果的字符串解析判断执行进度

评价

野路子,兼容性不好,在华为手机上无法运行报permission denied

思路3

使用andriod jni运行linux下的c程序,在c程序中先后调用fork()和exec()执行ffmpeg文件,就类似于linux终端的写法

评价

也是相对的野路子,兼容性不好,在华为手机上无法运行,exec报permission denied

总结

测试于小米4c(Android 7)和华为荣耀v20(Android10),三种思路在小米手机上都可以,但是华为手机上只有第一种思路可以,初步判断可能是由于不同手机selinux策略造成的,因为两个手机getenforce都是Enforcing,而且ffmpeg权限都是777了,就是不能运行

标签: none

赞赏排名 赞赏支持

添加新评论