хорошо, это так, я на самом деле хочу разобрать кадры из файла MOV. получить закодированные кадры h264. и мне удалось сделать это с помощью ffmpeg, но когда я пытаюсь сделать фильм снова с помощью ffmpeg -i test* test.mov
, я получаю test00: Invalid data found when processing input
, поэтому что-то не так со структурой кадров. насколько я понимаю, рамка должна выглядеть следующим образом:
00 00 00 01 XX data -------------
, где XX - это I-, P- или B-кадр. или более конкретно type(XX) = 0x0F && XX
говорит, что это I (тип (XX) = 5?), P (тип (XX) = 7?) или B (тип (XX) = 8?) кадр. Я не уверен насчет этого числа, я искал его, но не нашел хороших источников. так что это вопрос номер один, какое число должно быть NALU для разных кадров?
в любом случае, когда я использую av_read_frame для файла mov, я получаю кадр, который выглядит следующим образом:
4B = размер, 1B = XX и затем данные. (по крайней мере, это то, что я думаю, я получаю)
файлы, в которых я храню фреймы, всегда имеют размер , когда я смотрю на них в гекседиторе (конечно, в противном случае). и XX всегда равен 65 (т. е. type (XX) = 5) в первом, а затем 61 (т. е. type (XX) = 1) для пары кадров, а затем возвращается к 65 для одного кадра и т. д.
Я полагаю, что это такие кадры, как: I P P P P P P P I P P P P P P P P P P P P P P P .... но тогда мое предположение о номерах типов для различных типов кадров ложно, что весьма вероятно. (какие-либо предложения по прочтению об этом? кроме ISO / IEC 14496-10, я действительно не понимаю).
Я пытался удалить размер и добавить 00 00 00 01 перед байтом XX и данными, но безуспешно. Любые советы о том, как я могу изменить кадры, чтобы они были действительными кадрами в кодировке H264?