讓ffmpeg支持10bit編碼

文章版權由作者柯O德爾和博客園共有,請尊重並支持原創,若轉載請於明顯處標明出處:http://www.cnblogs.com/koder/

 

最近因爲工作需要,要進行265 10bit編碼,於是從ffmpeg官網下載了最新版的32位的ffmpeg可執行程序,使用如下命令進行編碼:

ffmpeg.exe -i input.ts -vcodec libx265 -pix_fmt yuv420p10le -acodec copy output.ts

得到了一個很矇蔽的結果:

注意看黃色這一行,說的是ffmpeg不支持yuv420p10le像素格式,自動切換爲yuv420p進行編碼,但是yuv420p編出來位深度只有8bit,我去,難道最新版本的ffmpeg不支持10bit編碼?

 

於是不死心啊,然後各種百度谷歌,最後從國外的一個問答網址上看到有個國外友人說那是因爲你用的ffmpeg自帶的x265編碼器不支持10bit編碼,恍然大悟,從上面x265編碼器輸出的信息中也能看出來是隻支持8bit編碼的,那麼解決辦法就是自己編譯一個支持10bit的x265庫,然後再集成到ffmepg裏面去,等於說要自己重新編譯ffmpeg哦,編譯過的同學應該都知道這是極其痛苦的事情,但是爲了革命,沒辦法啊,那麼就來吧,這裏介紹linux下面的操作:

1. 編譯支持10bit的x265庫:

從官網下載源碼包:https://bitbucket.org/multicoreware/x265/wiki/Home

要讓x265支持10bit編碼,只需要修改CMake的一個編譯選項即可:

tar -zxvf x265_2.3.tar.gz
cd x265_2.3/source
vim CMakeLists.txt

 把option(HIGH_BIT_DEPTH "Store pixel samples as 16bit values (Main10/Main12)" OFF)修改爲option(HIGH_BIT_DEPTH "Store pixel samples as 16bit values (Main10/Main12)" ON)即可;

最後執行CMake編譯即可:

cd x265_2.3/build/linux
cmake -G "Unix Makefiles" -DCMAKE_INSTALL_PREFIX=/usr/local/x265_10bit -DENABLE_SHARED=OFF ../../source
make -j4
make install

檢驗是否是真的支持10bit:

cd /usr/local/x265_10bit/bin
./x265 --help

輸出信息如下:

x265 [info]: HEVC encoder version 2.3
x265 [info]: build info [Linux][GCC 4.4.7][64 bit] 10bit

說明支持10bit編碼了。

2. 把新編譯的支持10bit編碼的x265庫集成到ffmpeg中:

這就是自己編譯ffmpeg的過程,可以參考網上的例子,這裏重點是介紹編譯支持10bit編碼的x265,就不再說明了。

 

注意事項:

1. 在修改x265的CMakeList時,發現了這麼一行說明:

# NOTE: We only officially support high-bit-depth compiles of x265
# on 64bit architectures. Main10 plus large resolution plus slow
# preset plus 32bit address space usually means malloc failure. You
# can disable this if(X64) check if you desparately need a 32bit
# build with 10bit/12bit support, but this violates the "shrink wrap
# license" so to speak. If it breaks you get to keep both halves.
# You will need to disable assembly manually.
說明要使用x265進行10bit編碼需要在64位的機子上運行,32位的不行哦;

2. ffmpeg官網上的windows編譯好的版本,不管是最新的32位還是64位版本,默認只支持8bit編碼,所以要進行10bit編碼只能按照上面的方法對x265重新編譯,然後再集成到ffmpeg裏面。

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