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,來實現一個媒體播放器的功能需求。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章