av_read_frame之后的ffmpeg中的数据包大小



我对ffmpeg有以下疑问。请澄清。

1.我正在使用ffmpeg读取mp4文件,并在执行av_read_frame之后我正在获取视频(stream_index=0)、音频(stream_inindex=1)数据包首先,没有视频/音频分组的到来顺序。这是标准案例吗。

2.视频数据包有各种大小,从最小的14到最大的21824。请指出视频数据包大小不同的原因对于视频,一个数据包意味着一帧,因此如果对于视频,pkt->size=14也等于一帧视频。(pkt属于AVPacket类型)。

3.如果我们在解析时在Probe函数中对传入的mp4流进行解复用,并将信息存储在某个缓冲区或调用av_read_frame对其进行解复用。

4.在ffmpeg中,是否可以对mp4文件进行解复用,然后在视频分组具有stream_index=1的一个分组流中分配a/v,并且对于音频=0分配a/v。或者它必须在单独的流中。

5.传输流的ffmpeg处理与mp4文件之间的差异。如果两者都被去复用,以相同的方式解码或者是不同的。

问候马扬克

媒体文件是从多个流创建的。流可以是mnay类型。音频、视频、字幕、元数据等。但流不能有多种类型。

1) av_read_frame将(通常)按帧写入文件的顺序返回帧。如果创建文件的软件没有单调地对它们进行多路复用,那么就不能单调地读取它。

2) 这正是视频压缩的工作原理。编解码器只存储帧之间的更改。如果运动非常小,那么一帧可能与前一帧非常相似,因此delta非常小。

3) 这不是一个问题。

4) 编号

5) 基本上没有。但是文件类型有一些不同。mp4需要随机接入,而TS不需要。

最新更新