使用FFmpeg處理音視頻

本文主要是介紹如何使用ffmpeg命令行工具進行各式各樣的音視頻處理操做——縮放、裁剪、剪輯、旋轉、格式轉換,etc。。。學了本文,基本能夠把格式工廠之類的音視頻處理軟件刪了。。html

一. 安裝ffmpeg命令行工具

本文只介紹mac系統下的安裝方法,Linux的用戶安裝也很簡單,Win的用戶也能夠上網找找教程。。。bash

1. 安裝Homebrew

Homebrew號稱是「OS X 不可或缺的包管理器」,經過homebrew,能夠很方便地在mac上安裝經常使用的命令行工具。給出官網:http://brew.sh/markdown

安裝和使用方法官網說得很詳細,恩。。ide

2. 安裝ffmpeg

上面咱們已經安裝了Homebrew,接下來咱們很方便地就能夠安裝ffmpeg,只須要一行命令:工具

$ brew install ffmpeg  //使用brew安裝ffmpeg
複製代碼

執行了上面的命令後,brew會開啓瘋狂下載模式。。若是網速快的話,一下子就能夠下載完畢。而後brew還會自動把ffmpeg的啓動路徑加到path環境變量中,這樣你就能夠在任何地方使用ffmpeg了,不須要先cd到ffmpeg安裝目錄再執行命令了。spa

brew自動把ffmpeg的啓動路徑加到path環境變量時,可能會提示「permission denied」,這是由於brew沒有更改相關文件的權限,手動加上就行了,舉個例子:命令行

$ sudo chmod 777 /usr/share/  // 這個命令是給全部程序添加/usr/share/的讀、寫、執行權限,執行成功以後就brew就能夠更改/usr/share/下的內容了
複製代碼

上面的命令會讓你輸入當前登陸用戶的密碼,輸入你電腦的密碼就好啦。code

二. 視頻處理

1. 剪輯

有時候咱們須要截取一個長視頻的其中某一段內容,好比從一個視頻的第10秒開始,截取6秒的內容,也就是10~16秒的內容,輸入一個out.mp4文件orm

$ ffmpeg -i in.mp4 -ss 00:00:10 -t 00:00:06 -acodec aac -vcodec h264 -strict -2 out.mp4   //從00:00:10開始,截取的長度爲00:00:06
複製代碼

參數解釋:視頻

-i 表明輸入待處理的文件

-ss 表明開始的時間

-t 表明截取的長度。

-acodec 音頻編解碼器,這個不懂的話也不要緊,直接照抄就行。。

-vcodec 音頻編解碼器,這個不懂的話也不要緊,直接照抄就行。。

2. 縮放

不少時候咱們須要把一個高分辨率的視頻處理成一個低分辨率的視頻,以達到減少視頻體積的目的。舉個例子:把一個10801920的視頻縮小到360640

$ ffmpeg -i in.mp4 -vf scale=360:640 -acodec aac -vcodec h264 out.mp4  // 1080*1920-->360*640
複製代碼

參數解釋:

-i 表明輸入,

-vf 的全稱是video filter,即:視頻濾鏡,縮放其實就是給視頻添加一個濾鏡。

scale=360:640 scale是一種濾鏡,縮放濾鏡,格式是:scale=width:height,其中,width和height分別是處理後的寬和高

3. 裁剪

有時候咱們想截取一個大視頻的中間一部分畫面,好比一個10801920的視頻,咱們想截取中間的10801080的部分,這個也能夠實現的:

$ ffmpeg -i in.mp4 -strict -2 -vf crop=1080:1080:0:420 out.mp4 
複製代碼

參數解釋:

crop 和上面的scale同樣,也是視頻濾鏡的一種,crop是裁剪濾鏡。四個參數分別是 width:height:x:y,其中width和height指的是裁剪的寬和高,x和y表明裁剪的區域的左上角的座標,座標系原點爲原視頻的左上角。好比 0:0就表明原視頻的左上角,50:50就表明以原視頻的左上角爲原點的座標系的50:50位置

4. 旋轉

使用ffmpeg能夠輕鬆地旋轉視頻。舉個例子:將一個視頻順時針旋轉90度

$ ffmpeg -i in.mp4 -vf rotate=PI/2:ow=1080:oh=1920 out.mp4
複製代碼

參數解釋:

視頻旋轉其實也是一直濾鏡。

rotate=PI/2 rotate是旋轉濾鏡,後面的「PI/2」旋轉角度(正數表明順時針),這裏是90度

rotate除了指定旋轉角度的參數外,還有其餘一些參數:

ow 全稱是out width,輸出視頻的寬度,若是不指定,默認是輸入視頻的寬度

oh 全稱是out height,輸出視頻的高度,若是不指定,默認是輸入視頻的高度

5. 調節幀率

幀率會很大程度上影響畫面的流暢度和視頻的體積,幀率越大,畫面越流暢,同時視頻體積越大。

咱們有時候須要經過下降幀率來減少視頻的體積。

舉個例子:將一個視頻的幀率降到15

$ ffmpeg -i in.mp4 -r 15 out.mp4
複製代碼

參數解釋:

-r 幀率

6. 格式轉換

ffmpeg具有強大的格式轉換功能,這裏舉幾個經常使用的例子。

$ ffmpeg -i in.mov -vcodec copy -acodec copy out.mp4  // mov --> mp4
$ ffmpeg -i in.flv -vcodec copy -acodec copy out.mp4  // flv --> mp4
$ ffmpeg -i in.gif -vf scale=420:-2,format=yuv420p out.mp4  // gif --> mp4
複製代碼

7. 查看視頻的詳細信息

有的時候咱們須要在處理以前先了解一下視頻的參數信息,好比分辨率、比特率等等。能夠使用下面的命令:

$ ffmpeg -i in.mp4   // 不加任何參數,只指定輸入的視頻
複製代碼

來個截圖:

三. 音頻處理

稍後繼續。。。

四. Reference

FFmpeg有着強大的音視頻處理能力,其官網給出了衆多音視頻處理濾鏡的使用介紹,文中只提到了一些經常使用的操做,若是沒有你想要的,能夠直接去看下官網的濾鏡介紹。

音視頻濾鏡介紹:http://ffmpeg.org/ffmpeg-filters.html

相關文章
相關標籤/搜索