linux下成功安裝調用ffmpeg記錄

1.Linux下安裝ffmpeg

官網下載:http://ffmpeg.org/download.html

下載之後上傳至Linux準備安裝,首先解壓安裝包
tar -xjvf ffmpeg-3.3.4.tar.bz2
cd ffmpeg-3.3.4/

 

如果現在執行configure配置的話,可能會報如下的錯誤:

錯誤的意思是 yasm/nasm 包不存在或者很舊,可以使用--disable-yasm禁用這個選項編譯,yasm是一款彙編器,並且是完全重寫了nasm的彙編環境,接收nasm和gas語法,支持x86和amd64指令集,所以這裏安裝一下yasm即可

2.Linux下安裝yasm
官網下載:http://yasm.tortall.net/Download.html 
下載之後上傳至Linux準備安裝,首先解壓安裝包
tar -xvzf yasm-1.3.0.tar.gz
cd yasm-1.3.0/
./configure
make
make install
編譯參數都是默認的,直接安裝到系統中即可

3.Linux下安裝ffmpeg
安裝成功之後繼續回到ffmpeg解壓後的目錄,執行下面命令編譯並安裝
./configure --enable-shared --prefix=/monchickey/ffmpeg
make
make install

make編譯過程有點長
make install會把ffmpeg相關執行程序、頭文件、lib庫安裝在/monchickey/ffmpeg/下
耐心等待完成之後執行
cd /monchickey/ffmpeg/

進入安裝目錄,查看一下發現有bin,include,lib,share這4個目錄
bin是ffmpeg主程序二進制目錄
include是C/C++頭文件目錄
lib是編譯好的庫文件目錄
share是文檔目錄

然後進入bin目錄,執行
 ./ffmpeg -version
 查看當前版本的詳細信息,默認情況下一般會報
libavdevice.so.57: cannot open shared object file: No such file or directory
原因是lib目錄未加載到鏈接到系統庫中

系統ld目錄列表在/etc/ld.so.conf中,打開文件會發現,
裏面引用了/etc/ld.so.conf.d/下面所有的.conf文件,比如mariadb-x86_64.conf

創建一個文件並寫入lib路徑即可,執行命令: vim /etc/ld.so.conf.d/ffmpeg.conf
 然後添加一行內容: /monchickey/ffmpeg/lib 
之後保存並退出,然後執行 ldconfig 使配置生效,
現在再次執行 ./ffmpeg -version 顯示就正常了
 
4.ffmpeg相關庫功能

 

 

ffmpeg相關的庫主要是以下7個

libavutil:用於多媒體編程,主要包含安全合適的字符串操作函數、數學運算函數、隨機數字生產器、數據結構、多媒體處理的相關函數(如對像素和採樣格式的計數)等,但它不是libavcodec和libavformat所需的庫代碼;

libavcodec、libavformat:有些視頻文件格式(如AVI)沒有指出應該使用哪種編碼(如h.264)來解析音頻和視頻數據,它們只是按視頻格式封裝音視頻數據,所以經常碰到打開視頻文件只能聽到聲音而沒有畫面,則用libavformat來解析視頻文件並將編碼流分離出來,libavcodec對流進行解碼;

libavdevice:爲一些常見的多媒體輸入或輸出設備提供了抓取和渲染的通用架構,並且很多輸入和輸出設備,如Video4Linux2, VfW, DShow, and ALSA;

libavfilter:提供了一個通用規定音視頻過濾架構,包括一些過濾器、源、匯(什麼是源、匯,我也沒搞清楚,待研究)

libswscale:執行高度優化的圖像縮放、色彩、像素格式轉換操作

libswresample:執行高度優化的音頻重採樣、重換算、樣本格式轉換操作

5.代碼調用ffmpeg庫接口函數

 

 

代碼文件ffmpegmain.c中

 

其中avcodec_register_all();是要使用的接口,要包含"libavcodec/avcodec.h"頭文件
運行gcc -o ffmpegmain ffmpegmain.c -I/monchickey/ffmpeg/include -L/monchickey/ffmpeg/lib -lavcodec即可

進行ffmpeg開發,則根據情況調用相關接口功能實現所需要的功能

6.記錄註解:
1.ffmpeg代碼版本爲最新版本,API接口名稱會有更新,可查看ffmpeg\doc\ APIchanges 文件確定名稱變更記錄;

2.本文圖片由網絡文檔獲取,ffmpeg版本不同不必細究;

 

  

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