저는 mpeg4 비디오 스트림의 사용자 정의 구현을 위해 비디오 디코더 (FFMPEG/AVCodec 사용)를 작성하고 있습니다. 이 비디오 스트림의 특성은 동일한 "부모"를 기반으로 많은 P 프레임을 만드는 많은 "아들"스트림으로 나눌 수 있다는 것입니다. 디코딩하려고하는 비디오 스트림은 사실 일종의 "비디오 트리"입니다. 이런 식으로 뭔가 : 나는 비디오 트리에서 하나 개 이상의 경로를 따라갈 때디코더의 전체 복사본을 만들려면 어떻게해야합니까?
I <--P <--P <---------------------P <-------------- P <------------ P
\ <--P <--P <--P \ <--P <--P \ <--P <--P
가 이미 나는 하나 개의 경로를 따라하기로 결정 때 잘 작동 기본 디코더를 작성했습니다는 문제입니다. 이 시점에서 두 개의 다른 비디오 스트림을 따라 가려면 디코더를 "fork"해야합니다. 분할은 키 프레임 후에 만 발생할 수 있지만 P 프레임 이후에도 AVCodecContext를 복사해야합니다 (내가 avcodec_copy_context
을 사용합니다). 그러나 새로운 상태의 디코더를 만드는 것처럼 보입니다. 이전 비디오를 무시하는 것 같습니다. 상태이므로 디코딩 된 P 프레임은 빈 비디오 프레임에 "적용"됩니다. 아마도 avcodec_copy_context
을 사용하여 컨텍스트를 복사하는 것으로 충분하지 않습니다 ... 어떤 제안이 있습니까? 어떻게 컨텍스트와 디코더의 전체 상태를 복제 할 수 있습니까? 또는 참조를 사용하여 스트림을 디코딩 할 다른 방법이 있습니까? 감사합니다.
AVCodecContext의 전체 복사본을 만드는 방법을 찾지 못하셨습니까? – zahirdhada