移植FFMPEG到iOS,然后把相关的ffmpeg.c等弄到项目中,修改修改里面的部分代码,使之适合ios项目。运行,其实大部分是成功的。
但,如果你水印视频,水印iphone或者ipad的视频,很可能会崩溃。为什么?
经过测试,在iphone上或者ipad上调用ffmpeg.c的命令方式,会消耗1g左右的内存。如果你的手机本身消耗了一些,那么很可能有一个memory warning,然后崩溃!
因为我是新手,调试了很久,二分法方式不断逼近,最后发现decode video解码的时候,需要很多内存,然后ffmpeg很扯淡的就是,其中的过程是不释放的,所以越来越大。最好的肯定边用边释放的方式,不过ffmpeg就是最后才释放,对于新手,很是没办法改,不知道改哪里。
怎么办?
我自己网上找代码,写水印功能,思路如下:
1、把mp4解码后,加入水印,保存为yuv图像文件。
2、然后把yuv转为h264视频流。
3、把mp4里的音频整出来,保存为aac。
4、把h264视频流和aac合并为mp4。