使用Mencode.exe轉換幾乎所有的視頻文件到flv格式?

mencoder,可以從其官方網站上獲得:

http://www.mplayerhq.hu

下載完之後,修改一下環境變量,將mencoder.exe及mplayer.exe文件所在的目錄添加到path變量裏。

 

mencoder是在命令行中執行的(官網上的文檔裏的實例似乎都是linux下的)

我是計算機小白,當然只會使用windows……

開始菜單 -> 運行 -> cmd -> 回車,就打開了命令行窗口

 

這時,我們可以拿一個視頻來試試看,我用的是一個mtv,wmv格式的,文件名:APerfectMatch.wmv。

在命令行中輸入:(注意,不要從網頁上直接copy這段命令到cmd,windows的命令行似乎是不支持換行的......)

mencoder "D:/music/sk8ter_boi_300.wmv" -o "D:/output.flv" -of lavf -oac mp3lame -lameopts abr:br=56 -ovc lavc -lavcopts vcodec=flv:vbitrate=150:mbd=2:mv0:trell:v4mv:cbp:last_pred=3 -srate 22050  //註釋[w1]

按下回車後,如果你看到顯示:“mencoder 不是內部或外部命令,也不是可運行的程序,或批處理文件”,那麼說明環境變量沒有設置好

如果正常,會看到開始轉視頻,會看到一排一排的字往上翻,內容大概是這樣:

Pos: 226.8s 297f (100%) 48fps Trem: 0min 5mb a-v:-0.009 [142:56]

這裏邊的內容,我最關注的是2個括號裏面的,小括號裏應該是轉換的進度,中括號裏的內容很重要,142表示視頻比特率,56表示音頻比特率(比特率這個詞不知道用的對不對......)

轉換結束,會顯示2行文字:

Video stream: 142.564 kbit/s (17820 B/s) size: 4046677 bytes 227.080 secs 2700 frames

Audio stream: 56.938 kbit/s (7117 B/s) size: 1616197 bytes 227.082 secs

這2行信息我想大家都能明白,其中我一直關注的是那個142.564kbit/s,用過flash8自帶轉換工具的應該知道高級設置裏有個選項是最大數據速率,當選中中等畫質的時候,是400kb/s,而低品質也是150kb/s,也就是說,用那句命令轉換的視頻,其畫質都不如品質的,那麼,品質怎麼樣呢?看一下,怎麼看flv文件?別忘了我們有萬能播放器mplayer,哈哈,直接在命令行裏輸入:

mplayer "d:/output.flv",看到咱們剛剛轉好的視頻,我當時一看,畫面上馬賽克倒是沒有,全是瓷磚,我暈倒...

進入正題了,怎麼來提高畫面品質?(暈倒,原來前面都不是正題...=_=o)

回頭看一下我們的命令行:

mencoder "D:/music/sk8ter_boi_300.wmv" -o "D:/output.flv" -of lavf -oac mp3lame -lameopts abr:br=56 -ovc lavc -lavcopts vcodec=flv:vbitrate=150:mbd=2:mv0:trell:v4mv:cbp:last_pred=3 -srate 22050。

下面一個一個分析:

mencoder 說明你用的是mencoder;

"d:/.....wmv" -> 是指你的輸入視頻;

-o -> 後面指定輸出路徑;(前面有“-”的都是option(選項的意思))

-of -> 大概是output format的縮寫,輸出文件格式,咦!爲什麼不是flv,而是lavf?lavf表示你使用了libavcodec裏的格式,flv正好是libavcodec裏的,呵呵;

-oac -> 大概是output audio codec的縮寫,指定輸出音頻編碼,這兒選用的是mp3lame;

-lameopts -> 指定lame的options,就是設置音頻輸出的一些參數啦,我只關心視頻,跳過

-ovc -> 大概是output video codec的縮寫,制定輸出視頻編碼(我最關心的好像要上場了),選用的lavc,什麼意思?說是用了libavcodec的編碼器;

