FFmpeg的下载及其简单使用
FFmpeg的下載及其簡單使用
最近需要涉及一個視頻格式轉換的小任務,其中用到到了ffmpeg,記錄一下學習筆記。
在學習的過程中發現了一個神的存在——雷神雷霄驊,可惜天妒英才呀。
1 FFmpeg簡介
百度百科
FFmpeg是一套可以用來記錄、轉換數字音頻、視頻,并能將其轉化為流的開源計算機程序。采用LGPL或GPL許可證。它提供了錄制、轉換以及流化音視頻的完整解決方案。它包含了非常先進的音頻/視頻編解碼庫libavcodec,為了保證高可移植性和編解碼質量,libavcodec里很多code都是從頭開發的。
FFmpeg在Linux平臺下開發,但它同樣也可以在其它操作系統環境中編譯運行,包括Windows、[Mac OS X](https://baike.baidu.com/item/Mac OS X/470629)等。這個項目最早由Fabrice Bellard發起,2004年至2015年間由Michael Niedermayer主要負責維護。許多FFmpeg的開發人員都來自MPlayer項目,而且當前FFmpeg也是放在MPlayer項目組的服務器上。項目的名稱來自MPEG視頻編碼標準,前面的"FF"代表"Fast Forward"。 FFmpeg編碼庫可以使用GPU加速。
| 軟件平臺 | Linux、Windows、Mac OS X | 軟件授權 | 開源 |
| 最近更新時間 | 2021年4月8日 | 軟件版本 | 4.4 |
| 軟件語言 | C語言、匯編 | 標準協議 | LGPL/GPL |
ffmpeg是一種高效的視頻、音頻轉換器和采集器。ffmpeg通過-i選項指定任意數量輸入文件,輸入文件的類型可以是常規的音視頻文件,也可以是管道、網絡流、采集設備等,同時也可以生成任意數量的輸出文件。
輸入、輸出文件的流類型、數量原則上是沒有限制的,但會受到容器格式(container format)限制,輸出流格式可以默認(自動)采用哪個輸入流的格式,也可以通過-map指定采用哪個輸入流格式。
-i指定的輸入文件,以及文件的流,索引號都是從0開始,例如:2:3代表第三個輸入文件中的第四個流。
原則上選項(option)應用于跟隨的指定文件,因此,順序很重要,您可以在命令行上多次使用相同的選項,但每次出現都應該應用于跟隨的輸入、輸出文件。 此規則的例外是全局選項,應首先指定。不要混合輸入文件和輸出文件,首先指定所有輸入文件,然后再指定所有輸出文件。也不要混用屬于不同文件的選項,所有選項僅適用于跟隨的輸入或輸出文件。
2 FFmpeg組成
構成FFmpeg主要有三個部分:四個作用不同的工具軟件、可以供開發者使用的SDK、整個工程的源代碼。
2.1 四個作用不同的工具軟件
具體為:ffmpeg.exe, ffplay.exe, ffserver.exe和ffprobe.exe
| ffmpeg.exe | 視頻轉碼、轉換器 |
| ffplay.exe | 簡單的音視頻播放器 |
| ffserver.exe | 流媒體服務器 |
| ffprobe.exe | 簡單的多媒體碼流分析器 |
2.2 可供開發者使用的SDK,為各個不同平臺編譯完成的庫
如果說上面的四個工具軟件都是完成品形式的玩具,那么這些庫就相當于樂高積木一樣,我們可以根據自己的需求使用這些庫開發自己的應用程序。
| libavformat | 用于各種音視頻封裝格式的生成和解析,包括獲取解碼所需信息以生成解碼上下文結構和讀取音視頻幀等功能 |
| libavcodec | 用于各種類型聲音/圖像編碼解碼 |
| libavutil | 包含一些公共的工具函數,如隨機數生成器、數據結構、數字函數等功能 |
| libswscale | 用于視頻場景比例縮放、色彩空間和像素格式轉換 |
| libpostproc | 用于后期效果處理 |
| libavfilter | 包含多媒體處理常用的濾鏡功能 |
| libavdevice | 用于音視頻數據采集和渲染等功能的設備相關 |
| libswresample | 用于音頻重采樣和格式轉換等功能 |
2.3 整個工具的源代碼
無論是編譯出來的可執行程序還是SDK,都是由這些源代碼編譯出來的。FFmpeg的源代碼由C語言實現,主要在Linux平臺上進行開發。FFmpeg不是一個孤立的工程,它還存在多個依賴的第三方工程來增強它自身的功能。在當前這一系列的博文/視頻中,我們暫時不會涉及太多源代碼相關的內容,主要以FFmpeg的工具和SDK的調用為主。到下一系列我們將專門研究如何編譯源代碼并根據源代碼來進行二次開發。
3 下載工具(Windows)
FFmpeg官網
在官網上找到Download頁面:
該頁上可以下載FFmpeg的工具、庫和源代碼等。在選擇"Windows Packages"下的Windows Builds后,會跳轉到Windows版本的下載頁面:
這里的話我選擇Windows64的,然后是gpl的壓縮包,可以看出,它是最大的。
下載后把它解壓到對應的路徑中:
然后在系統變量中添加一個FFMPEG_HOME:
最后在path中添加指向FFmpeg的bin路徑:
驗證是否安裝成功(切換到命令行窗口,輸入ffmpeg -version,出現如下界面就說明成功了):
4 簡單使用
4.1 ffmpeg.exe
4.1.1 基本使用
-
功能
ffmpeg.exe用于視頻的轉碼。
-
最簡單的命令
? 該命令是將當前文件夾下的input.avi文件轉換成output.ts文件,并將output.tx文件視頻的碼率設置為640kbps
- 命令格式
? 所有的參數都是以鍵值對的形式指定的。例如輸入文件參數是"-i",而參數值就是文件路徑;輸出視頻碼率參數是"-b:v",而參數值是視頻的碼率值。但是注意位于最后面的輸出路勁前面不包含參數名稱。
4.1.2 命令參數
| -h | 幫助 |
| -i filename | 輸入文件 |
| -t duration | 設置處理時間,格式為hh:mm:ss |
| -ss position | 設置起始時間,格式為hh:mm:ss |
| -b:v bitrate | 設置視頻碼率 |
| -b:a bitrate | 設置音頻碼率 |
| -r fps | 設置幀率 |
| -s wxh | 設置幀大小,格式為WxH |
| -c:v codec | 設置視頻編碼器 |
| -c:a codec | 設置音頻編碼器 |
| -ar frep | 設置音頻采樣率 |
詳細的參數設置可以訪問FFmpeg官方文檔進行學習
也可以直接參考雷神的FFmpeg參數中文詳細解釋
4.2 ffplay.exe
4.2.1 基本使用
-
功能
用于播放的應用程序
-
簡單的播放命令
播放test.mp4的命令為:
ffplay test.mp4
具體使用參考ffplay的快捷鍵以及選項
4.3 ffprobe.exe
ffprobe是用于查看文件格式的應用程序。
詳細使用可以參考官方說明
5 參考文章
FFmpeg官網
FFmpeg官方文檔
FFMPEG視音頻編解碼零基礎學習方法(雷霄驊-雷神)
《基于 FFmpeg + SDL 的視頻播放器的制作》課程的視頻(雷霄驊-雷神)
之后幾天掃地生將會結合springboot做一個實現一些音視頻的格式轉換的demo...同樣的,也會以筆記的形式記錄具體步驟。
總結
以上是生活随笔為你收集整理的FFmpeg的下载及其简单使用的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: jQuery教程
- 下一篇: LeetCode:验证回文串【125】