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.mjpg、mask.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 6,4的品質比6高)
-acodec aac(音頻編碼用AAC)
-ac 2(聲道數1或2)
-ar 24000(聲音的採樣頻率,好像PSP只能支援24000Hz)
-ab 128(音頻資料流程量,一般選擇32、64、96、128)
-vol 200(200%的音量,自己改)
-f psp(輸出psp專用格式)
-muxvb 768(好像是給PSP機器識別的碼率,一般選擇384、512和768,我改成1500,PSP就說文件損壞了)
"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
解釋:切割視頻部分,從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
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,圖像系列的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合併成一個視頻檔,請參看下文:
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
沒有留言:
張貼留言