ffmpeg视频编码例子:https://git.ffmpeg.org/gitweb/ffmpeg.git/blob/HEAD:/doc/examples/encode_video.c
从main函数入手,核心接口:avcodec_find_encoder_by_name、avcodec_open2、avcodec_send_frame、avcodec_receive_packet
程序主要流程:
- 查找编码器
- 初始化编码器(编码参数)
- 构建视频数据包
- 编码数据包
- 清理解码器
这个例子编码的是裸流,所以没有封装等操作。
从输入里获得编码器名称
codec = avcodec_find_encoder_by_name(codec_name);
if (!codec) {
fprintf(stderr, "Codec '%s' not found\n", codec_name);
exit(1);
}
设置详细编码参数(码率、分辨率、帧率、GOP、像素格式等)
/* put sample parameters */
c->bit_rate = 400000;
/* resolution