ubuntu16 編譯ffmpeg蒙揣,使其支持x264、x265开瞭、硬編碼

環(huán)境

ubuntu16.04 cuda8.0 cudnn7 geforce gtx 1080 ti


image.png

ffmpeg的硬編碼

nvidia

  1. h264_nvenc
  2. hevc_nvenc wrappers

硬解碼

  1. cuvid
  2. NVDEC

版本需要https://developer.nvidia.com/ffmpeg


image.png

gtx 1080ti屬于pascal懒震,所以應(yīng)該安裝ffmpeg3.3以上

支持情況


image.png

image.png

請參照 https://trac.ffmpeg.org/wiki/CompilationGuide/Ubuntu

編譯

  1. 卸載x264 ffmpeg
    sudo apt-get -y remove ffmpeg x264 libx264-dev
  2. 卸載之前編譯的x264
make uninstall  ##刪除由make install命令安裝的文件
make clean  ##只刪除make時(shí)產(chǎn)生的臨時(shí)文件
make distclean  ##同時(shí)刪除configure和make產(chǎn)生的臨時(shí)文件

官網(wǎng)上的步驟https://developer.nvidia.com/ffmpeg

image.png

  1. 安裝ffnvcodec


    image.png

    4.安裝nasm

tar -zxvf nasm-2.15.tar.gz
cd nasm-2.15
./configure -prefix=/storage/lss/ffmpegbuild/ # 自己的路徑
make
sudo make install 
  1. 安裝libx264
cd x264
./configure --prefix=/storage/lss/ffmpegbuild/ --enable-static --enable-shared
make
sudo make install

6.安裝yasm

tar xzvf yasm-1.3.0.tar.gz
cd yasm-1.3.0
/configure --prefix=/storage/lss/ffmpegbuild
make
make install
  1. 安裝x265
    https://trac.ffmpeg.org/wiki/CompilationGuide/Ubuntu
    我沒有完全按照官網(wǎng)的命令
sudo apt-get install libnuma-dev 
git clone https://bitbucket.org/multicoreware/x265_git.git 
cd x265_git/build/linux
cmake -G "Unix Makefiles" -DCMAKE_INSTALL_PREFIX=/storage/lss/ffmpegbuild ../../source
make 
sudo make install
  1. 安裝ffmpeg
    https://developer.nvidia.com/ffmpeg
git clone https://git.ffmpeg.org/ffmpeg.git
 ./configure --prefix=/storage/lss/ffmpegbuild/ --enable-libx264 
--enable-libx265 
--enable-cuda-sdk 
--enable-cuvid 
--enable-nvenc 
--enable-nonfree
 --enable-gpl 
--enable-libnpp 
--extra-cflags=-I/storage/lss/ffmpegbuild/include 
--extra-ldflags=-L/storage/lss/ffmpegbuild/lib  
--extra-cflags=-I/usr/local/cuda-8.0/include 
--extra-ldflags=-L/usr/local/cuda-8.0/lib64
# 報(bào)錯(cuò)1找不到x264或者npp
# 原因: x264或者cuda的路徑?jīng)]寫對
# 報(bào)錯(cuò)2ERROR: x265 not found using pkg-config
# 解決方法:在ffmpegbuild/lib/下面找到了一個(gè)pkgconfig,試著導(dǎo)入嗤详,成功解決
export PKG_CONFIG_PATH=/storage/lss/ffmpegbuild/lib/pkgconfig
# 警告 WARNING: Option --enable-cuda-sdk is deprecated. Use --enable-cuda-nvcc instead
#替換configure
./configure --prefix=/storage/lss/ffmpegbuild/ --enable-libx264 --enable-libx265 --enable-cuda-nvcc --enable-cuvid --enable-nvenc --enable-nonfree --enable-gpl --enable-libnpp  --extra-cflags=-I/storage/lss/ffmpegbuild/include --extra-ldflags=-L/storage/lss/ffmpegbuild/lib  --extra-cflags=-I/usr/local/cuda-8.0/include --extra-ldflags=-L/usr/local/cuda-8.0/lib64
make
# 報(bào)錯(cuò) Makefile:117: recipe for target 'ffmpeg_g' failed
# 解決方法:make clean一下
make clean
# 然后重新configure
#接著
make -j 4
sudo make install

由于本機(jī)上有一個(gè)ffmpeg个扰,需要把環(huán)境變量變成新編譯的這個(gè),所以修改環(huán)境變量葱色,把路徑改成自己的/storage/lss/ffmpegbuild

image.png

調(diào)用ffmpeg后報(bào)錯(cuò)
ffmpeg: error while loading shared libraries: libx265.so.198: cannot open shared object file: No such file or directory
使用如下方案解決
image.png

測試

1. 將MP4轉(zhuǎn)化為flv成功

ffmpeg -i orange.mp4 -c:v libx264 output.flv

2. 調(diào)用265成功

ffmpeg -i orange.mp4 -c:v libx265 -c:a copy output.mp4

2. 使用硬編碼

ffmpeg -i orange.mp4 -c:v h264_nvenc output.mp4
報(bào)錯(cuò)

image.png

