FFmpeg開發之旅(零)---環境搭建

【寫在前面】

首先,需要說明的是,本系列學習教程是根據自己學習的經歷而寫,不過,因爲自己剛開始接觸音視頻,所以基本可以算是零基礎的了,並且對音視頻的一堆概念也是瞭解不多,因此會盡量寫的基礎和詳細。

然後,現在網上關於FFmpeg的教程資料,很多都是從官方例子直接copy,還不如自己看源碼,而稍微詳細點大都很老了,在新的版本(我的是4.2)中,很多老API都棄用了,並且有更加方便易用的新API,這也是本系列的意義所在。

接着,關於界面還是使用熟悉的Qt / Qml,這方面資料就更少了,想想又是一堆坑要踩Ծ‸ Ծ 。

最後,本篇就簡單介紹一下環境搭建。


【正文開始】

對了,先介紹一下FFmpeg:

FFmpeg is the leading multimedia framework, able to decode, encode, transcode, mux, demux, stream, filter and play pretty much anything that humans and machines have created. It supports the most obscure ancient formats up to the cutting edge. No matter if they were designed by some standards committee, the community or a corporation. It is also highly portable: FFmpeg compiles, runs, and passes our testing infrastructure FATEacross Linux, Mac OS X, Microsoft Windows, the BSDs, Solaris, etc. under a wide variety of build environments, machine architectures, and configurations.

翻譯:

FFmpeg是領先的多媒體框架,提供了音視頻的編碼,解碼,轉碼,封裝,解封裝,流,濾鏡(濾波器),播放等功能。它幾乎支持所有的音視頻格式,不管是標準委員會,社區,還是公司設計的。它是高度可移植,跨平臺的:可以在Linux, Mac OS X, Microsoft Windows, the BSDs, Solaris等系統上,在各種不同的編譯環境,機器架構,配置下編譯,運行,並通過測試。

FFmpeg本身是開源項目,並且在LGPL/GPL協議下發布的,因此任何人都可以自由使用,只要遵守LGPL/GPL協議。

FFmpeg官網是www.ffmpeg.org

1、下載Windows版的FFmpeg構建包,進入https://ffmpeg.zeranoe.com/builds/

      選擇版本[4.2]-> 系統架構[Wndow 64-bit],然後下載[Shared] + [Dev] (也可以全下)

2、下載完解壓,現在介紹一些它們:

      ffmpeg_dev:包含example例子、include頭文件、lib靜態鏈接庫。

      ffmpeg_shared:包含bin動態庫、doc文檔、presets不清楚。

      並且在 ffmpeg_shared/bin 下提供了三個命令行工具:

      ffmpeg.exe:視頻轉換工具。

      ffplay.exe:視頻播放工具。

      ffprobe.exe:視頻分析工具。

3、在Qt中使用FFmpeg:

      首先隨便新建一個項目,然後添加路徑並鏈接庫,在pro裏面加上:

    INCLUDEPATH += $$PWD/../ffmpeg_dev/include
    LIBS += -L$$PWD/../ffmpeg_dev/lib/ -lavutil

      main.cpp來測試一下:

#include <QCoreApplication>

extern "C"
{
#include <libavutil/avutil.h>
}

int main(int argc, char **argv)
{
    QCoreApplication a(argc, argv);

    printf("FFmpeg Version :%s", av_version_info());

    return a.exec();
}

      注意因爲FFmpeg是C庫,所以在include的時候需要使用 extern "C"

extern "C"

被 extern 限定的函數或變量是 extern 類型的

被 extern "C" 修飾的變量和函數是按照 C 語言方式編譯和鏈接的

效果圖如下:


【結語】

好了,FFmpeg的環境搭建還是很簡單的(Windows下)。

後面開始正式寫用法,並且自己也是一邊學一邊寫,難免有很多不足之處,還望多多指正~

最後,系列項目地址:https://github.com/mengps/FFmpeg-Learn

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