ffmpeg 编码

ffmpeg 自身有h264的解码模块。编码却需要打包入其他编码库。具体效率分析参看:主流开源编解码器Xvid,x264,ffmpeg 性能对比(转)


实现编码定义了四个函数。

一:帧添加结束后flush,将未输出的avpacket写入

调用flush原因分析:ffmpeg /x264视频流编解码末尾丢帧问题分析和解决

二 编码前初始化

ffmpeg 安装设置教程(FFMpeg开发与应用基础)(1)


ffmpeg 安装设置教程(FFMpeg开发与应用基础)(2)


ffmpeg 安装设置教程(FFMpeg开发与应用基础)(3)


ffmpeg 安装设置教程(FFMpeg开发与应用基础)(4)

ENCODE_KEY是封装的一个结构体,里面有编码所用到的结构体集合和部分参数。

内容如下;

ffmpeg 安装设置教程(FFMpeg开发与应用基础)(5)

为了实现同时支持编码多个视频,所以将这些封装为结构体传送指针。


三 编码一帧


四 停止编码,释放资源


ffmpeg 安装设置教程(FFMpeg开发与应用基础)(6)


ffmpeg 安装设置教程(FFMpeg开发与应用基础)(7)

ffmpeg 编码器AVCodecContext 的配置参数

1、先说一些基本的API


ffmpeg 安装设置教程(FFMpeg开发与应用基础)(8)

2、开始配置编码器上下文的参数


ffmpeg 安装设置教程(FFMpeg开发与应用基础)(9)

ffmpeg 安装设置教程(FFMpeg开发与应用基础)(10)


ffmpeg 安装设置教程(FFMpeg开发与应用基础)(11)


ffmpeg 安装设置教程(FFMpeg开发与应用基础)(12)

3、一些针对具体要求进行的配置


(1)x264编码时延问题

方法一:


ffmpeg 安装设置教程(FFMpeg开发与应用基础)(13)

方法二:


ffmpeg 安装设置教程(FFMpeg开发与应用基础)(14)

,