Поиск i-frame в пакете RTP - PullRequest
       51

Поиск i-frame в пакете RTP

1 голос
/ 08 марта 2011

Я использую RTSP в C # с помощью IP-камеры Axis.Все работает нормально, но когда я пытаюсь показать видео, я получаю первые несколько кадров с большим количеством зеленых патчей.Я подозреваю, что проблема заключается в том, что я не отправляю i-кадр первым клиенту.

Следовательно, я хочу знать алгоритм, необходимый для обнаружения i-кадра в пакете RTP.

Ответы [ 2 ]

1 голос
/ 09 марта 2011

при запуске сеанса RTSP сервер обычно запускает RTP-поток с данными конфигурации, за которыми следует первый I-кадр.

Можно предположить, что ваша камера Axis настроена на «всегда многоадресную передачу»."- в этом случае RTSP-связь приводит к описанию SDP, которое сообщает клиенту всю необходимую информацию о сети и потоковой передаче для приема многоадресного потока.

Поскольку многоадресный поток всегда присутствует, вы, скорее всего, сначала получите несколько P- или B-кадров (в зависимости от размера GOP).

Вы можете обнаруживать эти P / B-кадры в вашем RTP-клиенте точно так же, как вы определяли I-кадры, как предложил Ральф, идентифицируя их через тип блока NAL.Просто пропустите все кадры в RTP-клиенте, пока не получите первый I-кадр.Теперь вы можете переслать все следующие кадры в декодер.

или вы дали изменить настройки камеры!

jens.

ps: не забывайте, что у вас есть фрагментацияв вашем потоке RTP - это означает, что помимо заголовка RTP есть некоторая информация фрагментации.Прежде чем идентифицировать фрейм, вы должны собрать его.

0 голосов
/ 08 марта 2011

Зависит от типа видео. Например, если вы возьмете H.264, посмотрите заголовок блока NAL, чтобы проверить тип блока nal.

Зеленые пятна действительно могут быть вызваны тем, что они не получили первый iframe.

...