ffmpeg在centos7上的編譯
音視頻的編碼格式標準有很多種: mp3, acc, mpeg4, h264, h265 …..每個標準都有一個或多個編解碼庫, 如h264的庫有libx264, mpeg4的庫有xvid, h265的庫有libx265不同的庫, 裡面提供的函數及編解碼操作流程都會不一樣. ffmpeg其實就把各種庫的編解碼介面統一標準化, 也就是學會一種介面後就可以通殺各種編解碼庫.
當然ffmpeg除了編解碼外,還有如操作設備等的其它功能.
編譯ffmpeg庫:
一. 安裝yasm庫(有助於提高ffmpeg的編解碼效率) 1). 解包yasm-1.3.0.tar.gz 進入yasm-1.3.0目錄 2). 執行./configure產生Makefile 3). make && make install///////////// 安裝cmake工具(編譯c++源碼工程的工具, 編譯libx265庫用到) yum install cmake* 安裝好後,檢查cmake的版本 cmake --version 如果大於3.5則不需安裝cmake-3.5 否則需安裝cmake-3.5 1). 解包cmake-3.5.0.tar.gz 進入cmake-3.5.0目錄 2). 執行./configure產生Makefile configure完成後, 通過"echo $?"查看執行結果是否成功. 如果不是0,則不成功, 不能作下一步. 3). 執行make && make install
二. 編譯h264編解碼庫 1). 解包last_x264.tar.bz2 進入x264-snapshot-20160319-2245目錄 2). 執行"./configure --enable-shared --enable-static" // enable-shared 加上編譯出動態庫的支持 // enable-static 加上編譯出靜態庫的選項 3). make && make install 安裝完成後, h264庫的頭文件在/usr/local/include 動靜態庫在/usr/local/lib x264.pc庫的配置文件在/usr/local/lib/pkgconfig
三. 編譯h265編解碼庫 1). 解包x265_1.9.tar.gz 進入x265_1.9目錄里的build/linux目錄 2). 在終端下執行目錄下的make-Makefiles.bash腳本文件 執行時會彈出界面選項, 按"c"再按"g"鍵保存退出 3). make 如出現如下錯誤信息: x265_1.9/source/common/param.cpp:55: 錯誤:『char* strtok_r(char*, const char*, char**)』先被聲明為『extern』後又被聲明為『static』 修改x265_1.9/source/common/param.cpp的55行, 把"static"關鍵字去掉 4). make install h265庫的頭文件在/usr/local/include 動靜態庫在/usr/local/lib x265.pc庫的配置文件在/usr/local/lib/pkgconfig
四. 編譯ffmpeg庫 1). 解包ffmpeg-3.0.tar.bz2 進ffmpeg-3.0目錄里 2). 在終端里輸入命令: export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig/ ./configure --disable-debug --enable-libx264 --enable-libx265 --enable-gpl --enable-shared 注意查看輸出的信息: enabled program: 是否有ffplay(沒有的話,yum install *SDL*, 後再重新configure) 3). make && make install cp /usr/local/lib/libx* /lib64/ cp /usr/local/lib/libav* /lib64/ cp /usr/local/lib/libsw* /lib64/ cp /usr/local/lib/libpostproc* /lib64/ // 也可以不作上面cp的操作,但在編譯時需指定庫的路徑
完成後, 有命令: ffmpeg ffplay ffmpeg -decoders //列出可用的解碼器 H264 H265 ffmpeg -encoders //列出可用的編碼器 ffmpeg -devices //列出可支持的設備
推薦閱讀:
※2011 阿拉伯之春【普羅編譯】
※法意編譯 | 希拉里:韋伯教會我如何做一個政治家
※TarvisCI 全流程使用實踐(一)
※靜態庫編譯
TAG:編譯 |