from: http://www.javashuo.com/article/p-ydtzdvdb-kd.html
FFMPEG擁有強大的視頻處理能力,惋惜的是有不少人不知道如何使用。本文深刻介紹如何用編譯好ffmpeg.exe程序處理視頻,既有經常使用的簡單的處理,也有一些比較少見的高大上的處理,必定能讓你受益不淺。ffmpeg是一把寶刀,在視頻處理上,基本是一刀在手,天下我有。
windows
首先下載編譯好的ffmpeg程序,能夠去下面的網址,https://ffmpeg.zeranoe.com/builds/# 點擊"Donload Build"按鈕下載最新編譯的版本,解壓後能夠看到ffmpeg.exe文件用於處理視頻,ffplay.exe文件用於播放視頻。也能夠去ffmpeg的官網http://ffmpeg.org/ 下載源碼本身編譯(這個工做量比較大)。app
打開命令行窗口,使用cd命令行進入到ffmpeg所在的目錄,接下來就能夠直接輸入處理命令了。下面就來介紹各類各樣的命令。下面命令行中的輸入視頻和輸出視頻的路徑必須正確,若是路徑不存在會出錯的哦。tcp
一、知道了視頻流地址如何保存出本地文件:ide
ffmpeg -i rtmp://122.202.129.136:1935/live/ch4 -map 0 d:\work\yyy.mp4測試
二、知道了流地址,播放視頻文件:字體
ffplay -rtsp_transport tcp rtsp://192.168.201.133:554/stream1.sdpui
三、提取視頻中的音頻文件:spa
ffmpeg -i h:\work\yyy.avi -map 0:a d:\work\yyy.mp3.net
ffmpeg -i rtmp://122.202.129.136:1935/live/ch4 -map 0:a d:\work\yyy.mp3命令行
四、提起多媒體中的視頻(不要音頻)
ffmpeg -i rtmp://122.202.129.136:1935/live/ch4 -map 0:v d:\work\yyy.mp4
五、把音頻的左右聲道分別保存爲兩個文件:
ffmpeg -i d:\work\yyy.mp3 -map_channel 0.0.0 d:\work\ch1.mp3 -map_channel 0.0.1 d:\work\ch2.mp3
六、把視頻的音視頻同時分爲兩個文件保存:
ffmpeg -i h:\work\video.mp4 -map 0:v d:\work\video2.mp4 -map 0:a d:\work\video.mp3
七、把單純的視頻和單純的音頻合併爲一個視頻文件:
ffmpeg -i d:\work\out.mp4 -i d:\work\video.amr -map 0:v -map 1:a d:\work\strange.mp4
八、在視頻的屏幕左上角加一個logo標誌:
ffmpeg -i h:\work\video.mp4 -i h:\work\psu.png -filter_complex ‘overlay’ d:\work\video.mp4
九、輸出視頻的yuv數據:
ffmpeg -i d:\work\video.mp4 d:\work\hugefile.yuv
十、把視頻的圖像批量輸出((-r 1)一秒鐘保存一張,縮放爲640*480,名稱爲foo-001.jpeg, foo-002.jpeg…):
ffmpeg -i h:\work\video.mp4 -r 1 -s 640x480 -f image2 d:\work\foo-%03d.jpeg
還能夠添加更多參數得意
ffmpeg -i h:\work\video.mp4 -r 1 -ss 50 -vframes 3 -s 640x480 -f image2 d:\work\foo-%03d.jpeg
十一、把一堆圖像合成爲一個視頻:
ffmpeg -f image2 -framerate 25 -i d:\work\foo-%03d.jpeg -s 1280x720 h:\work\foo.avi
十二、轉換視頻的分辨率:
ffmpeg -i D:\work\hisense1.mp4 -vcodec libx264 -s 640x480 -acodec aac -strict experimental -ar 44100 -ac 2 -b:a 96k D:\work\outputfile.mp4
1三、直接將視頻變爲原來大小的一半:
ffmpeg -i D:\work\yyy2642.mp4 -vf scale=iw/2:ih/2 D:\work\yyy2642sm.mp4
1四、裁剪視頻中間的一段視頻爲一個單獨視頻:
ffmpeg -ss 00:00:30 -vsync 0 -t 00:00:30 -i D:\work\yyy2642.mp4 -vcodec libx264-acodec libfaac D:\work\outputfile.mp4
1五、裁剪出視頻屏幕正中間的一部分,寬度和高度都是原來視頻的一半:
ffmpeg -i D:\work\yyy2642.mp4 -vf crop=iw/2:ih/2 D:\work\yyy2642sm.mp4
1六、裁剪出視頻屏幕任意一部分(注意參數):
ffmpeg -i D:\work\yyy2642.mp4 -vf crop=iw/3:ih/3?100 D:\work\yyy2642sm.mp4
1七、播放時自動檢測視頻周圍的黑框(播放時,輸出窗口能夠看到檢測出的crop),這個其實不是視頻處理,只是播放效果:
ffplay D:\work\yyy2642.mp4 -vf cropdetect
1八、在視頻的四周增長一圈30個像素的粉紅色邊框:
ffmpeg -i D:\work\yyy2642sm.mp4 -vf pad=iw+60:ih+60:30:30:pink D:\work\pink.mp4
1九、視頻水平翻轉:
ffmpeg -i D:\work\yyy2642.mp4 -vf hflip D:\work\outputfile.mp4
20、視頻上下翻轉:
ffmpeg -i D:\work\yyy2642.mp4 -vf vflip D:\work\outputfile.mp4
2一、視頻旋轉:
ffmpeg -i D:\work\yyy2642.mp4 -vf transpose=2 D:\work\outputfile.mp4
2二、視頻模糊處理(注意參數),可讓視頻變模糊:
ffmpeg -i D:\work\yyy2642.mp4 -vf boxblur=1:10:4:10 D:\work\outputfile.mp4
2三、視頻銳化處理,必定程度可讓視頻變清晰:
ffmpeg -i D:\work\yyy2642.mp4 -vf unsharp=5:5:1.0:5:5:0.0 D:\work\outputfile.mp4
2四、刪除標誌logo:
ffmpeg -i D:\work\outputfile.mp4 -vf delogo=10:10:256:256:0:0 D:\work\outputfile1.mp4
2五、添加文字到視頻上
ffmpeg -i D:\work\yyy2642.mp4 -vf drawtext=「fontfile=arial.ttf:text=‘Happy Holidays’:x=(w-tw)/2:y=(h-th)/2:fontcolor=green:fontsize=60」 D:\work\outputfile.mp4
其中arial.ttf是從windows\fonts目錄下拷貝過來的字體文件
2六、添加上方的字符滾動顯示(顯示中文字符):
ffmpeg -i D:\work\yyy2642.mp4 -vf drawtext=「fontfile=ARIALUNI.ttf:text=‘程序明_Welcom’:x=w-mod(t*50,w):fontcolor=darkorange:fontsize=30」 D:\work\outputfile.mp4
添加的文字顯示在下方:
ffmpeg -i D:\work\yyy2642.mp4 -vf drawtext=「fontfile=ARIALUNI.ttf:text=‘程序明’:x=w-mod(t*50,w):y=h-th:fontcolor=darkorange:fontsize=30」
2七、視頻右上角顯示當前系統時間:
ffmpeg -i D:\work\yyy2642.mp4 -vf drawtext=「fontfile=arial.ttf:x=w-tw:fontcolor=white:fontsize=30:text=’%{localtime:%H\:%M\:%S}’」 D:\work\outputfile.mp4
2八、視頻播放時晃動:
ffplay -i D:\work\yyy2642.mp4 -vf crop=in_w/2:in_h/2:(in_w-out_w)/2+((in_w-out_w)/2)*sin(n/10):(in_h-out_h)/2+((in_h-out_h)/2)*sin(n/7)
2九、播放時視頻色彩不斷變換:
ffplay -i D:\work\yyy2642.mp4 -vf hue=「H=2PIt:s=sin(2PIt)+1」
30、彩色視頻轉變爲黑白視頻:
ffmpeg -i D:\work\yyy2642.mp4 -vf lutyuv=「u=128:v=128」 D:\work\outputfile.mp4
3一、視頻轉碼爲原來的播放速度的兩倍:
ffmpeg -i D:\work\yyy2642.mp4 -vf setpts=PTS/2 -af atempo=2 D:\work\outputfile.mp4
3二、視頻轉爲gif(參數指定了位置):
ffmpeg -i D:\work\yyy2642.mp4 -ss 50 -t 10 -pix_fmt rgb24 -s 640x480 D:\work\jidu.gif
3三、從視頻裏面截取幾張圖到一張圖裏(大圖是2行3列):
ffmpeg -i D:\work\yyy2642.mp4 -frames 1 -vf 「select=not(mod(n,300)),scale=320:240,tile=2x3」 D:\work\out.png
3四、兩個文件左右合併(無敵了):
ffmpeg.exe -i 「D:\work\yyy264.mp4」 -vf 「[in] scale=iw/2:ih/2, pad=2*iw:ih [left]; movie=‘D:\work\yyy2642.mp4’, scale=iw/2:ih/2 [right];[left][right] overlay=main_w/2:0 [out]」 -b:v 768k D:\work\output.mp4
3五、兩個文件上下合併(無敵了):
ffmpeg.exe -i 「D:\work\yyy264.mp4」 -vf 「[in] scale=iw/2:ih/2, pad=iw:2*ih [top]; movie=‘D:\work\yyy2642.mp4’, scale=iw/2:ih/2 [bottom];[top][bottom] overlay=0:main_h/2 [out]」 -b:v 768k D:\work\output.mp4
3六、文件重疊合並,把第二個文件的視頻縮小爲四分之一後,放到第一個視頻的寬高八分之一畫面處(更無敵):
ffmpeg.exe -i 「D:\work\yyy264.mp4」 -vf 「[in] scale=iw:ih, pad=iw:ih [top]; movie=‘D:\work\yyy2642.mp4’, scale=iw/4:ih/4 [bottom];[top][bottom] overlay=main_w/8:main_h/8 [out]」 -b:v 768k D:\work\output.mp4
3七、普通的按順序合併兩個視頻:
ffmpeg -i D:\work\yyy264.mp4 -qscale 0 D:\work\inputfile_01.mpg
ffmpeg -i D:\work\yyy2642.mp4 -qscale 0 D:\work\inputfile_02.mpg
copy /b 「D:\work\inputfile_01.mpg」+「D:\work\inputfile_02.mpg」 「D:\work\inputfile_all.mpg」
ffmpeg -i D:\work\inputfile_all.mpg -qscale 0 D:\work\outputfile.mp4
3八、音頻的分割合併
把第一段音頻分紅兩部分
ffmpeg.exe -ss 00:00:08.5 -vsync 0 -t 00:00:09 -i file1.mp3 file1end.mp3
ffmpeg.exe -ss 00:00:00 -vsync 0 -t 00:00:08 -i file1.mp3 file1New.mp3
把第一段音頻的後半部分和第二段混音合併
ffmpeg -i file2.mp3 -i file1end.mp3 -filter_complex amix=inputs=2:duration=first:dropout_transition=0 file2forNew1.mp3
把第二段音頻混音好的音頻,分紅先後兩部分:
ffmpeg.exe -ss 00:00:00 -vsync 0 -t 00:00:04 -i file2forNew1.mp3 file2New.mp3
ffmpeg.exe -ss 00:00:04 -vsync 0 -t 00:00:05 -i file3.mp3 file2End.mp3
再把第二段的後半部分和第三段混音合併:
ffmpeg -i file3.mp3 -i file2End.mp3 -filter_complex amix=inputs=2:duration=first:dropout_transition=0 file3New.mp3
把新的三部分音頻首尾鏈接連到一塊兒:
ffmpeg -i file1New.mp3 -qscale 0 inputfile_01.mpg
ffmpeg -i file2New.mp3 -qscale 0 inputfile_02.mpg
copy /b 「inputfile_01.mpg」+「inputfile_02.mpg」 「inputfile_all.mpg」
ffmpeg -i file3New.mp3 -qscale 0 inputfile_05.mpg
copy /b 「inputfile_all.mpg」+「inputfile_05.mpg」 「inputfile_al2.mpg」
ffmpeg -i inputfile_al2.mpg -qscale 0 file5.mp4
ffmpeg -i file5.mp4 -map 0:a result.mp3
上面的全部命令都是筆者本身親自測試使用的,其中有些命令行帶有很多參數,參數須要根據實際狀況修改,若是有命令不理解的歡迎提問。筆者儘可能在百忙之中擠出時間答疑
版權聲明:本文爲CSDN博主「明天繼續」的原創文章,遵循CC 4.0 by-sa版權協議,轉載請附上原文出處連接及本聲明。
原文連接:http://www.javashuo.com/article/p-ydtzdvdb-kd.html