У меня есть так называемые "блоки", в которых хранятся некоторые кадры MPEG4 (I, p, p, p, p ...).Для каждого "блока" кадр начинается с кадра "I" и заканчивается до следующего кадра "I".(VOL - «visual_object_sequence_start_code» всегда включен перед кадром «I»)
Мне нужно иметь возможность воспроизводить эти «блочные» кадры в режиме «назад».Толстым является то, что:
Невозможно просто взять последний кадр в моем блоке и выполнить декодирование, потому что это "P" кадр и ему нужен "inter frame (I)"быть правильно декодированным.
Я не могу просто взять мой первый кадр" I ", затем передать его функции" avcodec_decode_video "ffmpeg и только потом передать мой последний" P "кадр к ffmpeg, потому что последний кадр "P" зависит от кадра "P" перед ним, верно?(ну ... насколько я тестировал этот метод, у моего последнего декодированного P-кадра были артефакты)
Теперь я выполняю обратную игру - сначала декодирую все мои«блокировать» кадры в RGB и сохранять их в памяти.(в большинстве случаев это будет ~ 25 кадров на блок максимум.) Но этот метод действительно требует много памяти ... (особенно, если разрешение кадров высокое) И у меня есть ощущение, что это неправильный способ сделать это...
Итак, я хотел бы спросить, есть ли у кого-нибудь предложения о том, как можно выполнить это "обратное" декодирование / воспроизведение кадра с помощью FFmpeg?
Спасибо