FFmpeg 安裝與測試
簡介
FFmpeg的全名是Fast Forward MPEG(Moving Picture Experts Group),是一個用C語言所撰寫的開源多媒體處理框架,可以用來將影音解碼、編碼、編碼轉換、混合、抽取、串流、過濾等功能,而且幾乎支援從古至今的任何影音格式
身為一個開源框架,FFmpeg具備了很高的可攜性與移植性,能在 Linux, Mac OS X, Microsoft Windows, the BSDs, Solaris等等多種不同的作業系統上安裝並使用
另外FFmpeg還擁有藉由高度的擴充性,能夠和其他免費的第三方library結合使用,開發者能夠選擇要啟用哪一些函式庫,建立符合自己需求的FFmpeg
這個項目最初是由Fabrice Bellard發起的,而現在是由Michael Niedermayer在進行維護。許多FFmpeg的開發者同時也是MPlayer項目的成員,FFmpeg在MPlayer項目中是被設計為伺服器版本進行開發。
模組介紹
FFmpeg是一個架構彈性且擴充性強的框架,由許多工具、函式庫與模組所組成,主要的模組有以下幾種:
Tools:
ffmpeg 是一個命令列工具,用來對視訊檔案轉換格式,也支援對電視卡即時編碼
ffserver 是一個 HTTP 多媒體即時廣播串流伺服器,支援時光平移
ffplay 是一個簡單的播放器,基於 SDL 與 FFmpeg 函式庫
ffprobe 是一個解析多媒體檔或串流資訊
Library:
libavcodec 包含了全部 FFmpeg 音訊/視訊 編解碼函式庫
libavformat 包含 demuxers 和 muxer 函式庫&音訊與視訊格式轉換函式庫
libavutil 包含一些工具函式庫
libpostproc 對於視訊做前處理的函式庫
libswscale 對於影像作縮放的函式庫
專利格式轉換
由於一些版權問題,ffmpeg應用上預設不開放某些具有專利的格式的轉換,要回復這些功能,請參考HOWTO: Easily enable MP3, MPEG4, AAC, and other restricted encoding in FFmpeg
以下是在Nvidia Jetson TX1 and Ubuntu 16.04 安裝與測試
方式一:直接由ppa安裝套件
sudo add-apt-repository ppa:mc3man/trusty-media sudo apt-get update sudo apt-get install ffmpeg
方式二:下載源代碼,編譯和安裝
1.安裝相關程式和套件庫
# for ffmpeg sudo apt-get update sudo apt-get install yasm sudo apt-get install libx264-dev -y sudo apt-get install libx265-dev -y sudo apt-get install libmp3lame-dev -y sudo apt-get install libtheora-dev -y sudo apt-get install libvorbis-dev -y sudo apt-get install libxvidcore-dev -y sudo apt-get install libass-dev -y sudo apt-get install libopus-dev -y sudo apt-get install libvpx-dev -y # for ffplay 如果沒有安裝下列的話,ffplay程式不會被編譯出來 sudo apt-get install libsdl2-dev -y sudo apt-get install libsdl1.2-dev -y sudo apt-get install libsdl-image1.2-dev -y sudo apt-get install libsdl-mixer1.2-dev -y sudo apt-get install libsdl-ttf2.0-dev -y sudo apt-get install libsdl-gfx1.2-dev -y
2.下載和編譯源代碼,修改環境變數
wget http://ffmpeg.org/releases/ffmpeg-snapshot.tar.bz2 tar xjvf ffmpeg-snapshot.tar.bz2 cd ffmpeg ./configure \ --prefix="/usr/local/ffmpeg" \ --pkg-config-flags="--static" \ --extra-cflags="-I/usr/local/ffmpeg/include" \ --extra-ldflags="-L/usr/local/ffmpeg/lib" \ --bindir="/usr/local/ffmpeg/bin" \ --enable-gpl \ --enable-version3 \ --enable-nonfree \ --enable-postproc \ --enable-pthreads \ --enable-libmp3lame \ --enable-libtheora \ --enable-libx264 \ --enable-libxvid \ --enable-libvorbis \ --enable-libass \ --enable-libopus \ --enable-libvpx \ --enable-shared make sudo make install #修改環境變數 #TX1_R28.1 不能加入下列,會造成Ubuntu不能登入 #sudo -s #echo "export PATH=/usr/local/ffmpeg/bin;$PATH" >> /etc/profile #exit #TX1_R28.1 修改成拷貝檔案 sudo cp /usr/local/ffmpeg/bin/* /usr/bin/ # sudo -s echo "usr/local/ffmpeg/lib" >> /etc/ld.so.conf ldconfig exit
3.確認是否完成安裝
執行ffmpeg -version 後,應該會顯示版本訊息,表示成功安裝
4.測試
可以安裝v4l2-ctrl工具,確認有哪些Camera
sudo apt-get install v4l-utils v4l2-ctl --list-devices
列出所有裝置
ffmpeg -devices
列出video0和video1所有裝置的格式
ffmpeg -f v4l2 -list_formats all -i /dev/video0
ffmpeg -f v4l2 -list_formats all -i /dev/video1
錄製螢幕
ffmpeg -f x11grab -s xga -r 10 -i :0.0+0+0 test.avi
下圖是執行後,正在錄影中
下圖是執行後,錄影結束
使用下咧指令撥放已錄的影像檔
ffplay test.avi
使用USB Camera 錄影
ffmpeg -f v4l2 -s 1280*720 -framerate 30 -i /dev/video1 test1.mkv
下圖是執行後,正在錄影中
下圖是執行後,錄影結束
使用下咧指令撥放已錄的影像檔
ffplay test1.mkv
使用CSI Camera 錄影(目前是有問題,錄完後,再撥放檔案後畫面全黑,沒有影像)
ffmpeg -f v4l2 -s 1280*720 -framerate 30 -i /dev/video0 test.mkv
直接將Camera影像,即時顯示到螢幕上
ffplay -f v4l2 -s 1280*720 -framerate 30 -i /dev/video1
將Camera的即時影像儲存為圖片
ffmpeg -f v4l2 -i /dev/video1 -vframes 1 test.jpeg ffmpeg -f v4l2 -i /dev/video1 -vframes 10 test%3d.jpeg