FFmpeg學習(一) —— 簡介

     

簡介

     FFmpeg既是一款音視頻編解碼工具,也是音視頻編解碼開發套件,爲開發者提供了豐富的音視頻處理的調用接口。

     FFmpeg提供多種媒體格式的封裝和解封裝,包括多種音視頻編碼、多種協議的流媒體、多種色彩格式轉換、多種採樣率轉換、多種碼率轉換等;FFmpeg框架提供多種豐富的插件模塊,包含封裝與解封裝的插件、編碼與解碼的插件等。
     

基本組成

     FFmpeg框架的基本組成包含 AVFormat、 AVCodec、 AVFilter、AVDevice、 AVUtil等模塊庫。
     

  • AVFormt
         AVFormat中實現了目前多媒體領域中的絕大多數媒體封裝格式,包括封裝和解封裝,如MP4、FV、KV、TS等文件封裝格式,RTMP、RTSP、MMS、HLS等網絡協議封裝格式。
         FFmpeg是否支持某種媒體封裝格式,取決於編譯時是否包含了該格式的封裝庫。根據實際需求,可進行媒體封裝格式的擴展,增加自己定製的封裝格式,即在 Format中增加自己的封裝處理模塊。

  • AVCodec
         AVCodec中實現了目前多媒體領域絕大多數常用的編解碼格式,既支持編碼也支持解碼。 AVCodec除了支持MPEG4、AAC、 MJPEG等自帶的媒體編解碼格式之外,還支持第三方的編解碼器,如H.264(AVC)編碼,需要使用x264編碼器;H.265(HEVC)編碼,需要使用x265編碼器;MP3(mp3lame)編碼,需要使用limp3lame編碼器。如果希望增加自己的編碼格式,或者硬件編解碼,則需要在AVCodec中增加相應的編解碼模塊。

  • AVFilter
         AVFilter庫提供了一個通用的音頻、視頻、字幕等濾鏡處理框架。在AVFilter中,濾鏡框架可以有多個輸入和多個輸出。

  • SWscale
         swscale是FFmpeg的視頻圖像轉換計算模塊。
         swscale模塊提供了高級別的圖像轉換API,例如它允許進行圖像縮放和像素格式轉換,常見於將圖像從1080p轉換成720p或者480p等的縮放,或者將圖像數據從YUV420P轉換成YUYV,或者YUV轉RGB等圖像格式轉換。

  • SWresample
         swresample是FFmpeg的音頻轉換計算模塊。
         swresample模塊提供了高級別的音頻重採樣API。例如它允許操作音頻採樣、音頻通道佈局轉換與佈局調整。
         

FFmpeg可執行程序

     FFmpeg靜態開發包帶有三個可執行程序:ffmpeg.exe、ffplay.exe、ffprobe.exe。

  • ffmpeg.exe
         轉碼應用程序。即音視頻編解碼。
         轉碼工作流程(如圖):ffmpeg讀取輸入源,通過Demuxer將音視頻包進行解封裝,這個動作通過調用libavformat中的接口即可實現;接下來通過Decoder進行解碼,將音視頻通過Decoder解包成爲YVU或者PCM這樣的數據,Decoder通過 libavcodec中的接口即可實現;然後通過 Encoder將對應的數據進行編碼,編碼可以通過libavcodec中的接口來實現;接下來將編碼後的音視頻數據包通過Muxer進行封裝。Muxer封裝通過 libavformat中的接口即可實現,輸出成爲輸出流。
    在這裏插入圖片描述

  • ffplay.exe
         音視頻顯示和播放相關的圖像信息、音頻的波形信息等應用程序。要想使用ffplay需要SDL2.0進行支撐。即音視頻播放、可視化分析。

  • ffprobeexe
         多媒體分析工具。即音視頻內容分析。

     

說明

暫時記錄到此,續更。。

關注

微信公衆號搜索"Qt_io_"或"Qt開發者中心"瞭解更多關於Qt、C++開發知識.。

筆者 - jxd

發佈了44 篇原創文章 · 獲贊 0 · 訪問量 5398
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章