Ubuntu如何轉(zhuǎn)換mp4與x264和h.264
繼上文Ubuntu安裝FFmpeg編碼出MP4文件的方法之后,本文接著介紹Ubuntu系統(tǒng)下如何轉(zhuǎn)換mp4與x264和h.264。
flv視頻轉(zhuǎn)換為MP4視頻:
- ffmpeg -i source.flv -f avi -vcodec mpeg4 output.MP4
合并視頻文件
- ffmpeg -i /tmp/a.wav -s 640x480 -i /tmp/a.yuv /tmp/a.mpg
或用mencoder合并視頻文件:
- mencoder -oac copy -ovc copy -idx -o output.avi video1.avi video2.avi video3.avi
截取一張352×240尺寸大小的,格式為jpg的圖片:
- ffmpeg -i source.avi -y -f image2 -t 0.001 -s 352x240 output.jpg
把視頻的前11幀轉(zhuǎn)換成一個(gè)動(dòng)畫圖片(Animated Gif):
- ffmpeg -i source.avi -vframes 11 -y -f gif output.gif
在視頻的第8.01秒處截取 352*240 的縮略圖:
- ffmpeg -i source.avi -y -f image2 -ss 08.010 -t 0.001 -s 352x240 output.jpg
轉(zhuǎn)換 yuv 文件
- ffmpeg -s cif -vcodec mpeg4 -i paris.yuv paris.avi
說明:
-s 指定幀大小 cif 為 352x288,qcif 為 176x144,4cif 為 704x576
-vcodec 指定采用的編碼器
-i 指定輸入文件
輸出 raw YUV420P 文件:
ffmpeg -i paris.avi paris0.yuv
將一段視頻輸出為圖片序列
- ffmpeg -i 1.avi cat%d.png -vcodec png
說明:
- -vcodec mjpeg
- -vcodec ppm
- ffmpeg -i 1.avi cat%04d.jpg -vcodec mjpeg -ss 0:1:2 -t 0:0:1
說明:將1.avi視頻 1分02秒 處開始,持續(xù)1秒長的視頻輸出為jpg的序列
- ffmpeg -vcodec mjpeg -i 1.flv test%02d.jpg -ss 0:0:2 -t 0.001
說明: -t 表示持續(xù)時(shí)間為0.001秒,這個(gè)命令相當(dāng)于截取開始2秒處的一幅jpeg的圖片
多輸入單輸出
- ffmpeg -i /tmp/a.wav -s 640x480 -i /tmp/a.yuv /tmp/a.mpg
單輸入多輸出
- ffmpeg -i /tmp/a.wav -ab 64 /tmp/a.mp2 -ab 128 /tmp/b.mp2 -map 0:0 -map 0:0
說明:-map file:stream_index 指定哪一個(gè)輸入流用于輸出流,順序?qū)?yīng)
DVD 轉(zhuǎn) mpeg4
- ffmpeg -i snatch_1.vob -f avi -vcodec mpeg4 -b 800 -g 300 -bf 2 -acodec mp2 -ab 128 snatch.avi
說明:
壓制高品質(zhì)MP4的參考參數(shù):
- '-mbd rd -flags +4mv+trell+aic -cmp 2 -subcmp 2 -g 300 -pass 1/2'
可以試試: '-bf 2', '-flags qprd', '-flags mv0', '-flags skiprd'
編碼 mpeg1/mpeg2
- ffmpeg -i 1.avi -vcodec mpeg2video 2.mpg
說明:
注意mpeg2的codec為 mpeg2video
其他codec可以使用 ffmpeg -formats 查看
壓制高品質(zhì)mp1/mp2的參考參數(shù):
- '-mbd rd -flags +trell -cmp 2 -subcmp 2 -g 100 -pass 1/2'
注意,加 '-g 100' 可能會(huì)使某些解碼器沒法解碼
可以試試: '-bf 2', '-flags qprd', '-flags mv0', '-flags skiprd'
編碼為 flv
- ffmpeg -i 1.avi -ab 56 -ar 22050 -b 500 -r 15 1.flv
X 屏幕錄像
FFmpeg 捕獲 X11 的顯示內(nèi)容:
ffmpeg -f x11grab -i :0.0 /tmp/out.mpg
說明:
0.0 是 X11 服務(wù)器 display.screen 格式的編號(hào) , 可從環(huán)境變量的設(shè)置中獲取。
ffmpeg -f x11grab -i :0.0+10,20 /tmp/out.mpg
說明:
0.0 是 X11 服務(wù)器 display.screen 格式的編號(hào) , 可從環(huán)境變量的設(shè)置中獲取。
10 、 20 分別是捕獲窗口的x、y偏移量。
音視頻采集
- ffmpeg -f audio_device -i /dev/dsp -f video4linux2 -i /dev/video0 /tmp/out.mpg
說明:使用FFmpeg捕獲前視頻源必須有效激活 。
FFmpeg截圖參數(shù)
- ffmpeg -i xxx.xxx -y -f image2 -ss 8 -t 0.001 -s 350x240 xxx.jpg
FFmpeg 加水印 參數(shù):
- ffmpeg -i inputfile.xxx -tagpict ":220:210" -ab 56 -ar 22050 -qmin 2 -qmax 16 -b 320k -r 15 -s 320x240 outputfile.flv
水印參數(shù)說明:
-tagpict ":220:210"
(在ffmpeg所在目錄中尋找0002.mjpg、mask.mjpg兩個(gè)用作水印處理的圖片文件,然后在指定的坐標(biāo),比如此處的:220:210,把水印在轉(zhuǎn)碼過程中添加到視頻文件的每一楨上)
- ffmpeg -i input.wmv -vhook 'vhook_path/watermark.so -f logo.png -x -10 -y -10 -w 4 -h 4' output.mpg
- ffmpeg -i input.flv -vhook '/usr/lib/vhook/watermark.so -f
- logo.gif -m 0 -t ffffff' -ab 96 -b 8000k output.flv
AviSynth加水?。?/p>
首先ffmpeg/Mencoder編譯時(shí)需要–enable-avisynth;
轉(zhuǎn)換參數(shù):ffmpeg -y -i 1.avs -b 320k rmvb-avs.flv
avs編寫格式:
- video = DirectShowSource("rmvb.rmvb",15).BilinearResize(320,240)
- logo = ImageSource("logo2.jpg")
- logomask = ImageSource("mask2.jpg")
- overlay(video,logo,mask=logomask)
常用選項(xiàng)
-i filename 輸入文件
-f fmt 強(qiáng)迫采用格式fmt
-y 覆蓋輸出文件
-ss position 搜索到指定的時(shí)間處開始 [-]hh:mm:ss[.xxx]的格式也支持
-b bitrate 設(shè)置比特率,缺省200kb/s
-r fps 設(shè)置幀頻 缺省25
-s size 設(shè)置幀大小 格式為WXH 缺省160X128.下面的簡寫也可以直接使用:
sqcif 128X96 qcif 176X144 cif 352X288 4cif 704X576
-vcodec codec 強(qiáng)制使用codec編解碼方式。 如果用copy表示原始編解碼數(shù)據(jù)必須被拷貝。
-sameq 使用同樣視頻質(zhì)量作為源(VBR)
-g gop_size 設(shè)置圖像組大小
-intra 僅適用幀內(nèi)編碼
-bf frames 使用frames B 幀,支持mpeg1,mpeg2,mpeg4
-ab bitrate 設(shè)置音頻碼率
-ar freq 設(shè)置音頻采樣率
-ac channels 設(shè)置通道 缺省為1
-an 不使能音頻紀(jì)錄
-acodec codec 使用codec編解碼
-benchmark 為基準(zhǔn)測試加入時(shí)間
-hex 傾倒每一個(gè)輸入包
總結(jié):
希望本文介紹的Ubuntu轉(zhuǎn)換mp4與x264和h.264的方法能夠?qū)ψx者有所幫助,更多有關(guān)linux系統(tǒng)的知識(shí)還有待于讀者去探索和學(xué)習(xí)。