任何入门教程都以Hello World作为经典指导,我们也不免落入俗套,基于FFmpeg的Hello World只是熟悉一下怎么基于FFmpeg的库文件编写自己的应用程序。
功能需求
通过FFmpeg的函数调用,打印输出Hello World,其主要目的有:
- 学会使用FFmpeg的库函数,并且不依赖于FFmpeg本身的Makefile框架,这样在未来的各种FFmpeg功能开发时,可以更加灵活;
- 学会使用FFmpeg的接口,虽然是最简单的API,但是其使用方法是通用的。
源码实现
新建一个目录:ffmpeg-3.2.12/study
新建一个文件:helloworld.c,并填入如下内容并保存。这里主要借助了FFmpeg的avutil库里的av_log函数,将Hello World打印在控制台输出。
#include "libavutil/log.h"
int main(int argc, char **argv)
{
// 设置控制台输出级别
av_log_set_level(AV_LOG_DEBUG);
// 打印输出字符串Hello World !
av_log(NULL, AV_LOG_DEBUG, "%s", "Hello World !\n");
}
编译和运行
在helloworld.c所在目录,敲入如下语句完成代码编译。其中,-o表示我们最终生成的可执行文件的名称,-I是FFmpeg库函数头文件所在的路径,-L是FFmpeg库文件所在的路径,这些库文件前期我们编译FFmpeg源代码时已经存在(out/libavutil.a), -lavutil表示我们的helloworld程序链接时需要依赖avutil库。
gcc helloworld.c -o helloworld -I/home/zjf/workspace/ffmpeg-3.2.12/out/include -L/home/zjf/workspace/ffmpeg-3.2.12/out/lib -lavutil
编译完成后,直接在终端命令里敲入如下代码并回车,
通过以上例子,我们顺利的基于FFmpeg库函数完成了Hello World的打印输出,而不需要通过printf标准库函数来完成。实际上,我们已经逐步学会使用FFmpeg的接口函数了,接下来,我们将进一步深入FFmpeg,来实现一个媒体播放器的功能需求。