2014年10月26日 星期日

mencoder/mplayer/ffmpeg 命令的使用大全

mencoder/mplayer/ffmpeg 命令的使用大全


 


資料來源:http://waynerqiu.com/7/216.html


 


Mencoder flv 
mencoder -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:vbitrate=200:acodec=mp3:abitrate=56 -vf scale=320:270,expand=320:270:::1,crop=320:270:0:0 -ofps 18 -srate 22050 input.xxx -o output.flv




Mencoder
avi 
mencoder.exe -oac mp3lame -lameopts aq=7:cbr:br=64 -srate 32000 -vf scale=220:176 -ovc lavc -ffourcc DX50 -lavcopts vcodec=mpeg4:vbitrate=320 "input.xxx" -o "output.avi"
 


 


mencoder -oac mp3lame -lameopts aq=7:cbr:br=64 -srate 32000 -vf scale=220:176 -ovc lavc -ffourcc DX50 -lavcopts vcodec=mpeg4:vbitrate=320 "input.xxx" -o "output.avi"



mencoder -oac mp3lame -lameopts aq=7:cbr:br=64 -srate 22050  -vf scale=320:-3 -ovc xvid -xvidencopts bitrate=600     "wmv.wmv" -o "wmv.avi"  
 


 


mencoder -oac lavc -lavcopts acodec=mp2:abitrate=64 -srate 22050  -vf scale=320:-3 -ofps 15 -ovc xvid -xvidencopts bitrate=400  rmvb.rmvb -o rmvb.avi

mencoder 1.rmvb -oac mp3lame -lameopts preset=64 -ovc xvid -xvidencopts bitrate=600 -of avi -o rmvb.avi


 



Mencoder wmv  
FLV
mencoder ../v/wmv.wmv -o ../v/wmv-3.flv -of lavf -oac mp3lame -lameopts abr:br=56 -srate 22050 -ovc lavc -lavcopts vcodec=flv:vbitrate=500:mbd=2:mv0:trell:v4mv:cbp:last_pred=3


RMVB
FLVCODE
mencoder -vf scale=320:240 -ffourcc FLV1 -of lavf -lavfopts i_certify_that_my_video_stream_does_not_use_b_frames -ovc lavc -lavcopts vcodec=flv:vbitrate=200 -srate 22050 -oac lavc -lavcopts acodec=mp3:abitrate=56 ok/1.rmvb -o ok/rmvb.flv


利用ffmpeg的這兩個參數,可以控制讓ffmpeg來將一個大video劈分成許多小段的獨立播放的文件。
-ss time_off        set the start time offset
-t duration         set the recording time

Mencoder
截段參數:
-ss 0
 
-endpos 120


 


 


 


 



FFmpeg
3gp:
ffmpeg -y -i **.** -ac 1 -acodec amr_nb -ar 8000 -ab 24 -s 128x96 [-vcodec mpeg4] -b 40k -r 8 **.3gp



FFmpeg
flv:
ffmpeg -i inputfile.xxx -ab 56 -ar 22050 -qmin 2 -qmax 16 -b 320k -r 15 -s 320x240 outputfile.flv



FFmpeg截圖參數 
對視頻檔截圖: 
ffmpeg -i xxx.xxx -y -f image2 -ss 8 -t 0.001 -s 350x240 xxx.jpg
 

對已有flv截圖: 
ffmpeg -i xxx.flv -y -f image2 -ss 8 -t 0.001 -s 350x240 xxx.jpg
 

把視頻的前30幀轉換成一個Gif  
ffmpeg -i xxx.xxx -vframes 30 -y -f gif xxx.gif
 

截取從10秒開始持續10秒的片段

FFmpeg 加浮水印參數:
ffmpeg -i inputfile.xxx -tagpict ":220:210" -ab 56 -ar 22050 -qmin 2 -qmax 16 -b 320k -r 15 -s 320x240 outputfile.flv



浮水印參數說明:
-tagpict ":220:210"
 
