ffmpeg 常用參數(shù)
-analyzeduration 分析源目標(biāo)的最大時長,毫秒
-re 按照播放的速率去讀取源文件,放在-i之前
-listen 對-i的源進(jìn)行監(jiān)聽,例如 -listen 1 -i tcp://127.0.0.1:1234
-stream_loop 循環(huán)讀取,一般用于直播流的模擬, 例如-stream_loop -1
-c:v video codec
-c:a audio codec
-b:v 視頻碼流
-b:a 音頻碼流
-profile:v 視頻的profile 例如 baseline high 等
-pix_fmt 像素格式 ,例如-pix_fmt yuv420p,瀏覽器一般只能播 yuv420p及以下的
-vf 一些濾鏡 ;例如 -vf drawtext , 可以利用drawtext實(shí)時的寫入視頻時間,drawtext="text='%{localtime:%X}':x=0:y=0:fontsize=30:fontcolor=white"
-preset 和 -tune 屬于模版試的配置,preset 例如ultrafast veryfast slow等 ,tune 有film,animation等等
-x264-params 設(shè)置x264的參數(shù),例如keyint=29:scenecut=0
-r 幀率
-maxrate 最大速率,目前沒有十分搞清楚,可以配合 -bufsize使用,
-f 輸出格式 flv、mp4等
推流地址可支持
tcp://ip:port
rtmp://ip:port
等等
案例1:抓取屏幕linux:
ffmpeg -f x11grab -framerate 30 -video_size 1920x1080 -i :0.0+0,0 -c:v libx264 -preset superfast -tune zerolatency -b:v 800k -maxrate 800k -bufsize 800k -vf "scale=720:-1" -g 60 -f flv rtmp://rtmp
案例2:通過設(shè)定gop減少緩沖時間
通過ffmpeg,讀取攝像頭實(shí)時流,推送至支持webrtc直播的srs服務(wù)器,發(fā)現(xiàn)啟動播放非常慢,要10-15秒。
經(jīng)過參數(shù)查看發(fā)現(xiàn),該攝像頭為特規(guī)設(shè)備,幀率為5. 而webrtc播放器應(yīng)該是要攢夠他認(rèn)為足夠的關(guān)鍵幀信息才開始播放,而這個閾值可能被設(shè)定成一般的常用數(shù)字,而且不太清楚如何修改,另外的辦法就是通過設(shè)定ffmpeg的GOP參數(shù),強(qiáng)制關(guān)鍵幀間隔。
通過設(shè)定ffmpeg -g 10, webrtc播放器順利在2秒內(nèi)起播。
案例3:針對mp4的meta信息的提前
-movflags faststart
附ffmpeg linux下編譯選項(xiàng)
./configure --bindir=/ffmpeg/build/bin --incdir=/ffmpeg/build/include/ --libdir=/ffmpeg/build/lib/ --docdir=/ffmpeg/build/doc --enable-static --enable-shared --enable-gpl --enable-libx264 --enable-libx265 --enable-libvpx --enable-libfdk-aac --enable-nonfree --enable-libopus