視頻轉換工具-mencoder命令行參數

   因爲剛好有些視頻要轉,google了一下,網上有很多Ubuntu視頻轉換工具mencoder的介紹,使用以後,覺得有必要彙總一下,留以他用。 feedom.net

    CODE:
mencoder [options] file1 [specific options] [file2] [specific options]
mencoder src.avi -o dst.avi -vf scale=320:240 -oac copy -ovc lavc -lavcopts vcodec=mpeg4:vbitrate=500
# src.avi 原文件
# -o dst.avi 定義壓縮爲dst.avi
# -vf scale=320:240,調整視頻尺寸到320x240;
# -oac copy,指定音頻編碼器,copy是指不壓縮,直接使用源文件裏的音頻。copy換成 mp3lame,即壓縮成mp3。
# -ovc lavc,指定視頻編碼器,使用libavcodec編碼器;
# -lavcopts vcodec=mpeg4:vbitrate=500,指定libavcodec的參數,vcodec=mpeg4指使用mpeg4壓縮,就是DivX,vbitrate=500指500kbps的比特率。

    CODE:
mencoder src.avi -o dst.flv -of lavf -oac mp3lame -lameopts abr:br=32:mode=3 -ovc lavc i_certify_that_my_video_stream_does_not_use_b_frames -vf scale=350:-3 -sws 2

    # src.avi 輸入文件路徑,是Mplayer能支持的格式即可
# -o dst.flv 輸出路徑
# -of lavf 輸出格式 lavf表示libavcodec
# -oac mp3lame 輸出音頻編碼方式,lame是最好的mp3編碼器
# -lameopts abr:br=32:mode=3 abr代表平均碼率,相對於cbr(固定碼率)和vbr(可變碼率,貌似不支持),br就是音頻的碼率,越高音質越好,mode=3,0-3分別代表 Stereo,Joint Stereo,Force ms_stereo,Mono(默認爲自動,事實上1和3對文件大小的影響並不是很大),另外可選的還有 vol(音量,取值0-10,數值越大音量越大,不建議修改)等
# -srate 22050 聲音採樣頻率設置,也可以選11025,文件可以稍小一點
# -ovc lavc 輸出視頻編碼 lavc就是libavcodec
# -lavcopts codec=flv flv格式壓縮 vbitrate=150 視頻碼率
# -vf scale=350:-3 -sws 2 縮放視頻,指定寬度爲350,高度按比例來。質量由-sws選項控制,具體看手冊
# -ofps 23 設定幀數,縮小幀數對節約文件大小效果不明顯,且可能造成畫面聲音同步。建議不設置

    CODE:
mencoder -srate 22050 -vf scale=208:-3 -ofps 12 -oac mp3lame -lameopts mode=3:cbr:br=24 -ovc lavc -ffourcc DX50 -lavcopts vcodec=mpeg4:vhq:vbitrate=112 src.avi -o dst.avi
# -srate 22050 聲音採樣頻率設置,現爲22K
# -vf scale=208:-3 寬度爲208,高度自動調整保持比例;-vf scale=-3:176寬度自動調整保持比例,高度爲176;如果想保持原來的大小可以不要這個參數
# -ofps 12 幀速率設置,現爲12fps
# -oac mp3lame 音頻採用mp3編碼
# -lameopts mode=3:cbr:br=24單聲道,音頻碼率爲24kbps;-lameopts mode=0:cbr:br=24立體聲,音頻碼率爲24kbps; 還可設置音量,-lameopts mode=3:cbr:br=32:vol=1,設置範置爲1~10,但不宜設得太高
# -ovc lavc -ffourcc DX50 -lavcopts vcodec=mpeg4:vhq:vbitrate=112採用高質DivX視頻編碼,視頻碼率爲112kbps;
# -ovc xvid -xvidencopts bitrate=112採用XviD視頻編碼

    音頻:動態碼率,質量6 (0-9,0最好),編碼:mp3,採樣:32000Hz,音頻算法:7
視頻:動態碼率,質量 8(0-31,0最好),編碼:xvid,尺寸:不改變大小

    CODE:
mencoder -oac mp3lame -lameopts aq=7:vbr=2:q=6 -srate 32000 -vf harddup -ovc xvid -xvidencopts fixed_quant=8 src.avi -o dst.avi

    音頻:動態碼率,質量6 ,編碼:mp3,採樣:32000Hz,音頻算法:7
