ffmpeg 15條使用命令

帖子比較長,建議Ctrl+D bookmark一下,或者提交到別的什麼Social bookmark sites,不想看mencoder/ffmpeg詳細技術手冊的,可以把它當快速簡易參考看,主要的功能有:
  1. 視頻格式轉換
  2. 音頻格式轉換
  3. 切割視頻及音頻
  4. 連接兩段視頻
  5. 視頻音頻同步
  6. 將圖像系列轉換成視頻      
這裏是百鬼丸以前收集的一部分命令行視頻音頻編輯腳本命令,一直在自己的記事本里隨時用,現在覺得新浪編輯器夠方便,速度也夠快,覺得把它們放在博客上更合適些。這些命令都是基於一些開源免費軟件,如mencoder, ffmpeg, lame, sox,perl, ffmpeg2theora等,這些軟件一般都沒有圖形界面,需要在命令行窗口輸入執行。因此對家庭用戶可能並不是太合適,需要花不少時間瞭解掌握。但對批量處理或者後臺處理視頻音頻很有效。當你不想購買商業軟件或者使用linux操作系統時,可以試試。 



任務1: 延遲視頻部分 (對avi文件有效)
mencoder -delay 0.7 -oac copy -ovc copy input.avi -o output.avi

解釋:讓視頻軌比當前的音頻軌落後0.7秒鐘



任務2: 延遲音頻部分(對avi文件有效)
mencoder -oac copy -ovc copy -audio-delay -0.7 input.avi -o output.avi

解釋:讓音頻軌比當前的視頻軌落後0.7秒鐘



任務3:切割視頻軌
mencoder -ss 00:00:10 -endpos 60 -ovc copy -oac copy input.avi -o output.avi

解釋:切割視頻部分,從0分10秒開始,到1分10秒,時間長度爲60秒。將結果存儲爲output.avi 



任務4: 連接兩段視頻 (必須比特率相同)
mencoder -oac copy -ovc copy -idx -o output.avi input1.avi input2.avi

解釋



任務5: 將一系列靜止圖像和一個mp3文件轉換爲AVI視頻文件
mencoder "mf://snap*.bmp" -mf fps=25 -oac mp3lame -lameopts abr:br=128:mode=3 -audiofile test.mp3 -ovc lavc -lavcopts vcodec=msmpeg4v2:vpass=1:vbitrate=2560000:mbd=2:keyint=132:vqblur=1.0:cmp=2:subcmp=2:dia=2:mv0:last_pred=3 -o leadnull

mencoder "mf://snap*.bmp" -mf fps=25 -oac mp3lame -lameopts abr:br=128:mode=3 -audiofile test.mp3 -ovc lavc -lavcopts vcodec=msmpeg4v2:vpass=2:vbitrate=2560000:mbd=2:keyint=132:vqblur=1.0:cmp=2:subcmp=2:dia=2:mv0:last_pred=3 -o lead.avi

解釋:mono=3 代表單聲道音頻輸出, mono=0 代表立體聲音頻輸出。上面使用的視頻編碼是微軟的msmpeg4,因此這個AVI文件可以直接在Windows media player中播放,不需要另外安裝插件。 上面兩條命令,表示兩遍壓縮。 爲提高速度,也可以只實用第一條做單次壓縮。輸出視頻的fps爲25。



任務6: 切割mp3音頻文件

mplayer -ss 00:01:59 -endpos 102.5 input.mp3 -ao pcm

sox audiodump.wav result1.wav fade t 3

sox result1.wav result2.wav fade t 0 102.5 3.5

lame result2.wav -o fighting.mp3 -b 160

解釋:這個過程由四條命令組成。 上面的例子中,
第一步:切割部分爲 1分59秒開始,到3分41.5秒結束,長度102.5秒。用戶需自己計算切割部分,設定上述參數。 
第二步:用sox對音頻開頭3秒鐘做一個淡入效果(聲音逐漸增強)
第三步:用sox對音頻結束3.5秒鐘做一個淡出效果(聲音逐漸衰減)
第四步:將lame處理好的音頻重新編碼成160kbps的mp3文件