經(jīng)過上網(wǎng)搜递宅,我認(rèn)為可能的原因是ffmpeg版本太高了,所以將ffmpeg卸載重新編譯一個(gè)更低版本的
https://git.ffmpeg.org/ffmpeg.git查看ffmpeg的版本苍狰,git一個(gè)低版本的ffmpeg
git clone -b <tag> https://git.ffmpeg.org/ffmpeg.git # git指定版本的ffmpeg
重新編譯
會發(fā)現(xiàn)--enable-cuda-nvcc 會報(bào)錯(cuò)办龄,說沒有這個(gè)選項(xiàng),通過./configure --help查看所有的option發(fā)現(xiàn)沒有這個(gè)選項(xiàng)淋昭,可能是因?yàn)檫@個(gè)版本的不支持這個(gè)選項(xiàng)俐填,我又git一個(gè)最新版本的ffmpeg,然后在ffmpeg文件夾中從master切換到了n3.4分支翔忽,使用下面的命令切換

git checkout n3.4

重新編譯
編譯的過程中會報(bào)錯(cuò)英融,我搜了一下盏檐,有人說可能也是版本的問題,所以又換了一個(gè)版本 n3.4.3重新編譯 編譯成功

4. 使用新版本的ffmpeg調(diào)用硬編碼

ffmpeg -i orange.mp4 -c:v h264_nvenc output.mp4
成功,查看gpu調(diào)用情況驶悟,nvidia-smi,發(fā)現(xiàn)確實(shí)調(diào)用了gpu

image.png

重新編譯ffmpeg使其支持ffplay

#安裝包
sudo apt-get install libsdl-image1.2-dev
sudo apt-get install libsdl-mixer1.2-dev
sudo apt-get install libsdl-ttf2.0-dev
sudo apt-get install libsdl-gfx1.2-dev

官網(wǎng)下載sdl
https://www.libsdl.org/download-2.0.php

解壓:tar -zxvf SDL2-2.0.12.tar.gz
cd SDL2-2.0.12
./configure --prefix=/storage/lss/ffmpegbuild
make
make install

配置ffmpeg

./configure --prefix=/storage/lss/ffmpegbuild/ --enable-libx264 --enable-libx265 --enable-cuda-sdk --enable-cuvid --enable-nvenc --enable-nonfree --enable-gpl --enable-libnpp  --extra-cflags=-I/storage/lss/ffmpegbuild/include --extra-ldflags=-L/storage/lss/ffmpegbuild/lib  --extra-cflags=-I/usr/local/cuda-8.0/include --extra-ldflags=-L/usr/local/cuda-8.0/lib64 --enable-sdl
make -j 4
sudo make install
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末胡野,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子痕鳍,更是在濱河造成了極大的恐慌硫豆,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,290評論 6 491
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件笼呆,死亡現(xiàn)場離奇詭異够庙,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)抄邀,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,107評論 2 385
  • 文/潘曉璐 我一進(jìn)店門耘眨,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人境肾,你說我怎么就攤上這事剔难。” “怎么了奥喻?”我有些...
    開封第一講書人閱讀 156,872評論 0 347
  • 文/不壞的土叔 我叫張陵偶宫,是天一觀的道長。 經(jīng)常有香客問我环鲤,道長纯趋,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,415評論 1 283
  • 正文 為了忘掉前任冷离,我火速辦了婚禮吵冒,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘西剥。我一直安慰自己痹栖,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,453評論 6 385
  • 文/花漫 我一把揭開白布瞭空。 她就那樣靜靜地躺著揪阿,像睡著了一般。 火紅的嫁衣襯著肌膚如雪咆畏。 梳的紋絲不亂的頭發(fā)上南捂,一...
    開封第一講書人閱讀 49,784評論 1 290
  • 那天,我揣著相機(jī)與錄音旧找,去河邊找鬼溺健。 笑死,一個(gè)胖子當(dāng)著我的面吹牛钦讳,可吹牛的內(nèi)容都是我干的矿瘦。 我是一名探鬼主播,決...
    沈念sama閱讀 38,927評論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼愿卒,長吁一口氣:“原來是場噩夢啊……” “哼缚去!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起琼开,我...
    開封第一講書人閱讀 37,691評論 0 266
  • 序言:老撾萬榮一對情侶失蹤易结,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后柜候,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體搞动,經(jīng)...
    沈念sama閱讀 44,137評論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,472評論 2 326
  • 正文 我和宋清朗相戀三年渣刷,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了鹦肿。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,622評論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡辅柴,死狀恐怖箩溃,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情碌嘀,我是刑警寧澤,帶...
    沈念sama閱讀 34,289評論 4 329
  • 正文 年R本政府宣布,位于F島的核電站我碟,受9級特大地震影響憋槐,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜止状,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,887評論 3 312
  • 文/蒙蒙 一烹棉、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧怯疤,春花似錦峦耘、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,741評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至少梁,卻和暖如春洛口,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背凯沪。 一陣腳步聲響...
    開封第一講書人閱讀 31,977評論 1 265
  • 我被黑心中介騙來泰國打工第焰, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人妨马。 一個(gè)月前我還...
    沈念sama閱讀 46,316評論 2 360
  • 正文 我出身青樓挺举,卻偏偏與公主長得像杀赢,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個(gè)殘疾皇子湘纵,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,490評論 2 348