天天看點

ffmpeg源碼編譯ffmpeg源碼編譯

ffmpeg源碼編譯

  • 簡介

ffmpeg是一套功能強大的多媒體處理工具,它幾乎涵蓋了目前所有主流的多媒體資料封裝格式、多媒體傳輸協定及音視訊編解碼器,并支援多媒體後處理,視訊色彩轉換、濾鏡和縮放等,其主持的主流協定如下:HTTP、RTP、RTSP、RTMP、HLS、UDP等。

  • ffmpeg核心庫

libavcodec:提供全面的編解碼實作。它提供通用編碼/解碼架構,并包含用于音頻,視訊和字幕流的多個解碼器和編碼器,以及多個比特流濾波器。共享架構提供從比特流i/o到dsp優化的各種服務,并且使得它适合于實作健壯和快速的編解碼器。

libavformat:提供全面的音視訊容器格式的封裝和解析以及所支援的協定。它為音頻、視訊和字幕流的複用和解複用(多路複用和解複用)提供了一個通用架構。它包括多媒體容器格式的多個多路複用器和多路分解器。它支援幾種輸入和輸出協定來通路媒體資源。

libavutil:提供一些公共函數。它是一個使用程式庫,主要用以輔助多媒體程式設計,包含安全可移植字元串函數,随機數生成器,資料結構,附件數學函數,加密和多媒體相關功能等。該庫的目标為子產品化、小、高效、有用。

libavfilter:提供音視訊過濾器,如視訊加水印、音頻變聲。

libavdevice:提供支援衆多裝置資料的輸入與輸出,如讀取攝像頭資料、螢幕錄制等,可用于很多常見的多媒體輸入/輸出裝置抓取和渲染。

libswresample:提供音視訊重采樣,重新矩陣化和樣本格式化轉換等操作。

libswscale:提供對視訊圖像進行色彩轉換、縮放以及像素格式轉換等。

libpostproc:多媒體後處理器。

  • ffmpeg中工具

ffmpeg:流媒體的編解碼、格式轉換以及多媒體流的内容處理工具;

ffplay:使用FFmpeg編解碼的播放器;

ffprobe:多媒體分析工具;

ffserver:流媒體伺服器。

  • ffmpeg安裝

第一步 安裝相關的依賴

sudo apt-get install update

sudo apt-get -y install autoconf automake build-essential libass-dev libfreetype6-dev \

libsdl1.2-dev libtheora-dev libtool libva-dev libvdpau-dev libvorbis-dev libxcb1-dev libxcb-shm0-dev \

libxcb-xfixes0-dev pkg-config texinfo zlib1g-dev

sudo apt-get install yasm

sudo apt-get install libx264-dev # H.264 依賴庫

sudo apt-get install cmake mercurial

sudo apt-get install libfdk-aac-dev # aac audio 依賴庫

sudo apt-get install libmp3lame-dev # mp3 audio 依賴庫

sudo apt-get install libopus-dev # Opus audio 依賴庫

sudo apt-get install ctags # 文檔工具

第二步 下載下傳源碼、解壓、編譯、安裝

官網下載下傳對應版本的源碼

tar xvf ffmpeg-*.*.*.tar

cd ffmpege-*.*.*

./configure

sudo make

sudo make install

安裝完成後,可以利用ffmpeg -v檢查是否安裝成功。

  • ffmpeg使用工具

将輸出檔案的視訊比特率設定為64kbit/s

ffmpeg -i input.avi -b:v 64k -bufsize 64k output.avi

強制輸出檔案的幀速率24幀

ffmpeg -i input.avi -r 24 output.avi

強制輸入檔案的幀速率(僅對raw格式有效)為1幀和輸出檔案的幀速率為24幀的

ffmpeg -r 1 -i input.m2v -r 24 output.avi

  • ffmpeg轉碼流程

    輸入檔案 (經解複用) 擷取編碼資料資料包 (經解碼器) 解碼一幀 (經重新編碼) 得編碼資料包 (經複用器) 得輸出檔案。

  • ffserver使用工具

使用中,需要注意修改./doc/ffserver.conf對應的配置資訊然後執行如下指令:

ffserver -f ./doc/ffserver.conf & ffmpeg -i inputfile http://localhost:8090:feed1.ffm

之後在電腦中浏覽器中輸入url檢視即可,對應url如下:

http://localhost:8090/test.asf即可。

  • ffplay工具使用

ffplay工具主要用于播放使用使用,可以使用如下指令進行視訊播放:

ffplay -i ../input.avi即可播放。

  • 處理音視訊例程

從檔案中找到視訊流;

從視訊流中讀取資料包;

如果不是一幀完整的資料就繼續執行上一步;

對幀資料做一些處理;

然後循環執行以上操作,直到結束。