Как искать определенное время в потоке RTP? - PullRequest
1 голос
/ 27 мая 2010

Я транслирую предварительно записанное видео 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-ы, а не кадры между ними?

...