-lavcopts -> 是lavc的options,要設置視頻編碼的參數了!(心跳加速,血壓升高,口中開始大量分泌唾液),看看它後面都有什麼:

codec=flv 說的是用的flv編碼器,這個咱不理;

vbitrate=150 video bit rate!視頻數據速率!就是它了!原來我設的是150啊!

找到了,下面不看了!改成vbitrate=1000,再試試看!

結果,和前一次一模一樣......(我還改成10000的,真的,還是一樣,我當時以爲它的單位是b/s而不是kb/s)

冷靜下來,去往上看了一下官方文檔,這個參數是最大數據速率,最大嘛,你設多大都一樣啊,看來不是靠它來控制品質。

不賣關子了,直接給出我的結論吧,設置品質有2種途徑:

1、設置-lavcopts,看這樣一句命令:

mencoder "D:/music/APerfectMatch.wmv" -o "D:/output.flv" -of lavf -oac mp3lame -lameopts abr:br=56 -ovc lavc -lavcopts vcodec=flv:vbitrate=500:mbd=2:mv0:trell:v4mv:cbp:last_pred=3:dia=4:cmp=6:vb_strategy=1 -vf scale=320:240,expand=320:240:::1,crop=320:240:0:0 -ofps 30 -srate 22050

看看多了什麼?

在-lavcopts裏多了dia=4:cmp=6:vb_strategy=1這3條

他們的含義我只是大概瞭解一點點,畢竟不是專業搞視頻編碼的

dia越大品質越高,如果需要快速編碼,設置爲-1,設爲4時已經很有利於品質了;

cmp越大品質越高,默認值0,是最快速的,一般設到3,設爲6已經只會細微提高品質了,但速度會慢

vb_strategy,大概是1或者0,默認值可能爲0,我這裏設爲1,會對編碼有幫助,這個參數我自己沒有過多推敲,可能並不影響品質......

2、加-sws選項,看下面的命令:

mencoder "D:/music/APerfectMatch.wmv" -o "D:/output.flv" -of lavf -oac mp3lame -lameopts abr:br=56 -ovc lavc -lavcopts vcodec=flv:vbitrate=500:mbd=2:mv0:trell:v4mv:cbp:last_pred=3 -sws 3 -vf scale=320:240,expand=320:240:::1,crop=320:240:0:0 -ofps 30 -srate 22050

只是加一個 -sws 3進去,轉換後的效果和前面一種方法大致相同,視頻數據速率都是422.5kb/s左右,解釋一下

-sws就是用來設置品質的,默認值爲2,那麼,爲什麼不用這種簡單的方式呢?我個人認爲,用前面一種方法有利於找到一個速度和品質的平衡點,畢竟變化的範圍比較大。

其他一些選項,我也沒有深入研究。

 

 

 

 

 

 

請先下載mencoder.exe

 

命令行參數:

 

mencoder D:/Asp.Net開發/99yin_com/video_file/admin/46cd7af4-0176-4e91-bb51-fb68bbf8c26a.rm -ffourcc FLV1 -lavfopts i_certify_that_my_video_stream_does_not_use_b_frames -of lavf -oac mp3lame -lameopts aq=9:cbr:br=64:vol=2 -ovc lavc -lavcopts vcodec=flv:acodec=mp3:abitrate=56 -vf scale=320:270,expand=320:270:::1,crop=320:270:0:0 -ofps 18 -srate 22050 -o D:/Asp.Net開發/99yin_com/video_file/admin/46cd7af4-0176-4e91-bb51-fb68bbf8c26a.flv

 

這是用mencoder轉換的 效果很ok 320 270可以自己根據網站的視頻窗口大小 自行調整

 

 

關於截圖的問題大家可以自己用ffmpeg或者直接用mencoder進行截圖 我正在研究. 等有結果我會發出mencoder截圖的命令行參數.

 

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