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庫的路徑,注意這個指令圍起來的不是普通的單引号!