1 简述
ffmpeg.exe 是一个非常快速的音频视频转换工具, 我们可以通过它进行格式,编码转换,还可以加滤镜。它可以读取普通文件,网络文件,甚至抓取设备数据。ffmpeg 转码的过程如下图所示:
ffmpeg 涉及的c 文件有三个:ffmpeg.c , ffmpeg_opt.c,cmdutils.c ,有关ffmpeg.exe 框架,引用雷神画的流程图:
从上图我们可以看到,main() 函数中调用的函数有:
1)av_register_all()
2)show_banner() :打印ffmpeg 版本,编译器版本,已配置的编解码器,以及动态库的版本信息。
3)parse_options():解析命令行传入的参数,并根据传入的参数,去打开相应的stream,创建该输出的流。
4)transcode() : 转码,还支持滤镜的添加
5)exit_program()
下面我们围绕show_banner(), parse_option(), transcode() 三个函数来介绍ffmpeg.
2 show_banner()
这函数在cmdutils.c 文件中实现的,我们每次使用FFMPEG 进行转码时,都会有下面的输出, 这些都是在show_banner() 函数中输出的。
函数十分简单,直接上源码。
void show_banner(int argc, char **argv, const OptionDef *options)
{
int idx = locate_option(argc, argv, options, "version");
if (hide_banner || idx)
return;
print_program_info (INDENT|SHOW_COPYRIGHT, AV_LOG_INFO);
print_all_libs_info(INDENT|SHOW_CONFIG, AV_LOG_INFO);
print_all_libs_info(INDENT|SHOW