2013-12-17 3 views
2

Я пытаюсь понять, что является обязательным параметром в SDP, чтобы иметь возможность декодировать H264 из RTP-пакетов.Наборы параметров sprop-параметров или идентификатор уровня уровня SDP, необходимые для декодирования H264?

Это связано с this question, поскольку ответ на этот вопрос работает только в небольшом числе случаев.

Пример

Я потоковый VLC с помощью следующей команды.

vlc -vvv sample_video/big_buck_bunny_480p_h264.mov --sout '#transcode{vcodec=h264,vb=700,fps=20,scale=0.25,acodec=none}:rtp{dst=10.5.110.117,port=5004,ttl=1}' 

Это перекодирует видео, чтобы:

  • Поток: 700Kbps
  • Скорость
  • Рама: 20 в секунду
  • Разрешение: 25% от первоначального

ресиверу принимает и интерпретирует поток со следующим SDP-файлом (удалите первую строку, ее просто имя).

//test.sdp 
c=IN IP4 10.5.110.117 
m=video 5004 RTP/AVP 96 
a=rtpmap:96 H264/90000 
a=fmtp:96 profile-level-id=640014;sprop-parameter-sets=Z2QAFKzZQ0R+f/zBfMMAQAAAAwBAAAAKI8UKZYA=,aOvssiw=; 

Команда для запуска: vlc test.sdp

Документ доступен here, названный SIP Видео Профиль Best Practices в главе 7.2 для профильного уровня ид состояний:

профиля уровня -id

Указано как необязательное (например, все параметры) в RFC 6184, параметр «уровень уровня профиля» является основополагающим для настройки кодека , а также для любых дополнительных параметров, которые необходимо указать. Следовательно, все реализации должны включать этот параметр в свои SDP, и должен интерпретировать его при его получении. Если не включено, значение по умолчанию является 420010, как указано в RFC 6184.

В этом же документе говорится следующее за sprop-параметры наборов:

sprop-параметры-наборы

H.264 позволяет передавать информацию о последовательности и изображениях как внутри диапазона, так и и вне диапазона. Реализации SIP-видео должны сигнализировать эту информацию в соответствии с моделью, распространенной в H.323, и в подавляющее большинство существующих реализаций SIP-видео и , поэтому этот параметр не следует включать.

Задача 1

видео правильно интерпретированы на приемнике, даже когда profile-level-id удаляется.

//test.sdp 
c=IN IP4 10.5.110.117 
m=video 5004 RTP/AVP 96 
a=rtpmap:96 H264/90000 
a=fmtp:96 sprop-parameter-sets=Z2QAFKzZQ0R+f/zBfMMAQAAAAwBAAAAKI8UKZYA=,aOvssiw=; 

Это не работу без sprop-parameter-sets.

Задача 2

Я был провод ростовщичество различный RTCPs, ПСИ и SAPs и часто SDP не содержит sprop-parameter-sets.

Вопросы

  • Пожалуйста, объясните смысл и различия между двумя paramters
  • на основе ответа на вопрос выше, объяснить контраст, который возникает в задачах

ответ

3

Значения и основные отличия:

Как вы можете видеть в своем определении profile-level-id, он имеет значение по умолчанию и поэтому его можно опустить в согласовании сигнализации. Строка, содержащаяся в этом параметре, находится в hexadecimal format and it has 3 bytes, которые информируют декодер о profile, ограничениях и level, которые будут использоваться для отправки данных. Эти настройки определяют несколько параметров, таких как битрейт, разрешение, тип пакетов ...

Параметр sprop-parameter-sets можно рассматривать как ключ к декодированию данных, которые вы будете отправлять. Он содержит несколько байтов, которые будут использоваться для кодирования данных, и поэтому вы делитесь им с ресивером, чтобы он мог декодировать видеопакеты. Он также может быть исключен из сигнализации, но они являются обязательными для декодера, поэтому они также могут быть отправлены внутри диапазона. Поэтому, если вы опустите их в sdp, их нужно отправить в пакеты. Приемник может только декодировать данные после получения этой информации.

Задача 1:

Как отмечалось ранее, profile-level-id может быть опущена, и он по-прежнему работает, потому что по умолчанию 420010 будет использоваться. Единственное различие заключается в том, что настройки будут разными, и, вероятно, это повлияет на качество видео. Например, 42 по умолчанию ссылается на Constrained Baseline Profile (CBP), а 64 в вашем начальном значении в SDP ссылается на High Profile (HiP).

Видео не работает, когда sprop-parameter-sets отсутствует, вероятно, потому, что vlc не поддерживает отправку этих данных в полосе, и, как я объяснил выше, это обязательно.

Задача 2:

Многие реализации SIP имеет поддержку для отправки sprop-parameter-sets в полосе, и это то, что вы захвата. Проверьте пакеты h264 в Wireshark, и вы увидите описание этих значений в некоторых пакетах.

Смежные вопросы