在前面的Android FFmpeg系列03--视频解码与渲染一文中,我们了解了FFmpeg的解码API和整个解码流程,本文通过一个小案例来了解下FFmpeg中的编码API和整个编码流程
案例
将输入的MP4文件视频流中的关键帧编码为GIF文件(不过这里导出的GIF文件是针对原视频的,滤镜和水印效果没有加上,下期再开文章细说)
编码流程
编码流程如上述流程图所示,代码封装在FFVideoWriter类中
输入MP4文件视频流的关键帧读取我们复用Android FFmpeg系列09--抽帧与快速抽帧一文中封装的FFVideoReader类
在Reader中新增跳过非关键帧的type(关于skip_frame可以参考Android FFmpeg系列10--seek优化)
接口封装
在FFMpegUtils.kt中提供工具类接口
JNI实现:通过reader循环读取出输入文件的关键帧AVFrame,然后通过writer进行编码和写入文件
GIF产物
将编码出来的gif产物导到电脑端查看,效果如下
完整代码可以点击文末的"阅读原文"获取,如有问题可以在github中提issue哦
~~END~~