我正在为mpeg4视频流的自定义实现编写一个视频解码器(使用FFMPEG/AVCodec)。这个视频流的特点是,它可以分裂成许多“儿子”流,基于同一父母创建许多P帧。我试图解码的视频流实际上是一种“视频树”。事情是这样的:如何创建解码器的完整副本?
I <--P <--P <---------------------P <-------------- P <------------ P
\ <--P <--P <--P \ <--P <--P \ <--P <--P
我已经写了,当我决定遵循一条路径的正常工作基本解码器,问题是,当我尝试按照视频中的树不止一条路径。此时我需要“解锁”我的解码器来跟踪两个不同的视频流。分裂可能不仅发生在关键帧之后,而且甚至发生在P帧之后,所以我需要复制AVCodecContext(我使用avcodec_copy_context
),但它似乎从干净的状态创建新的解码器..它似乎忽略了以前的视频状态,所以解码的P帧被“应用”到空的视频帧。 可能使用avcodec_copy_context
复制上下文是不够的...任何建议?我如何复制上下文和解码器的完整状态? 或者,有没有其他的方式来解码我的流使用引用? 谢谢!
你有没有设法找到如何做一个AVCodecContext的深层副本? – zahirdhada