FFmpeg之Hello World

引子

任何入门教程都以Hello World作为经典指导,我们也不免落入俗套,基于FFmpeg的Hello World只是熟悉一下怎么基于FFmpeg的库文件编写自己的应用程序。当然,像FFmpeg源码里本身提供的ffmpeg,ffprobe,ffplay,ffserver等程序是经典的参考,但是它们本身还是有些复杂,作为入门来说有些不合适,那我们就自己来造一个Hello World吧。

功能需求

通过FFmpeg的函数调用,打印输出Hello World,其主要目的有:
一是学会使用FFmpeg的库函数,并且不依赖于FFmpeg本身的Makefile框架,这样在未来的各种FFmpeg功能开发时,可以更加灵活;
二是学会使用FFmpeg的接口,虽然是最简单的API,但是其使用方法是通用的。

源码实现

新建一个文件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源代码时已经存在(参考http://blog.csdn.net/ericbar/article/details/69943941),
-lavutil表示我们的helloworld程序链接时需要依赖avutil库。

gcc helloworld.c -o helloworld -I/home/ffmpeg/work/ffmpeg-3.2.4/out/include -L/home/ffmpeg/work/ffmpeg-3.2.4/out/lib -lavutil

编译完成后,直接在终端命令里敲入如下代码并回车,

./helloworld

即可看到终端输出结果打印,如下,

ffmpeg@ubuntu:~/work/HelloWorld$ ./helloworld
Hello World !
ffmpeg@ubuntu:~/work/HelloWorld$ 

通过以上例子,我们顺利的基于FFmpeg库函数完成了Hello World的打印输出,而不需要通过printf标准库函数来完成。实际上,我们已经逐步学会使用FFmpeg的接口函数了,接下来,我们将进一步深入FFmpeg,来实现一个媒体播放器的功能需求。

你可能感兴趣的:(FFmpeg,ffmpeg,库,HelloWorld)