mencoder 音视频格式转换
參考:mencoder_百度百科mencoder 是一款命令行方式的視頻處理軟件,是Mplayer自帶的編碼工具(Mplayer是Linux下的播放器,開源,支持幾乎所有視頻格式的播放,有windows和Mac版本)。https://baike.baidu.com/item/mencoder/9960724?fr=aladdin
例子: 將movie.wmv 轉(zhuǎn)成 movie.avi?
mencoder movie.wmv -o movie.avi -ovc lavc -oac lavc參數(shù)說明:
movie.wmv?? 原始文件
-o <filename>??? 輸出文件 (output )
-ovc <video codec>?OVC 輸出 后的視頻格式 ,ovc :output video ..
-oac <audio codec>?? 輸出后的音頻格式
或許你會說記不住 lavc 等音頻格式,視頻格式,你根本不用去記
?當(dāng)你的選項中缺少-oac 時它會提示
$?mencoder?a.mpg?-o?b.avi?? MEncoder?SVN-r29796-4.4.3?(C)?2000-2009?MPlayer?Team?? 成功:格式:0??數(shù)據(jù):0x0?-?0xca9800?? 檢測到?MPEG-PS?文件格式。?? VIDEO:??MPEG1??320x240??(aspect?1)??23.976?fps????0.0?kbps?(?0.0?kbyte/s)?? [V]?文件格式:2??fourcc:0x10000001??大小:320x240??幀速:23.976??幀時間:=0.0417?? 沒有選擇音頻編碼器(-oac)。請選擇一個編碼器(參見?-oac?help)或者使用?-nosound。?? 正在退出..?? ?這個時候你只需輸入
mencoder -oac help就會給出如下提示
$?mencoder?-oac?help?? MEncoder?SVN-r29796-4.4.3?(C)?2000-2009?MPlayer?Team?? Available?codecs:??copy?????-?frame?copy,?without?re-encoding?(useful?for?AC3)??pcm??????-?uncompressed?PCM?audio??mp3lame??-?cbr/abr/vbr?MP3?using?libmp3lame??lavc?????-?FFmpeg?audio?encoder?(MP2,?AC3,?...)??twolame??-?Twolame?MP2?audio?encoder??faac?????-?FAAC?AAC?audio?encoder?? copy?表示直接把源視頻中的音頻部分不經(jīng)解碼直接copy?到新文件??? mp3lame??:表示mp3?編碼音頻?? ?任務(wù)1:??延遲視頻 部分 (對avi文件有效)
mencoder -delay 0.7 -oac copy -ovc copy input.avi -o output.avi
解釋?:讓視頻軌比當(dāng)前的音頻軌落后0.7秒鐘
任務(wù)2:???延遲音頻 部分(對avi文件有效)
mencoder -oac copy -ovc copy -audio-delay -0.7 input.avi -o output.avi
解釋?:讓音頻軌比當(dāng)前的視頻軌落后0.7秒鐘
任務(wù)3:??切割視頻軌
mencoder -ss 00:00:10 -endpos 60 -ovc copy -oac copy input.avi -o output.avi
解釋?:切割視頻部分,從0分10秒開始,到1分10秒,時間長度為60秒。將結(jié)果存儲為output.avi?
任務(wù)4:???連接兩段 視頻 (必須比特率相同)
mencoder -oac copy -ovc copy -idx -o output.avi input1.avi input2.avi
解釋?:
任務(wù)5:???將一系列 靜止圖像和一個mp3文件轉(zhuǎn)換為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。
任務(wù)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秒結(jié)束,長度102.5秒。用戶需自己計算切割部分,設(shè)定上述參數(shù)。?
第二步:用sox對音頻開頭3秒鐘做一個淡入效果(聲音逐漸增強)
第三步:用sox對音頻結(jié)束3.5秒鐘做一個淡出效果(聲音逐漸衰減)
第四步:將lame處理好的音頻重新編碼成160kbps的mp3文件
其中,第二、第三步是可以省略的。?
任務(wù)7:???將wma 文件轉(zhuǎn)換為mp3文件
mplayer input.wma -ao pcm
lame audiodump.wav -o output.mp3 -b 160
解釋?:一共兩條命令。第一條將wma轉(zhuǎn)化為wav文件,第二條再將wav轉(zhuǎn)換為mp3文件,比特率為160kbps.?
任務(wù)8:???將一系列 圖像文件轉(zhuǎn)換為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"轉(zhuǎn)換成fps=25的錄像。音頻采樣率設(shè)定為22050,視頻畫面大小為448x336, 視頻的比特率為260kbps。?
如果你希望更改視頻中的keyframe, 你可以在第一條命令執(zhí)行后,手動編輯一個divx2pass.log文件。文件中"Type:1"表示關(guān)鍵幀keyframe (或者叫i frame), "Type:2"表示p-frame,就是只記錄相鄰幀變化部分的幀。?
任務(wù)9:???將一系列 圖像文件轉(zhuǎn)換為ogg視頻文件
ffmpeg2theora -f image2 snap%05d.bmp -V 320 -o output.ogg
解釋?:ogg錄像還是有點用的,wikipedia, wikimeida都在用。 上面的視頻比特率為320kbps
任務(wù)10:???將一系 列圖像轉(zhuǎn)化為與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. ?
任務(wù)11:???將一系 列圖像文件轉(zhuǎn)換為與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.?
任務(wù)12:???將視頻 文件轉(zhuǎn)換為一系列圖像
用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秒結(jié)束,長達5秒。同時畫面也被 切割,切割的位置從坐標(biāo)(80,60)開始,寬度480像素,高度360像素。這里坐標(biāo)系以屏幕左上角為(0,0).?
任務(wù)13:???將 midi文件轉(zhuǎn)換為mp3文件
timidity input.mid -Ow
lame -b 160 -h -k input.wav output.mp3
解釋?:第一條命令使用timidity將midi轉(zhuǎn)換為wav文件,第二條命令用lame將wav轉(zhuǎn)換為160kbps mp3文件。?
timidity配置和安裝還是比較麻煩的。 還需要額外安裝高品質(zhì)的sf2聲音字體文件,配置sf2文件也異常容易出錯。總體效果還可以接受。但無法使用目前流行的vst,因此可能會被慢慢淘汰 掉。?
任務(wù)14:???將一系 列圖像轉(zhuǎn)換為swf格式的flash文件(需要perl)?
flv2swf ?input.flv ?output.swf
解釋?:有時候可能用swf來保存視頻比flv更方便。如果圖像數(shù)量不多的話,可以采用swftools來進行轉(zhuǎn)換?
如果圖像數(shù)量很多的話,首先我們用?任務(wù)8?中的命令將圖像轉(zhuǎn)換為一個flv文件。 然后我們可以用adobe的各種軟件很輕松的將flv錄像加入一個flash項目里,最后輸出為swf.?如果你熟悉perl的話,也可以用一 個perl腳本將flv文件轉(zhuǎn)換成swf. CPAN(Perl公共模塊庫)有一個FLV::info的模塊,安裝后就可以使用flv2swf命令了。
任務(wù)15:???將 mp3文件轉(zhuǎn)換為wma文件
mplayer input.mp3 -ao pcm
ffmpeg -i audiodump.wav -acodec wmav2 -ab 128000 test.wma1
解釋?:偶爾也需要這個功能的。 第一步,將mp3文件轉(zhuǎn)換為wav文件,第二步用ffmpeg將wav文件轉(zhuǎn)換為wma.?
如果你只需要將單幅圖像如某個封面,和一個mp3合并成一個視頻文件,請參看前一篇博文。?
將一幅圖像和一個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
sox:??http://sox.sourceforge.net/
ffmpeg2theora:??http://v2v.cc/~j/ffmpeg2theora/
cpan:??http://search.cpan.org/dist/FLV-Info/
Active perl的Windows版本:?http://www.activestate.com/activeperl/
上述軟件被廣泛使用,其源代碼部分沒有什么問題, 但因為專利和版權(quán)的問題,公布其Windows的二進制可執(zhí)行文件則可能觸犯了一些國家的法律,目前合法性這個問題還比較模糊。
不知道為何我自己無法回復(fù)了。
wav轉(zhuǎn) aac命令?可參考
ffmpeg -i soundtrack.wav -acodec aac -ab 128kb ?output.m4a
其它例子:
例一:
mencoder basket.rm -ovc lavc -oac lavc -o basket.avi
把basket.rm文件轉(zhuǎn)換為basket.avi文件,其中,?視頻?轉(zhuǎn)換為mp4格式,音頻轉(zhuǎn)換為
mp2格式。"-o basket.avi"定義轉(zhuǎn)換成的文件名為"basket.avi","-ovc lavc"表示
用默認的mp4格式編碼圖象,"-oac lavc"表示用默認的mp2格式編碼聲音。
例二:
mencoder basket.rm -ovc lavc -oac mp3lame -o basket.avi
"oac mp3lame"表示用mp3格式編碼聲音。
例三:
mencoder basket.rm -ovc lavc -oac mp3lame -o basket.avi -ss 5:00 -endpos
8:00
"-ss 5:00 -endpos 8:00"告訴mencoder僅僅轉(zhuǎn)換從5分0秒到13分0秒的片段。
例四:
mencoder basket.avi -ovc copy -oac copy -o newbasket.avi -ss 5:00
-endpos 8:00
"-ovc copy"表示不作?視頻?轉(zhuǎn)換,"-oac copy"表示不作音頻轉(zhuǎn)換。這個命令把
basket.avi文件中的5分0秒到13分0秒的部分拷貝到newbasket.avi文件中。
例五:
mencoder a1.avi a2.avi -ovc copy -oac copy -o asum.avi
這個命令把a1.avi和a2.avi文件?合并?為asum.avi文件。
例六:
mencoder basket.rm -ovc lavc -oac lavc -lavcopts vbitrate=100 -lavcopts
abitrate=32 -o basket.avi
限制目的文件的大小。目的文件中,一秒種圖象占用100kbit空間,一秒鐘聲音占用
32kbit空間。較小的目標(biāo)文件大小,一般意味著較低的圖象和聲音的質(zhì)量。
總結(jié)
以上是生活随笔為你收集整理的mencoder 音视频格式转换的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 论文中英文摘要、目录、每章的页眉不同,页
- 下一篇: 区块链测试(一):测试人员初学区块链