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数据的间隔符去掉了。

发布了538 篇原创文章 · 获赞 1318 · 访问量 194万+

猜你喜欢

转载自blog.csdn.net/fanyun_01/article/details/90230325