【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 容器文件中包含了 111 個 AVC 視頻流 , 111 個 AAC LC 音頻流 ;
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 ) ;
博客資源
https://download.csdn.net/download/han1202012/19555927
《新程序員》:云原生和全面數字化實踐50位技術專家共同創作,文字、視頻、音頻交互閱讀總結
以上是生活随笔為你收集整理的【FFmpeg】FFmpeg 相关术语简介 ( 容器 | 媒体流 | 数据帧 | 数据包 | 编解码器 | 复用 | 解复用 )的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【FFmpeg】Windows 搭建 F
- 下一篇: 【FFmpeg】FFmpeg 相关术语简