視頻:動態碼率,質量 8 ,編碼:xvid,尺寸:320:240

    CODE:
mencoder -oac mp3lame -lameopts aq=7:vbr=2:q=6 -srate 32000 -vf scale=320:240,harddup -ovc xvid -xvidencopts fixed_quant=8 src.avi -o dst.avi

    音頻:固定碼率,編碼:64kbps,採樣:32000Hz ,音頻算法:7
視頻:動態碼率,質量 4(高) ,編碼:xvid

    CODE:
mencoder -oac mp3lame -lameopts aq=7:cbr:br=64 -srate 32000 -vf harddup -ovc xvid -xvidencopts fixed_quant=4 src.avi -o dst.avi

    音頻:動態碼率,質量 4 (0-9,0最好),編碼:mp3,採樣:32000Hz,音頻算法:7
視頻:動態碼率,質量 8(0-31,0最好),編碼:xvid,尺寸:原尺寸

    CODE:
mencoder -oac mp3lame -lameopts aq=7:vbr=2:q=4 -srate 32000 -vf harddup -ovc xvid -xvidencopts fixed_quant=8 src.avi -o dst.avi

Ps: I didn't test the result! Attentions please!

mencoder轉flv並添加字幕

mencoder Sample.avi -o Sample.flv -of lavf -oac mp3lame -lameopts abr:br=32:vol=1 -ovc lavc -lavcopts vcodec=flv:vbitrate=220:mbd=2:mv0:trell:v4mv:cbp:last_pred=3:vb_strategy=1 -sws 3 -vf harddup,scale=384:-2 -ofps 24 -srate 22050 -sub boxue123.srt -font simhei.ttf -subfont-text-scale 3 -subfont-outline 2 -subfont-blur 2 -subpos 10 -subcp CP936
字幕相關參數:
-sub boxue123.srt     srt字幕文件路徑;
-font simhei.ttf     字體文件的路徑;
-subfont-text-scale 3    字體縮放;
-subfont-outline 2     字體輪廓;
-subcp CP936     應該是字體編碼;
-subfont-blur 2    字體模糊;
-subpos 10    字體顯示垂直方向的位置;

 

 

實現mencoder轉換加字幕是從網上一篇文章winmenc給視頻加字幕的文章中得到的靈感,而winmenc內核就是mencoder,當時我想能不能通過這個功能實現字幕呢,比如我的字幕從頭到位都是一句話。於是baidu google了半天,最後終於發現了關於配字幕上去的命令參數

於是。。。
1.準備好一個srt字幕,網上有得下,隨便下一個即可,把時間改成00:00:00,000 –> 00:50:20,000,當然後面的時間你設多長都可以,超過你轉換的視頻長度即可。
2.準備好一個字體文件,目前我的這種方法測試過,不支持中文,支持中文的話必須把字幕給帶上。
3.開始mencoder的轉換,具體命令如下
C:mencoder>mencoder “c:1.avi” -o “c:1.flv” -of lavf -oac mp3lame -lameopts abr:br=56 -ovc lavc -lavcopts vcodec=flv:vbitrate=500:mbd=2:mv0:v4mv:last_pred=3 -subpos 5 -subfont-text-scale 10 -unicode -font “c:arial.ttf” -sub “c:1.srt” -lavfopts i_certify_that_my_video_stream_does_not_use_b_frames -srate 22050

前面的我就不說了,具體參數參見小魚的關於mencoder轉換控制視頻質量。
重點說後面的
subpos 是說明字幕的位置:垂直方向上越大越靠下,水平方向的參數我沒找到,最小0,最大100
subfont-text-scale 設置字體的大小
-unicode 文字編碼方式,其他的沒試過
-font 字體文件
-sub 你的字幕文件
順便這裏感謝一句,剛開始轉FLV的時候,老是轉不了,閃客互聯的哪位大哥那篇文章幫了我一把,說有時候得加上那一句,具體什麼作用不太清楚,但是卻是搞定了

