天天看點

Linux Ubuntu 編譯FFMPEG音視訊庫,并實作例程

1 . 标題編譯與安裝

1 注意,先確定系統中擁有alsa音頻驅動,可以通過alsa指令看到是否擁有,沒有就apt-get alsa即可,否則沒法使用linux進行錄音;確定系統中安裝了libsdl跟yasm

sudo apt-get install libsdl2-dev
sudo apt-get install yasm
           

另外,如果需要使用libfdk_aac對音頻記性操作,就需要先安裝好:

sudo apt-get install libfdk-aac-dev
           

2 下載下傳源代碼ffmpeg

3 cd 進入目錄,執行編譯配置指令 :

./configure  --prefix=/usr/local/ffmpeg     --enable-debug=3    --enable-shared   --disable-static --enable-sdl2
           

其中sdl的enable是保證使用了sdl,可以編譯出來ffplay;如果需要啟動libfdk-aac來編碼aac格式檔案,就加上下面的參數:

--enable-libfdk-aac
           

4 開始編譯:

(此處是指定cpu幾核,多線程編譯,是多核就寫多少個就行)

5 執行安裝:

6 執行如下指令,測試音頻輸入功能

ffmpeg -f alsa -i hw:0,0 out.wav
           

7 執行如下指令,測試音頻外放功能

ffplay out.wav
           

2 . 頭檔案與連結庫配置

1 sudo gedit ~/.bashrc 打開bash的運作環境配置檔案

2 加入:

#ffmpeg指令的環境變量配置
export PATH=/usr/local/ffmpeg/bin:$PATH
#運作時連結庫配置,$LD_LIBRARY_PATH這裡可能在檔案的前面也配置了一堆庫,是以在這裡用:隔開,大家粘結在一起,形成了動态庫的環境變量
export LD_LIBRARY_PATH=/usr/local/ffmpeg/lib:$LD_LIBRARY_PATH
#這裡是ffmpeg或者各種linux庫的pkg-config檔案的存在地點,linux的pkg-config指令會用到
export PKG_CONFIG_PATH=/usr/local/ffmpeg/lib/pkgconfig:$PKG_CONFIG_PATH
           

儲存退出後,更新source

source   ~/.bashrc
           

案例程式:

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


int main(){
	av_log_set_level(AV_LOG_DEBUG);
	av_log(NULL, 3, "av is ok");
	return 0;
}
           

這裡注意,一定要加入extern C,因為ffmpeg是c語言的函數庫,裡面的編譯連結規則遵守C語言的規則,故而需要告訴編譯器,括号中間的頭檔案所指向的代碼庫,請都遵守C語言的編譯連結規則

編譯指令:

其中:pkg-config --libs --cflags libavutil ,可以單獨執行,可以看到輸出的-I -L 的結果,即為程式的編譯連結提供了頭檔案跟lib庫的路徑,注意這個指令圍起來的不是普通的單引号!