(在ffmpeg所在目錄中尋找0002.mjpgmask.mjpg兩個用作浮水印處理的圖片檔,然後在指定的座標,比如此處的:220:210,把浮水印在轉碼過程中添加到視頻檔的每一楨上)



AviSynth加浮水印:
首先ffmpeg/Mencoder編譯時需要--enable-avisynth
轉換參數:ffmpeg -y -i 1.avs -b 320k rmvb-avs.flv
1.avs
編寫格式:
video = DirectShowSource("rmvb.rmvb",15).BilinearResize(320,240)
logo = ImageSource("logo2.jpg")
logomask = ImageSource("mask2.jpg")
overlay(video,logo,mask=logomask)


mencoder flv 同時加字幕浮水印 

試了一下,可以加進去,但有些參數還設置不好.比如中文的字幕只顯示成"_____",檔的各項設置
cd mencoder
mencoder ../file/test.mov -o ../flv/zbzbzb.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 ../file/test.srt -lavfopts
 
i_certify_that_my_video_stream_does_not_use_b_frames -srate 22050
 
pause

上面是在一個批次檔案中執行的,所以寫成這樣子

subpos
是說明字幕的位置:垂直方向上越大越靠下,水準方向的參數我沒找到,最小0,最大100
subfont-text-scale
設置字體的大小
-unicode
文字編碼方式,其他的沒試過
-font
字體檔
-sub
你的字幕文件



例子:ffmpeg -y -i "1.avi" -title "Test" -vcodec xvid -s 368x208 -r 29.97 -b 1500 -acodec aac -ac 2 -ar 24000 -ab 128 -vol 200 -f psp -muxvb 768 "1.***" 

