私はmpeg4ビデオストリームのカスタム実装にビデオデコーダ(FFMPEG/AVCodecを使用)を書いています。このビデオストリームの特質は、同じ親に基づいて多くのPフレームを生成する多くの「息子」ストリームに分割できるということです。デコードしようとしているビデオストリームは、実際には「ビデオツリー」の一種です。このような何か:デコーダの完全なコピーを作成するにはどうしたらいいですか?
I <--P <--P <---------------------P <-------------- P <------------ P
\ <--P <--P <--P \ <--P <--P \ <--P <--P
私はすでに私は1つのパスに従うことを決定したときに正常に動作し、基本的なデコーダを書いてきた私は、ビデオ・ツリーに複数のパスをたどるしようとすると、問題があります。この時点で、2つの異なるビデオストリームをフォローするためにデコーダを「フォーク」する必要があります。分割はキーフレームの後だけでなく、Pフレームの後でも発生する可能性があるので、AVCodecContext(私はavcodec_copy_context
を使用します)を複製する必要がありますが、新しいデコーダをクリーンな状態から作成するようです。デコードされたPフレームは空のビデオフレームに「適用」される。 おそらくavcodec_copy_context
を使用してコンテキストをコピーするだけでは不十分です...任意の提案ですか?どのようにしてコンテキストとデコーダの完全な状態を複製できますか? 参照を使用してストリームをデコードする他の方法はありますか? ありがとう!
AVCodecContextのディープコピーを作成する方法を見つけたことがありますか? – zahirdhada