Я транслирую предварительно записанное видео H264, которое имеет следующую структуру:
[I] [x] [x] [x] [I] [x] [x] [x] [I]...
Между IDR (я в моей структуре) у меня есть 32 (только 3 представлены здесь) других кадра (все другие вещи, которые не являются IDR, такие как SEI, SPS, PPS ... X-es)
Теперь давайте предположим, что время моих кадров такое:
TIME: 1 2 3 4 5 6 7 8 9
FRAME: [I] [x] [x] [x] [I] [x] [x] [x] [I]...
Теперь я хочу обратиться ко времени 4. Если я ищу этот кадр и отправляю его, картинка испортится, потому что декодеру нужен IDR для правильного декодирования, поэтому я прибег к поиску соответствующего IDR (в в этом случае один со временем 1) и отправка его в качестве кадра со временем 4. Итак, теперь картинка декодируется правильно, все хорошо ... но ... Если мой GOV равен 32, и мне нужно отправить не Кадр IDR с индексом 31, и если промежуток времени между ним и соответствующим IDR равен 3 секундам, я фактически получаю на 3 секунды раньше, чем желаемое время. Теперь, это не точно, потому что я не могу искать половину промежутка времени GOV. Кроме того, я не могу установить меньшее GOV, поэтому я хочу другие идеи ...
Моя другая идея состояла в том, чтобы отправить последний известный IDR, а затем отправить все другие не IDR-кадры, которые предшествуют тому, который я хочу, только я бы установил, чтобы все RTP-TIME были такими же, как соответствующий IDR. В этом случае изображение декодируется идеально, но теперь в вышеупомянутом случае 3 секунды, которые следуют за кадром без IDR с требуемым временем, быстро изменяются в декодере / проигрывателе (нет мгновенного поиска) ...
Есть идеи? Или я могу искать только IDR-ы, а не кадры между ними?