FFmpeg—avformat_open_input()函數詳解

pts 是顯示的時間 dts是解碼的時間, 這個時間是用來做同步。

  1. av_register_all(), 註冊所有的格式。包括解封裝格式和加封裝格式。
  2. avformat_network_init(), 用於初始化網絡。FFmpeg本身也支持解封裝RTSP的數據,如果要解封裝網絡數據格式,則可調用該函數。
  3. avformat_open_input()。打開一個文件並解析。可解析的內容包括:視頻流、音頻流、視頻流參數、音頻流參數、視頻幀索引。
  4. avformat_find_stream_info(),查找格式和索引。有些早期格式它的索引並沒有放到頭當中,需要你到後面探測,就會用到此函數。
  5. av_find_best_stream(), 當視頻被解封裝出來後,需要分開處理音頻和視頻,需要找到對應的音頻流和視頻流
  6. 解封裝後涉及到的結構體:

AVFormatContext: 封裝的上下文

AVStream : 存放的是音頻流或視頻流的參數信息

AVPacket: 針對於具體的解封裝完後的一個一個的數據包。

av_read_frame() 用於讀取一個AVPacket,AVPacket裏面包含了這個包的pts,dts,還有這個包的stream index(它是音頻還是視頻),是否是關鍵幀,AVPacket把h264數據的間隔符去掉了。

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