其中,第二、第三步是可以省略的。 



任務7: 將wma文件轉換爲mp3文件

mplayer input.wma -ao pcm

lame audiodump.wav -o output.mp3 -b 160

解釋:一共兩條命令。第一條將wma轉化爲wav文件,第二條再將wav轉換爲mp3文件,比特率爲160kbps. 



任務8: 將一系列圖像文件轉換爲flv視頻文件

mencoder  "mf://snap*.bmp" -mf fps=25 -audiofile test.mp3 -o output.flv   -af resample=22050:0:0 -sws 9 -vf scale=448:-3,expand=448:336 -of lavf -ovc lavc -lavcopts vcodec=flv:vbitrate=260:mbd=2:mv0:trell:v4mv:cbp:last_pred=3:predia=2:dia=2:vb_strategy=1:precmp=2:cmp=2:subcmp=2:preme=2:vpass=1

mencoder  "mf://snap*.bmp" -mf fps=25 -o output.flv -audiofile test.mp3  -af resample=22050:0:0 -sws 9 -vf scale=448:-3,expand=448:336 -of lavf -ovc lavc -lavcopts vcodec=flv:vbitrate=260:mbd=2:mv0:trell:v4mv:cbp:last_pred=3:predia=2:dia=2:vb_strategy=1:precmp=2:cmp=2:subcmp=2:preme=2:qns=2:vpass=2

解釋:兩遍壓縮,將一系列snap001.bmp, snap002.bmp, ...圖像和一個mp3文件"test.mp3"轉換成fps=25的錄像。音頻採樣率設定爲22050,視頻畫面大小爲448x336, 視頻的比特率爲260kbps。 
如果你希望更改視頻中的keyframe, 你可以在第一條命令執行後,手動編輯一個divx2pass.log文件。文件中"Type:1"表示關鍵幀keyframe (或者叫i frame), "Type:2"表示p-frame,就是隻記錄相鄰幀變化部分的幀。 



任務9: 將一系列圖像文件轉換爲ogg視頻文件

ffmpeg2theora -f image2 snap%05d.bmp -V 320 -o output.ogg

解釋:ogg錄像還是有點用的,wikipedia, wikimeida都在用。上面的視頻比特率爲320kbps



任務10: 將一系列圖像轉化爲與NTSC DVD兼容的mpeg2格式文件。 

mencoder -oac lavc -ovc lavc -of mpeg -mpegopts format=dvd:tsaf -vf scale=720:480,harddup -srate 48000 -af lavcresample=48000 -lavcopts vcodec=mpeg2video:vpass=1:vrc_buf_size=1835:vrc_maxrate=9800:vbitrate=5000:keyint=18:vstrict=0:acodec=ac3:abitrate=192:aspect=16/9 -ofps 30000/1001 -o ntscdvd.mpg "mf://snap*.bmp" -mf fps=25 -audiofile test.mp3

mencoder -oac lavc -ovc lavc -of mpeg -mpegopts format=dvd:tsaf -vf scale=720:480,harddup -srate 48000 -af lavcresample=48000 -lavcopts vcodec=mpeg2video:vpass=2:vrc_buf_size=1835:vrc_maxrate=9800:vbitrate=5000:keyint=18:vstrict=0:acodec=ac3:abitrate=192:aspect=16/9 -ofps 30000/1001 -o ntscdvd.mpg "mf://snap*.bmp" -mf fps=25 -audiofile test.mp3

解釋:兩遍壓縮,輸入圖像幀率爲25fps, 輸出幀率爲29.97fps,視頻編碼mpeg2, 音頻編碼192kbps ac3.  



任務11: 將一系列圖像文件轉換爲與PAL DVD兼容的mpeg2格式視頻文件

mencoder -oac lavc -ovc lavc -of mpeg -mpegopts format=dvd:tsaf -vf scale=720:576,harddup -srate 48000 -af lavcresample=48000 -lavcopts vcodec=mpeg2video:vpass=1:vrc_buf_size=1835:vrc_maxrate=9800:vbitrate=5000:keyint=15:vstrict=0:acodec=ac3:abitrate=192:aspect=16/9 -ofps 25 -o paldvd.mpg "mf://snap*.bmp" -mf fps=25 -audiofile test.mp3