解釋:以上命令可以在Dos命令行中輸入,也可以創建到批次檔案中運行。不過,前提是:要在ffmpeg所在的目錄中執行(轉換君所在目錄下麵的cores子目錄)。 
參數: 
-y
(覆蓋輸出檔,即如果1.***檔已經存在的話,不經提示就覆蓋掉了) 
-i "1.avi"
(輸入檔是和ffmpeg在同一目錄下的1.avi檔,可以自己加路徑,改名字) 
-title "Test"
(在PSP中顯示的影片的標題) 
-vcodec xvid
(使用XVID編碼壓縮視頻,不能改的) 
-s 368x208
(輸出的解析度為368x208,注意片源一定要是16:9的不然會變形) 
-r 29.97
(幀數,一般就用這個吧) 
-b 1500
(視頻資料流程量,用-b xxxx的指令則使用固定碼率,數位隨便改,1500以上沒效果;還可以用動態碼率如:-qscale 4-qscale 64的品質比6高) 
-acodec aac
(音頻編碼用AAC 
-ac 2
(聲道數12 
-ar 24000
(聲音的採樣頻率,好像PSP只能支援24000Hz 
-ab 128
(音頻資料流程量,一般選擇326496128 
-vol 200
200%的音量,自己改) 
-f psp
(輸出psp專用格式) 
-muxvb 768
(好像是給PSP機器識別的碼率,一般選擇384512768,我改成1500PSP就說文件損壞了) 
"1.***"
(輸出檔案名,也可以加路徑改檔案名) 


 


 


 


得用mplayer 生成一系列的圖片

mplayer  -vo jpeg girl_song.flv
 
mplayer  -vo png girl_song.flv
 
mplayer  -vo gif girl_song.flv
 

可以加一個-ss 參數表示從第幾秒開始截圖 

mplayer   -ss 55 -vo gif girl_song.flv
 

mplayer   -ss 00:01:23 -vo gif girl_song.flv  
從第一分23秒截

q 鍵退出


可以輸入 mplayer -vo help   查看幫助


 


 


example: movie.wmv 轉成movie.avi


mencoder movie.wmv -o movie.avi -ovc lavc -oac lavc


 


 


Here's an explanation each option being passed: 
•movie.wmv  
原始檔 
•-o <filename>    
輸出檔output  
•-ovc <video codec> OVC
輸出後的視頻格式ovc :output video .. 
•-oac <audio codec>  
輸出後的音頻格式

或許你會說記不住 lavc 等音頻格式,視頻格式,你根本不用去記

當你的選項中缺少-oac 時它會提示




[c-sharp] view plaincopy
01.jixiuf@jf /tmp/d $ mencoder  a.mpg  -o b.avi  
02.MEncoder SVN-r29796-4.4.3 (C) 2000-2009 MPlayer Team  
03.
成功:格式:0  數據:0x0 - 0xca9800  
04.
檢測到 MPEG-PS 檔格式。  
05.VIDEO:  MPEG1  320x240  (aspect 1)  23.976 fps    0.0 kbps ( 0.0 kbyte/s)  
06.[V]
檔格式:2  fourcc:0x10000001  大小:320x240  幀速:23.976  幀時間:=0.0417  
07.
沒有選擇音頻編碼器(-oac)。請選擇一個編碼器(參見 -oac help)或者使用 -nosound  
08.
正在退出..  


這個時候你只需輸入

mencoder -oac help
就會給出如下提示




[c-sharp] view plaincopy
01.jixiuf@jf /tmp/d $ mencoder  -oac help  
02.MEncoder SVN-r29796-4.4.3 (C) 2000-2009 MPlayer Team  
03.Available codecs:  
04.   copy     - frame copy, without re-encoding (useful for AC3)  
05.   pcm      - uncompressed PCM audio  
06.   mp3lame  - cbr/abr/vbr MP3 using libmp3lame  
07.   lavc     - FFmpeg audio encoder (MP2, AC3, ...)  
08.   twolame  - Twolame MP2 audio encoder  
09.   faac     - FAAC AAC audio encoder  
10.copy
表示直接把源視頻中的音頻部分不經解碼直接copy 到新檔   
11.mp3lame  :
表示mp3 編碼音頻  






任務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
解釋:切割視頻部分,從010秒開始,到110秒,時間長度為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中播放,不需要另外安裝插件。上面兩條命令,表示兩遍壓縮。為提高速度,也可以只實用第一條做單次壓縮。輸出視頻的fps25



任務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

解釋:這個過程由四條命令組成。上面的例子中,
第一步:切割部分為 159秒開始,到341.5秒結束,長度102.5秒。用戶需自己計算切割部分,設定上述參數。 

第二步:用sox對音頻開頭3秒鐘做一個淡入效果(聲音逐漸增強)
第三步:用sox對音頻結束3.5秒鐘做一個淡出效果(聲音逐漸衰減)
第四步:將lame處理好的音頻重新編碼成160kbpsmp3

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


任務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


 



15條常用的視頻音頻編輯腳本命令(mencoder/ffmpeg)
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,圖像系列的fps25輸出視頻檔的fps25. 視頻編碼為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的例子中,還提供了額外的切割選擇功能。切割的部分從010秒開始,到015秒結束,長達5秒。同時畫面也被切割,切割的位置從座標(80,60)開始,寬度480圖元,高度360圖元。這裏坐標系以螢幕左上角為(0,0). 


任務13   midi檔轉換為mp3 
timidity input.mid -Ow
lame -b 160 -h -k input.wav output.mp3


 


解釋:第一條命令使用timiditymidi轉換為wav檔,第二條命令用lamewav轉換為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檔,第二步用ffmpegwav檔轉換為wma. 

如果你只需要將單幅圖像如某個封面,和一個mp3合併成一個視頻檔,請參看下文:
mencoder "mf://cover.jpg" -mf fps=1/275 -vfscale=-3:240,expand=320:240,harddup -oac mp3lame -lameoptsabr:br=128:mode=3 -audiofile input.mp3 -ovc lavc -lavcoptsvcodec=msmpeg4v2:vpass=1:vbitrate=2560000:mbd=2:keyint=132:vqblur=1.0:cmp=2:subcmp=2:dia=2:mv0:last_pred=3-ofps 30  -o demo.avi


 





wav aac命令可參考

ffmpeg -i soundtrack.wav -acodec aac -ab 128kb  output.m4a


 

















 






沒有留言:

張貼留言