Синтезируйте SPS и PPS для неполного потока H264 для iOS VideoToolbox

У меня есть IP-камера AXIS (M1054), которая отправляет поток H264 / RTP через RTSP.

К сожалению, они вообще не отправляют NALU SPS и PPS, они только передают (фрагментированные) фрагменты кодека.

Я пытаюсь декодировать этот поток с помощью платформы iOS VideoToolbox, которой требуется кортеж H264 SPS и PPS для правильной настройки CMFormatDescription.

Интересно, как я могу синтезировать необходимые наборы параметров, глядя на фактические срезы H264?

Обновление: я записал пример сеанса, в котором mplayer удается отобразить поток через Wireshark. Файл захвата находится здесь, и вы можете увидеть всю настройку RTSP как ну и пару секунд RTP.


person DrMickeyLauer    schedule 19.03.2019    source источник


Ответы (1)


RTP состоит из 3 наборов потоков.

  1. RTP для СМИ
  2. RTSP для управления соединением
  3. RTCP для подтверждения отправителя и отметок времени.

Хотя SPS / PPS часто находится внутри потока и транспортируется через RTP, его не должно быть (а может и не должно быть). SPS / PPS передается как часть процесса настройки (RTSP). Обычно я рекомендую запустить http://www.live555.com/ в отладчике, чтобы узнать подробности процесс - но http://www.live555.com/ в настоящее время не работает.

В очень редких случаях вы можете воссоздать SPS / PPS из хорошо известного ограниченного потока H.264. Но в целом нельзя. Таким образом, SPS / PPS - это метаданные потока H.264, которые больше нигде не хранятся с избыточностью.

Так что если вы ознакомитесь с процессом настройки - RTSP - это будет довольно очевидно.

person Markus Schumann    schedule 19.03.2019
comment
Это строка a=fmtp:96 packetization-mode=1; profile-level-id=420029; sprop-parameter-sets=Z0IAKeKQCgDLYC3AQEBpB4kRUA==,aM48gA==? Если да, то как я смогу закодировать это как NALU SPS и PPS, а это то, что нужно iOS / VideoToolbox? - person DrMickeyLauer; 19.03.2019
comment
Дальнейшая проверка показывает, что sprop-parameters-sets действительно является версией SPS и PPS в кодировке base64. Большое спасибо! - person DrMickeyLauer; 19.03.2019