java项目中需要引入ffmpeg,主要用于处理视频转码和视频加水印。
ffmpeg是一个主流的音视频处理库,C语言编写。官网地址:http://ffmpeg.org/ 也有中文版地址。
网上关于ffmpeg java引入的帖子大多是先有ffmpeg可执行工具,然后再java模拟os命令执行。
而我们项目会在客户方的服务器上部署,当时看到这类帖子第一个想法是,客户方服务器是集群的,总不能让客户方每台服务器都装一个ffmpeg工具,那太麻烦客户了。然后就走进了另一个思维定式的坑。。。
原谅我是android刚转后端开发不久,当时就想着不如用android交叉编译出想要的jni中间层,然后放到java工程下用就好了,然后就各种尝试。有的帖子还是写得不错的,在此贴出来供需要android交叉编译的人参考。
以下将描述mac环境下android的ffmpeg动态库开发:
假设已具备android ndk基础,能看懂并改写简单c代码的基础。
step 1:mac环境编译ffmpeg的so库,推荐选择mac或linux操作系统做这一步,因为windows下做要解决的问题比较多。
ffmpeg这里有个牛人,英年早逝的雷霄骅csdn博客,但因为停更好几年了用的库都比较老,拿来做实战教程不太合适,但作为ffmpeg学习栈还是相当好的。从这位牛人的生平也能看出,年(cheng)轻(xu)人(yuan)还是不要太拼,还是要爱惜自己的生命。。。
ffmpeg编译趟过的坑大部分都在这篇里:http://blog.sina.com.cn/s/blog_61bc01360102w815.html。坑还是相当多的,谁编谁知道。
参考好多编译脚本,这个作者写的最好最全面:https://github.com/coopsrc/FFPla