我对ffmpeg有疑问。请澄清。
1.我正在使用ffmpeg读取mp4文件并执行av_read_frame后 我正在获取视频(stream_index = 0),音频(stream_index = 1)数据包 首先,没有视频/音频数据包的来源。这是标准情况。
2.视频数据包的大小从最小值14到最大值21824.请指出视频数据包大小变化的原因,在某处 写道,对于视频,一个数据包意味着一个帧,所以如果视频pkt-> size = 14也等于一帧视频。(pkt是AVPacket类型)。
3.如果我们在解析它时将Probe函数中的传入mp4流解复用并将信息存储在某个缓冲区中或调用av_read_frame解复用它。
4.在ffmpeg中可以对mp4文件进行解复用,然后在一个数据包流中分配一个/ v,其中视频数据包具有stream_index = 1,而对于audio = 0。 或者它必须在不同的流中。
5.传输流的ffmpeg处理和mp4文件之间的差异。 如果两者都被解复用,以相同的方式解码或者它们是不同的。
此致 Mayank
答案 0 :(得分:2)
从多个流创建媒体文件。流可以是mnay类型。音频,视频,字幕,元数据等。但流不能是多种类型。
1)av_read_frame将(通常)按照它们写入文件的顺序返回帧。如果创建该文件的软件没有单调复用它们,则无法单调读取它。
2)这正是视频压缩的工作原理。编解码器仅存储帧之间的更改。如果运动很少,那么一帧可能与前一帧非常相似,因此delta非常小。
3)这不是一个问题。
4)否。
5)很大程度上,没有。但是文件类型存在一些差异。 mp4需要随机访问,而TS则不需要。