[FFmpeg]ffmpeg各類引數說明與使用示例

工程師WWW發表於2017-05-08

1、ffmpeg 推送視訊檔案,音視訊的編碼格式只能為H264、AAC。

ffmpeg -re -i "E:\片源\復仇者聯盟720p.mov" -vcodec copy -acodec copy -f flv rtmp://192.168.11.75/live/test1 
ffmpeg -re -i "E:\片源\復仇者聯盟720p.mov" -vcodec copy -acodec copy -f flv rtmpt://192.168.11.75:8080/live/test1

1.jpg

2、網路攝像機 rtsp流轉推rtmp直播(不過有丟包情況,還請大家多給指點)

ffmpeg -i rtsp://ip address/original -crf 30 -preset ultrafast -acodec aac -strict experimental -ar 44100 -ac 2 -b:a 96k -vcodec libx264 -r 25 -b:v 500k -s 640*480 -f flv rtmp://ip address/live/stram

ffmpeg引數說明:

基本選項:
-formats輸出所有可用格式
-f fmt指定格式(音訊或視訊格式)
-i filename指定輸入檔名,在linux下當然也能指定:0.0(螢幕錄製)或攝像頭
-y覆蓋已有檔案
-t duration記錄時長為t
-fs limit_size設定檔案大小上限
-ss time_off從指定的時間(s)開始, [-]hh:mm:ss[.xxx]的格式也支援
-itsoffset time_off設定時間偏移(s),該選項影響所有後面的輸入檔案。該偏移被加到輸入檔案的時戳,定義一個正偏移意味著相應的流被延遲了 offset秒。 [-]hh:mm:ss[.xxx]的格式也支援
-title string標題
-timestamp time時間戳
-author string作者
-copyright string版權資訊
-comment string評論
-album stringalbum名
-v verbose與log相關的
-target type設定目標檔案型別("vcd", "svcd", "dvd", "dv", "dv50", "pal-vcd", "ntsc-svcd", ...)
-dframes number設定要記錄的幀數
視訊選項:
-b指定位元率(bits/s),似乎ffmpeg是自動VBR的,指定了就大概是平均位元率
-bitexact使用標準位元率
-vb指定視訊位元率(bits/s)
-vframes number設定轉換多少楨(frame)的視訊
-r rate幀速率(fps) (可以改,確認非標準楨率會導致音畫不同步,所以只能設定為15或者29.97)
-s size指定解析度 (320x240)
-aspect aspect設定視訊長寬比(4:3, 16:9 or 1.3333, 1.7777)
-croptop size設定頂部切除尺寸(in pixels)
-cropbottom size設定底部切除尺寸(in pixels)
-cropleft size設定左切除尺寸 (in pixels)
-cropright size設定右切除尺寸 (in pixels)
-padtop size設定頂部補齊尺寸(in pixels)
-padbottom size底補齊(in pixels)
-padleft size左補齊(in pixels)
-padright size右補齊(in pixels)
-padcolor color補齊帶顏色(000000-FFFFFF)
-vn取消視訊
-vcodec codec強制使用codec編解碼方式('copy' to copy stream)
-sameq使用同樣視訊質量作為源(VBR)
-pass n選擇處理遍數(1或者2)。兩遍編碼非常有用。第一遍生成統計資訊,第二遍生成精確的請求的位元速率
-passlogfile file選擇兩遍的紀錄檔名為file
-newvideo在現在的視訊流後面加入新的視訊流
 
高階視訊選項
-pix_fmt formatset pixel format, 'list' as argument shows all the pixel formats supported
-intra僅適用幀內編碼
-qscale q以<數值>質量為基礎的VBR,取值0.01-255,約小質量越好
-loop_input設定輸入流的迴圈數(目前只對影象有效)
-loop_output設定輸出視訊的迴圈數,比如輸出gif時設為0表示無限迴圈
-g int設定影象組大小
-cutoff int設定截止頻率
-qmin int設定最小質量,與-qmax(設定最大質量)共用,比如-qmin 10 -qmax 31
-qmax int設定最大質量
-qdiff int量化標度間最大偏差 (VBR)
-bf int使用frames B 幀,支援mpeg1,mpeg2,mpeg4
音訊選項:
-ab設定位元率(單位:bit/s,也許老版是kb/s)前面-ac設為立體聲時要以一半位元率來設定,比如192kbps的就設成96,轉換 預設位元率都較小,要聽到較高品質聲音的話建議設到160kbps(80)以上。
-aframes number設定轉換多少楨(frame)的音訊
-aq quality設定音訊質量 (指定編碼)
-ar rate設定音訊取樣率 (單位:Hz),PSP只認24000
-ac channels設定聲道數,1就是單聲道,2就是立體聲,轉換單聲道的TVrip可以用1(節省一半容量),高品質的DVDrip就可以用2
-an取消音訊
-acodec codec指定音訊編碼('copy' to copy stream)
-vol volume設定錄製音量大小(預設為256) <百分比> ,某些DVDrip的AC3軌音量極小,轉換時可以用這個提高音量,比如200就是原來的2倍
-newaudio在現在的音訊流後面加入新的音訊流
字幕選項:
-sn取消字幕
-scodec codec設定字幕編碼('copy' to copy stream)
-newsubtitle在當前字幕後新增
-slang code設定字幕所用的ISO 639編碼(3個字母)
Audio/Video 抓取選項:
-vc channel設定視訊捕獲通道(只對DV1394)
-tvstd standard
轉換為flv: 
    ffmpeg -i test.mp3 -ab 56 -ar 22050 -b 500 -r 15 -s 320x240 test.flv 
    ffmpeg -i test.wmv -ab 56 -ar 22050 -b 500 -r 15 -s 320x240 test.flv 

 轉換檔案格式的同時抓縮微圖: 
    ffmpeg -i "test.avi" -y -f image2 -ss 8 -t 0.001 -s 350x240 'test.jpg' 

  對已有flv抓圖: 
    ffmpeg -i "test.flv" -y -f image2 -ss 8 -t 0.001 -s 350x240 'test.jpg' 

  轉換為3gp:
    ffmpeg -y -i test.mpeg -bitexact -vcodec h263 -b 128 -r 15 -s 176x144 -acodec aac -ac 2 -ar 22500 -ab 24 -f 3gp test.3gp 
    ffmpeg -y -i test.mpeg -ac 1 -acodec amr_nb -ar 8000 -s 176x144 -b 128 -r 15 test.3gp 

相關連結:FFMPEG提供的命令列,FFMPEG好強大

相關文章