目錄
- 前言
- 1. 下載x264
- 2. 編譯x264
- 3. 編譯FFmpeg
- 3.1 可能出現的問題和解決方法
- 3.1.1 ERROR: x264 not found using pkg-config
- 解決方法:
- 3.1.2 libx264 is gpl and --enable-gpl is not specified.
- 解決方法:
- 3.1.1 ERROR: x264 not found using pkg-config
- 3.1 可能出現的問題和解決方法
- 4. 檢查編譯結果
這裡我預設大家已經看過 第一章 FFmpeg初體驗:在Centos7.9下編譯FFmpeg!【如果沒有那還不趕緊去看!】
前言
FFmpeg本身並不支援H.264編碼器,而是採用整合第三方模組的方式來支援。要想在FFmpeg中開啟H.264編碼,可以採用x264和OpenH264這兩個編碼器。二者各有千秋,不過目前主流的H.264編碼器還是x264。
安裝環境:
作業系統 | OpenEuler 22.03 LTS SP4 |
---|---|
硬體記憶體 | 8G記憶體 |
硬碟大小 | 128G硬碟 |
1. 下載x264
git clone http://git.videolan.org/git/x264.git
2. 編譯x264
cd x264
./configure --enable-static --prefix=/usr/local/x264
--enable-static
:這個選項告訴配置指令碼,在編譯x264庫時,應該生成靜態庫。靜態庫是包含在最終可執行檔案中的,這意味著當你的程式執行時,不需要單獨的庫檔案。--prefix=/usr/local/x264
是指定x264庫安裝後的根目錄。這意味著所有的檔案(包括庫檔案、標頭檔案、文件等)都會被安裝到/usr/local/x264
目錄下。這樣做的好處是,可以將軟體安裝到非標準位置,從而避免與系統自帶軟體發生衝突或者在不影響系統其他部分的情況下輕鬆地解除安裝軟體。
3. 編譯FFmpeg
./configure --enable-libx264 --enable-gpl
--enable-libx264
:這個選項告訴配置指令碼,在編譯過程中包含對x264編碼庫的支援。--enable-gpl
:這個選項表明你接受GNU通用公共許可證(GPL)。x264是按照GPL許可證釋出的,啟用這個選項是為了確保你的專案與x264庫的許可證相容。
make -j$(nproc) && make install
-j
:這是make
命令的一個選項,用於指定併發執行的任務數。-j
後面通常跟著一個數字,表示同時執行的作業數。$(nproc)
:這是一個 shell 命令替換,它會展開為當前系統上的處理器核心數。例如,如果系統有4個核心,那麼-j$(nproc)
將展開為-j4
,告訴make
同時執行4個編譯任務。這樣做可以顯著加快編譯速度,因為它充分利用了多核處理器的優勢。
3.1 可能出現的問題和解決方法
3.1.1 ERROR: x264 not found using pkg-config
解決方法:
由於我們使用--prefix
指定了路徑,那麼我們已經知道了x264的安裝路徑是在/usr/local/x264
在/usr/local/x264/lib/pkgconfig/
目錄下有個x264.pc
檔案,只需要將它複製到/usr/share/pkgconfig/
下即可。(pkg-config預設會搜尋這個路徑)
cp /usr/local/x264/lib/pkgconfig/x264.pc /usr/share/pkgconfig/
3.1.2 libx264 is gpl and --enable-gpl is not specified.
解決方法:
只需要在configure後面再加上--enable-gpl
就可以了。
如:
./configure --enable-libx264 --enable-gpl
因為x264是按照GPL許可證釋出的,啟用這個選項是為了確保能與x264庫的許可證相容。
4. 檢查編譯結果
ffmpeg -h encoder=libx264
返回結果:
Encoder libx264 [libx264 H.264 / AVC / MPEG-4 AVC / MPEG-4 part 10]:
General capabilities: dr1 delay threads
Threading capabilities: other
Supported pixel formats: yuv420p yuvj420p yuv422p yuvj422p yuv444p yuvj444p nv12 nv16 nv21 yuv420p10le yuv422p10le yuv444p10le nv20le gray gray10le
libx264 AVOptions:
....................................
....................................
如果返回結果是這樣就說明你的FFmpeg已經支援H.264編碼啦~