ffmpeg的轉碼延時測試與設定優化

2021-08-09 07:31:11 字數 1622 閱讀 2488

我測試了下ffmpeg直播流的轉碼延時,這些引數對檔案的轉碼也是通用的;

測試環境:

. ffmpeg 版本為v3.0.2

. 從同一臺伺服器拉流,轉碼再推送到同一臺伺服器上,這樣減少了伺服器與網路影響;

1. 設定slow引數

$ ./ffmpeg -i rtmp: -vcodec libx264 -preset slow -b:v 400k -s 720x576 -r 25 

-acodec libfaac -b:a 64k -f flv rtmp:

設定了這個引數(-preset slow)後,延時大概在10.6 -- 12.1 秒,

但它的影象質量會好

fig-1 slow-3

2. 不設定優化引數

ffmpeg命令列:

$ ./ffmpeg -i rtmp: -vcodec libx264 -b:v 400k -s 720x576 -r 25 

-acodec libfaac -b:a 64k -f flv rtmp:

延時大概在1.6 -- 2.6秒

fig-2 no-setting-3

3.設定fast引數

ffmpeg命令列:

$ ./ffmpeg -i rtmp: -vcodec libx264 -preset fast -b:v 400k -s 720x576 -r 25 

-acodec libfaac -b:a 64k -f flv rtmp:

延時大概在2.1 -- 2.2秒

fig-3 fast-2

4. 設定ultrafast引數

ffmpeg命令列:

$ ./ffmpeg -i rtmp: -vcodec libx264 -preset ultrafast -b:v 400k -s 720x576 -r 25 

-acodec libfaac -b:a 64k -f flv rtmp:

這樣設定後延時會大大減小,但影象質量會變差得很明顯;

延時大概在0.6 -- 0.8 秒

fig-4 ultrafast-3

5. 設定zerolatency和ultrafast引數

ffmpeg命令列:

$ ./ffmpeg -i rtmp: -tune zerolatency -vcodec libx264 -preset ultrafast -b:v 400k -s 720x576 -r 25 

-acodec libfaac -b:a 64k -f flv rtmp:

這樣設定後延時還會減小,但影象質量會變差得很明顯;

延時大概在0.2 -- 0.6 秒

fig-5 zerolatency-ultrafast-2

總結:ffmpeg設定轉碼延時的引數和步驟如下:

. 關閉sync-lookahead

. 降低rc-lookahead,但別小於10,預設是-1

. 降低threads(比如從12降到6)

. 禁用rc-lookahead

. 禁用b-frames

. 縮小gop, 

. 開啟x264的 -preset fast/faster/ve***st/supe***st/ultrafast引數

. 使用-tune zerolatency 引數

ffmpeg的轉碼延時測試與設定優化

我測試了下ffmpeg直播流的轉碼延時,這些引數對檔案的轉碼也是通用的 測試環境 ffmpeg 版本為v3.0.2 從同一臺伺服器拉流,轉碼再推送到同一臺伺服器上,這樣減少了伺服器與網路影響 1.設定slow引數 ffmpeg i rtmp vcodec libx264 preset slow b ...

ffmpeg的轉碼延時測試與設定優化

分類 雲計算 我測試了下ffmpeg直播流的轉碼延時,這些引數對檔案的轉碼也是通用的 測試環境 ffmpeg 版本為v3.0.2 從同一臺伺服器拉流,轉碼再推送到同一臺伺服器上,這樣減少了伺服器與網路影響 1.設定slow引數 ffmpeg i rtmp vcodec libx264 preset ...

FFmpeg轉碼指令(測試通過)

1 rmvb提取音訊為 ffmpeg i rmvb 2 按時間範圍擷取 ffmpeg i rmvb ss 00 00 10 t 00 10 00 ss 擷取開始時間 t 擷取持續時間 ffmpeg i rmvb qscale 10 flv ffmpeg i rmvb s 640 480 flv 5 ...