- 視頻格式轉換
- 音頻格式轉換
- 切割視頻及音頻
- 連接兩段視頻
- 視頻音頻同步
- 將圖像系列轉換成視頻
ffmpeg 15條使用命令
帖子比較長,建議Ctrl+D bookmark一下,或者提交到別的什麼Social bookmark sites,不想看mencoder/ffmpeg詳細技術手冊的,可以把它當快速簡易參考看,主要的功能有:
任務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/
lame的Windows binary: http://lame.sourceforge.net/links.php
ffmpeg2theora: http://v2v.cc/~j/ffmpeg2theora/
Active perl的Windows版本:http://www.activestate.com/activeperl/
上述軟件被廣泛使用,其源代碼部分沒有什麼問題, 但因爲專利和版權的問題,公佈其Windows的二進制可執行文件則可能觸犯了一些國家的法律,目前合法性這個問題還比較模糊。
不知道爲何我自己無法回覆了。
wav轉 aac命令 可參考
ffmpeg -i soundtrack.wav -acodec aac -ab 128kb output.m4a
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.