Linux下ffmpeg的環境搭建與安裝
背景
【FFmpeg是什麼】
1· FFmpeg是一套可以用來記錄、轉換數字音頻、視訊,并能将其轉化為流的開源軟體。采用LGPL或GPL許可證,提供了錄制、轉換以及流化音視訊的完整解決方案。它包含了非常先進的音頻/視訊編解碼庫libavcodec。
2· FFmpeg一個領先的多媒體架構,具備解碼,編碼,轉碼,複用,解複用,流式傳輸,濾鏡和播放等能力。
3· 它包含可供應用程式使用的libavcodec,libavutil,libavformat,libavfilter,libavdevice,libswscale和libswresample。 以及最終使用者可用于轉碼和播放的ffmpeg,ffplay和ffprobe。
4· 哪些軟體在用FFmpeg? FFmpeg的使用者有Google,Facebook,Youtube,VLC,優酷,愛奇藝,洋芋,Mplayer,射手播放器,暴風影音,KMPlayer,QQ影音,格式工廠,狸窩視訊轉換器,暴風轉碼等。
【FFmpeg的基本組成】
libavutil:工具庫,如:随機數發生器。
libavcodec:音視訊編解碼庫。
libavformat:封裝格式處理庫,包含格式封裝、多媒體複用和解複用,包括擷取解碼
所需資訊以生成解碼上下文結構和讀取音視訊幀等功能
libavdevice:一個包含輸入和輸出裝置的庫,用于從許多常見的多媒體輸入/輸出軟
件架構中擷取和渲染,包括Video4Linux,Video4Linux2,VfW和
libavfilter:多媒體濾鏡
libswscale:縮放和顔色空間轉換的庫
libswresample:音頻重采樣、格式轉換的庫
ffmpeg:該項目提供的一個工具,可用于格式轉換、解碼或電視卡即時編碼等
ffsever:一個 HTTP 多媒體即時廣播串流伺服器;
ffplay:是一個簡單的播放器,使用ffmpeg 庫解析和解碼,通過SDL顯示;
擷取FFmpeg源碼包
有兩個途徑可以擷取:
1. ffmpeg官方網站:http://www.ffmpeg.org/
在官網找到需要的版本,我選用的是 FFmpeg 3.4.4 “Cantor” 版本,因為最新版本沒有ffserver。然後在Linux 執行下載下傳、解壓指令:
[root@localhost heijunma]# wget http://www.ffmpeg.org/releases/ffmpeg-3.4.4.tar.gz
[root@localhost heijunma]#tar -zxvf ffmpeg-3.4.4.tar.gz
解壓後可以檢視ffmpeg的第一級目錄結構:
![](https://img.laitimes.com/img/9ZDMuAjOiMmIsIjOiQnIsICM38CXlZHbvN3cpR2Lc1TPB10QGtWUCpEMJ9CXsxWam9CXwADNvwVZ6l2c052bm9CXUJDT1wkNhVzLcRnbvZ2Lc1TPB1EerpmT3dGRNBDOsJGcohVYsR2MMBjVtJWd0ckW65UbM5WOHJWa5kHT20ESjBjUIF2LcRHelR3LcJzLctmch1mclRXY39DM5QDM1gjMxAzNygDM4EDMy8CX0Vmbu4GZzNmLn9Gbi1yZtl2Lc9CX6MHc0RHaiojIsJye.jpg)
每個目錄的結構後面再講
2. github開源社群位址:
git://source.ffmpeg.org/ffmpeg.git
可以用git将代碼fork到本地,當然使用git之前請先安裝git版本控制工具,需要根據自己的系統來安裝對應的版本,Linux的架構資訊可以由 uname -a 擷取
[[email protected] github]$ uname -a
Linux localhost.localdomain -.el6.x86_64 #1 SMP Tue Aug 14 20:46:41 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux
經查詢得知系統是x86_64。是以我們需要安裝git.x86_64版本,執行如下指令安裝git版本控制工具
安裝好之後,建立一個git工程目錄,然後git初始化,全局配置使用者名和郵箱,需要與Github相同:
[root@localhost github]# git init
Initialized empty Git repository in /home/heijunma/ffmpeg-./github/.git/
[root@localhost github]#git config --global user.name "SugarWilliam"
[root@localhost github]#git config --global user.email "[email protected]"
[root@localhost github]#git config --list
user.name=SugarWilliam
[email protected]
core.repositoryformatversion=
core.filemode=true
core.bare=false
core.logallrefupdates=true
這樣就初始化完成了,接着我們在github上clone一個ffmpeg3.4.4版本倉庫到本地
登入你自己的GitHub賬戶(需要自己申請),進入https://github.com/FFmpeg/FFmpeg/branches 檢視不同版本分支,選擇release/3.4分支直接進行源碼clone
配置與編譯ffmpeg
進入到ffmpeg目錄開始配置ffmpeg
此時可能會出現錯誤資訊列印:
nasm/yasm not found or too old. Use --disable-x86asm for a crippled build.
If you think configure made a mistake, make sure you are using the latest
version from Git. If the latest version fails, report the problem to the
[email protected] mailing list or IRC #ffmpeg on irc.freenode.net.
Include the log file "ffbuild/config.log" produced by configure as this will help
solve the problem.
這是由于 asm版本是舊的或者沒有asm,是以需要安裝或者更新,執行如下指令:
安裝完成後繼續配置和編譯ffmpeg,把ffplay和ffserver打開,configure 主要是配置編譯項并且掃描環境是否有依賴缺失,如果configure執行順利,會在目前目錄下生成一個makefile用于編譯,這也是Linux下源碼編譯安裝軟體的一般流程。
接着編譯并安裝:
編譯完成後會在目前目錄下生成ffplay\ffserver\ffprobe\ffmpeg等可執行檔案:
ffmpeg安裝目錄如下,這是配置的時候預設的目錄,可以在配置的時候執行如下指令:
[root@localhost bin]# cd /usr/local/bin/
[root@localhost bin]# ls
ffmpeg ffplay ffprobe ffserver sdl2-config vsyasm yasm ytasm
可以看到ffmpeg\ffplay\ffserver\ffprobe 都已經安裝好了,是以可以直接以指令的方式執行和使用,而且我們可以看到這裡還安裝了其他的一些我麼自己安裝的軟體例如 yasm 、SDL等。
ffmpeg 初體驗
1. ffmpeg 轉碼工具的使用:
在ffmpeg下建立一個resource檔案夾,然後拷貝一個MP3,一個mp4測試檔案到該目錄用于調試
例如
- 然後執行如下指令:
- 這裡沒有配參數,使用的是預設參數,當然自己也可以配置指定參數
- 上圖是轉換過程,從轉換過程可以看出一些細節;例如MP4封檔案中,視訊編碼格式是YUV420P,分辨率是1280x720,音頻格式是ac3(全稱Audio Coding3音頻編碼3)杜比數位壓縮,碼率192kb/s、采樣率48KHz,聲道為立體聲。
- 如此就完成了MP4轉成了AVI
當然我們可以播放AVI檔案驗證一下是轉換後否可以播放。
以上為ffmpeg的安裝與環境搭建,接下來将要運作ffsever\ffplay\ffprobe。