天天看點

【FFmpeg】FFmpeg 相關術語簡介 ( 容器 | 媒體流 | 資料幀 | 資料包 | 編解碼器 | 複用 | 解複用 )

文章目錄

  • ​​一、FFmpeg 簡介​​
  • ​​二、FFmpeg 相關術語​​
  • ​​1、容器​​
  • ​​2、媒體流​​
  • ​​3、資料幀​​
  • ​​4、資料包​​
  • ​​5、編解碼器​​
  • ​​6、複用​​
  • ​​7、解複用​​
  • ​​部落格資源​​

一、FFmpeg 簡介

FFmpeg 是 " Fast Forward mpeg " 的縮寫 , 其符合 mpeg 視訊編碼标準 ;

FFmpeg 功能很強大 , 可以對音視訊進行 格式轉換 , 内容修改 , 等幾乎所有涉及音視訊的操作 ;

愛奇藝 , 優酷 , YouTube 等公司的音視訊産品 , 幾乎都是基于 FFmpeg 進行的二次開發 ;

二、FFmpeg 相關術語

1、容器

​容器 Container :​ 容器的本質就是檔案 , 是特定的視訊檔案 , 如 mp4 , mkv , flv 等格式的音視訊檔案 ;

容器的作用 : 容器中可以存放 音頻 , 視訊 , 字幕流 等資訊 , 将這些資訊整合在一起 , 按照特定規則放置在容器檔案中 ,

使用 MediaInfo 打開一個 mp4 格式的視訊檔案 , 在 " 容器格式和一般資訊 " 一欄中 , 可以看到該 mp4 容器檔案中包含了

1

1

1 個 AVC 視訊流 ,

1

1

1 個 AAC LC 音頻流 ;

【FFmpeg】FFmpeg 相關術語簡介 ( 容器 | 媒體流 | 資料幀 | 資料包 | 編解碼器 | 複用 | 解複用 )

MediaInfo 工具在 ​​http://mediaarea.net/en/MediaInfo​​ 位址下載下傳 , 或本部落格的部落格資源中下載下傳 ;

2、媒體流

​媒體流 ( Stream ) :​ 時間上的一段連續資料 , 一段聲音資料 稱為 音頻流 , 一段視訊資料 稱為 視訊流 , 一段字幕資料 稱為 字幕流 ;

這些媒體流資料 可以壓縮 , 也可以不壓縮 , 如視訊流以 H.264 格式進行壓縮 , 将視訊幀編碼成 關鍵幀 , 非關鍵幀 , 音頻流一般是 AAC 編碼格式進行壓縮 ;

媒體流如果是壓縮的 , 在播放時 , 先使用解碼器解碼 , 然後再播放 ; 生成檔案時需要使用編碼器 , 編碼後存儲到檔案中 ;

3、資料幀

​資料幀 ( Data Frame ) :​ 媒體流 由 若幹 資料幀構成 ; 壓縮格式中 , 資料幀是最小的處理單元 ;

在容器中如果有多個資料流 , 那麼 視訊幀 , 音頻幀 , 字幕資訊 , 交錯存儲 , 以保證明時性 ;

資料幀是未壓縮的原始資料 , 如 : 視訊幀每一幀都是一張完整的 YUV 圖檔 , 音頻幀是 PCM 格式的 ;

4、資料包

​資料包 ( Data Packet ) :​ 将 資料幀 壓縮後就是 資料包 , 資料幀是未壓縮的原始資料 , 資料包時壓縮後的資料 ;

生成容器檔案時 , 壓縮資料 , 将資料幀 編碼壓縮 成 資料包 ;

播放容器檔案時 , 解壓資料 , 将資料包 解碼展開 成 資料幀 ;

​視訊編碼過程 :​ YUV 格式的圖像 -> H.264 編碼器編碼 -> H.264 視訊幀

​視訊解碼過程 :​ H.264 視訊幀 -> H.264 解碼器解碼 -> YUV 格式的圖像

​音頻資料編碼過程 :​ PCM 音頻資料 -> ACC 編碼器編碼 -> AAC 音頻幀

​音頻資料解碼過程 :​ AAC 音頻幀 -> AAC 解碼器解碼 -> PCM 音頻資料

5、編解碼器

​編解碼器 ( Codec ) :​ 資料幀 ( 原始資料 ) 與 資料包 ( 壓縮資料 ) 之間的轉換工具 ;

資料幀 ( 原始資料 ) -> 編解碼器 ( 編碼 ) -> 資料包 ( 壓縮資料 )

資料包 ( 壓縮資料 ) -> 編解碼器 ( 解碼 ) -> 資料幀 ( 原始資料 )

6、複用

複用 ( Mux ) : 将不同的 媒體流流 , 按照一定規則放入容器 ;

音頻流 , 視訊流 , 字幕流 ,

按照一定規則

封裝到 容器 ( 視訊檔案 ) 中 ;

複用的關鍵工具時 複用器 ( Muxer ) ;

7、解複用

解複用 ( Demux ) : 從容器中解析不同的流出來 ;

從 容器 ( 視訊檔案 ) 中 ,

按照一定規則

拆分出 音頻流 , 視訊流 , 字幕流 ,

解複用的關鍵工具時 解複用器 ( Demuxer ) ;

部落格資源