mencoder -oac lavc -ovc lavc -of mpeg -mpegopts format=dvd:tsaf -vf scale=720:576,harddup -srate 48000 -af lavcresample=48000 -lavcopts vcodec=mpeg2video:vpass=2:vrc_buf_size=1835:vrc_maxrate=9800:vbitrate=5000:keyint=15:vstrict=0:acodec=ac3:abitrate=192:aspect=16/9 -ofps 25 -o paldvd.mpg "mf://snap*.bmp" -mf fps=25 -audiofile test.mp3

解釋:兩遍壓縮,輸入爲snap001.jpg, snap002.jpg... 和test.mp3,圖像系列的fps爲25, 輸出視頻文件的fps爲25. 視頻編碼爲mpeg2, 音頻編碼爲192kbps ac3. 



任務12: 將視頻文件轉換爲一系列圖像
用ffmpeg命令如下

ffmpeg -i test.avi snap%05d.bmp

也可以用mplayer完成同樣功能

mplayer video.avi -vo png -ss 00:00:10 -endpos 5.0 -vf crop=480:360:80:60

解釋:這裏mplayer的例子中,還提供了額外的切割選擇功能。切割的部分從0分10秒開始,到0分15秒結束,長達5秒。同時畫面也被切割,切割的位置從座標(80,60)開始,寬度480像素,高度360像素。這裏座標系以屏幕左上角爲(0,0). 



任務13: 將midi文件轉換爲mp3文件

timidity input.mid -Ow

lame -b 160 -h -k input.wav output.mp3

解釋:第一條命令使用timidity將midi轉換爲wav文件,第二條命令用lame將wav轉換爲160kbps mp3文件。 
timidity配置和安裝還是比較麻煩的。還需要額外安裝高品質的sf2聲音字體文件,配置sf2文件也異常容易出錯。總體效果還可以接受。但無法使用目前流行的vst,因此可能會被慢慢淘汰掉。 



任務14: 將一系列圖像轉換爲swf格式的flash文件(需要perl) 

flv2swf  input.flv  output.swf

解釋:有時候可能用swf來保存視頻比flv更方便。如果圖像數量不多的話,可以採用swftools來進行轉換 
如果圖像數量很多的話,首先我們用任務8中的命令將圖像轉換爲一個flv文件。然後我們可以用adobe的各種軟件很輕鬆的將flv錄像加入一個flash項目裏,最後輸出爲swf. 如果你熟悉perl的話,也可以用一個perl腳本將flv文件轉換成swf. CPAN(Perl公共模塊庫)有一個FLV::info的模塊,安裝後就可以使用flv2swf命令了。




任務15: 將mp3文件轉換爲wma文件

mplayer input.mp3 -ao pcm

ffmpeg -i audiodump.wav -acodec wmav2 -ab 128000 test.wma1

解釋:偶爾也需要這個功能的。第一步,將mp3文件轉換爲wav文件,第二步用ffmpeg將wav文件轉換爲wma. 


如果你只需要將單幅圖像如某個封面,和一個mp3合併成一個視頻文件,請參看前一篇博文。 

參考鏈接
上述命令基本上是參考了mplayer的用戶手冊,videohelp.com的論壇帖子寫的。
http://www.mplayerhq.hu/DOCS/HTML/en/encoding-guide.html
http://forum.videohelp.com/

軟件主頁
mencoder的Windows binary: http://oss.netfarm.it/mplayer-win32.php
ffmpeg的Windows binary: http://ffmpeg.arrozcru.org/builds/
Active perl的Windows版本:http://www.activestate.com/activeperl/

上述軟件被廣泛使用,其源代碼部分沒有什麼問題, 但因爲專利和版權的問題,公佈其Windows的二進制可執行文件則可能觸犯了一些國家的法律,目前合法性這個問題還比較模糊。


不知道爲何我自己無法回覆了。

wav轉 aac命令 可參考
ffmpeg -i soundtrack.wav -acodec aac -ab 128kb  output.m4a






發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章