然後開始轉把,速度很快的
目前還在繼續測試參數中,哪位高人還有其他參數的可以放上來大家一起學習一下哈
個人水平有限,望高人多多指點。
順便藉此機會求教一下:現在正在研究自動隊列轉換,目前卡在瞭如何判斷mencoder的狀態,是成功還是失敗,還是卡住了?誰能幫忙給我個方法獲得mencoder的返回值?
還有ffmpeg有沒有有代碼比較全的編譯好的版本啊,本人linux不會,看不到網上的編譯方法。。。或者能交我怎麼編譯一下。請加我qq 35589997 萬分感激!!!
第一次處女帖,加上原創,版主是不是給點獎勵什麼的

 

 

在ubuntu下,可以十分簡單的安裝好mplayer和mencoder,沒有安裝的時候,按照提示可以輸入萬能的sudo apt -get ***,就解決問題了。所以用起來很順手啊~~

      我利用mencoder主要乾的兩個事情就是視頻的分割和合並。如果要對視頻進行分割,最好提前知道它的總時間長度,而mplayer提供了這個命令。

      獲得視屏文件相關信息的命令爲: mplayer -identify fileName -nosound -vc dummy -vo null

      一 我首先對一個avi格式的視頻文件進行了分割和合並,視頻文件的名字爲1.avi。

             分割命令爲: mencoder fileName -ovc copy -oac copy -o outputFile -ss BeginTime -endpos LastTime

             我開始不知道在endpos後面接的參數何意,時間區間到底是[beginTime,lastTime]還是[beginTime,  beginTime+lastTime],通過我的實驗發現,後一個是正確的,也就說LastTime解釋爲持續時間。例如50秒的視頻文件的分割參數可以爲(0:00, 0:20),(0:21,0:20),(0:42,0:18)。ok,接下來一切就順利了。

             合併命令: mencoder file1Name file2Name ... filenName -ovc copy -oac copy -o outputFileName

             在合併之後,發現合併的副本視頻文件的總時間雖然和源文件的一樣,但是大小變化了。不過還好,用播放器打開副本視頻文件,肉眼基本看不出什麼太大的問題。

             我的下一個任務就是研究一種視頻文件格式,能夠創建一個空白的視頻文件,要有完整的頭部,最重要的就是當播放器打開的時候,有總時間的顯示。而且我能夠修改這個總時間。

              看了下avi的格式,我的天~~自己太愚鈍了,所以gg了,想着去看看最流行的flv格式。

              好了,下面就是flv格式視頻文件的分割和合並了。

     二 flv格式視頻文件的分割和合並

              在flv文件的分割和合並之前,很重要的一件事情就是進行視頻格式的轉換。視頻格式轉換命令如下:

              mencoder fileName -of lavf -ofps 24 -ovc lavc -lavcopts vcodec=flv:acodec=mp3:abitrate=56 -srate 22050 -oac mp3lame   -o  outputFileName

              我開始轉換的時候沒有加上 -of lavf -ofps 24 -ovc lavc -lavcopts vcodec=flv:acodec=mp3:abitrate=56導致轉換的視頻中,裏面的視頻流和音頻流不匹配。

              轉換好了之後,分割命令爲:

              mencoder fileName -ovc copy -oac copy -of lavf -lavfopts format=flv -o outputFileName -ss BeginTime -endpos LastTime

              合併命令爲:

              mencoder file1Name file2Name ... filenName -ovc copy -oac copy -of lavf -lavfopts format=flv -o outputFileName

              雖然能夠成功的分割和合並,但是有個重要的問題就是,合併的副本視頻文件大小比原來小多了,利用播放器打開視頻文件,發現其中有效果模糊的情況,可能是在合併的時候出現了掉幀的情況。這個問題一時還沒有想到解決的方法,上網搜了下在windows下可以用copy命令,我搞之,結果failed。後來baidu才知道,原來並不是能用copy合併所有視頻文件,只對只有MPG、AVI等可以(萬惡的托拉斯!)。目前的問題有兩個,搞定flv格式,能夠隨心建立空的flv文件;第二個就是我要不要把視頻文件格式定義爲mpg,這樣還能用copy命令,就沒有效果模糊丟幀的情況了,不過只要我搞定了flv格式的文件,我可以手動的進行文件的合併,這樣也是十分可行的方案~

還有:

http://hi.baidu.com/wagcag/blog/item/c1d5608b53b52611c9fc7a08.html

http://xxbin.com/2008m11/flv-for-mencoder/

 

http://www.cnblogs.com/haibindev/archive/2011/11/07/2238926.html

 

 


 

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