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