我測試了下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 ...