close

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

ppa1.png

ppa2.png

 

方式二:下載源代碼,編譯和安裝

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 後,應該會顯示版本訊息,表示成功安裝

ffmpeg.png

4.測試

可以安裝v4l2-ctrl工具,確認有哪些Camera

sudo apt-get install v4l-utils

v4l2-ctl --list-devices

v4l2-ctrl.png

列出所有裝置

ffmpeg -devices

ffmpeg.png

列出video0和video1所有裝置的格式

ffmpeg -f v4l2 -list_formats all -i /dev/video0

video0.png

ffmpeg -f v4l2 -list_formats all -i /dev/video1

video1.png

錄製螢幕

ffmpeg -f x11grab -s xga -r 10 -i :0.0+0+0 test.avi

下圖是執行後,正在錄影中

test_a.png

下圖是執行後,錄影結束

test_b.png

使用下咧指令撥放已錄的影像檔

ffplay test.avi

 

使用USB Camera 錄影

ffmpeg -f v4l2 -s 1280*720 -framerate 30 -i /dev/video1 test1.mkv

下圖是執行後,正在錄影中

test1_a.png

下圖是執行後,錄影結束

test1_b.png

使用下咧指令撥放已錄的影像檔

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
arrow
arrow
    文章標籤
    TX1 TX2 Jetson
    全站熱搜
    創作者介紹
    創作者 熊熊 的頭像
    熊熊

    熊熊的部落格

    熊熊 發表在 痞客邦 留言(0) 人氣()