pts 是顯示的時間 dts是解碼的時間, 這個時間是用來做同步。
- av_register_all(), 註冊所有的格式。包括解封裝格式和加封裝格式。
- avformat_network_init(), 用於初始化網絡。FFmpeg本身也支持解封裝RTSP的數據,如果要解封裝網絡數據格式,則可調用該函數。
- avformat_open_input()。打開一個文件並解析。可解析的內容包括:視頻流、音頻流、視頻流參數、音頻流參數、視頻幀索引。
- avformat_find_stream_info(),查找格式和索引。有些早期格式它的索引並沒有放到頭當中,需要你到後面探測,就會用到此函數。
- av_find_best_stream(), 當視頻被解封裝出來後,需要分開處理音頻和視頻,需要找到對應的音頻流和視頻流
- 解封裝後涉及到的結構體:
AVFormatContext: 封裝的上下文
AVStream : 存放的是音頻流或視頻流的參數信息
AVPacket: 針對於具體的解封裝完後的一個一個的數據包。
av_read_frame() 用於讀取一個AVPacket,AVPacket裏面包含了這個包的pts,dts,還有這個包的stream index(它是音頻還是視頻),是否是關鍵幀,AVPacket把h264數據的間隔符去掉了。