Профили данных RTP
В коммуникационных приложениях для общения, аудио и видео конференций в режиме реального времени, использующих транспортный протокол реального времени (RTP), применяется Протокол описания сеанса (SDP), чтобы описать технические параметры потоков медиа-данных, переносимых в мультимедиа сессии. Такой набор параметров RTP потока мультимедиа-данных и методы его кодирования известен как профиль RTP, или 'RTP audio video profile' ( 'RTP / AVP' ). Каждый профиль определен с помощью стандартного идентификатора типа полезной нагрузки (payload type).[1]
Использование профилей в SDP
Сообщения SDP с параметрами медиа-сессии используются в протоколах IP-телефонии — SIP, MGCP. Протокол SIP или MGCP служит для процедур инициации и установления соединения, а встраиваемые сообщения SDP — для описания возможных параметров формируемой медиа-сессии между устройствами.
Рассмотрим, как тип мультимедиа-данных определяется в SDP на конкретном примере.
v=0 o=- 1815849 0 IN IP4 194.67.15.181 s=Cisco SDP 0 c=IN IP4 194.67.15.181 t=0 0 m=audio 20062 RTP/AVP 99 18 101 100 a=rtpmap:99 G.729b/8000 a=rtpmap:101 telephone-event/8000 a=fmtp:101 0-15 a=rtpmap:100 X-NSE/8000 a=fmtp:100 200-202
В приведенном выше сообщении SDP содержится следующая информация. Медиа-трафик будет ожидаться на устройстве с IP-адресом (IPv4) 194.167.15.181, порту 20062. Данное устройство поддерживает несколько разновидностей аудио-трафика (кодеков), описанных при помощи типов (payload type) 99, 18, 100 и 101. Это указано в строке m=audio. Ниже, в строчках a=rtpmap приводится уточнение параметров типов данных, так как некоторые типы являются динамическими и не могут быть определены однозначно, просто по строке m=audio. Так, под типом данных 99 данное устройство подразумевает голосовой кодек G.729b (G.729 Annex B, то есть с поддержкой подавления шума). Динамически тип данных 101 в данном случае, это возможность приёма тональных сигналов DTMF (telephone event) по стандарту, описанному в RFC 2833. Для payload type 18 уточнений нет, и это может означать, что устройство поддерживает голосовой кодек G.729, вместе с более простой вариацией того же кодека описанного в приложении Annex A (или кодек G.729a), так как тип данных 18 однозначно закреплён за этими кодеками.
Типы данных для звука и видео в RTP/AVP
В RFC 3551 перечислены детали каждого формата полезной нагрузки (payload type) или ссылка на подробное описание. Идентификаторы с 0 по 95, зарезервированы для конкретных типов данных статически. Идентификаторы полезной нагрузки с 96 по 127 используется для полезной нагрузки, определяемой динамическии в процессе установления сессии. Документ рекомендует динамические назначенные номера портов, хотя номера портов 5004 и 5005 были зарегистрированы для использования профиля при динамическом назначении порт не требуется. Стандарт также описывает процесс регистрации новых типов полезной нагрузки в IANA.
Приложения, работающие с этими профилями должны всегда поддерживать PCMU (кодек G.711 с μ-законом, тип полезной нагрузки 0). Ранее DVI4 (тип полезной нагрузки 5) также рекомендовался в таком качестве, но эта рекомендация была удалена в августе 2013 году RFC 7007, потому что «многие реализации RTP не поддерживают DVI4, и есть мало оснований, чтобы использовать его, когда доступны гораздо более современные кодеки.»
Тип данных (Payload type / PT) | Название | Тип | Кол-во каналов | Тактовая частота (Гц)[Примечание 1] | Размер фрейма (мс) | Размер пакета по умолчанию (мс) | Описание | Ссылки |
---|---|---|---|---|---|---|---|---|
0 | PCMU | звук | 1 | 8000 | любой | 20 | ITU-T G.711 PCM µ-Law звук 64 Кбит/с | RFC 3551 |
1 | зарезервировано (ранее 1016) | звук | 1 | 8000 | зарезервировано, ранее CELP звук 4.8 Кбит/с | RFC 3551, ранее RFC 1890 | ||
2 | зарезервировано (ранее G.721) | звук | 1 | 8000 | зарезервировано, ранее ITU-T G.721 ADPCM звук 32 Кбит/с | RFC 3551, ранее RFC 1890 | ||
3 | GSM | звук | 1 | 8000 | 20 | 20 | European GSM Full Rate звук 13 Кбит/с (GSM 06.10) | RFC 3551 |
4 | G.723 | звук | 1 | 8000 | 30 | 30 | ITU-T G.723.1 звук | RFC 3551 |
5 | DVI4 | звук | 1 | 8000 | любой | 20 | IMA ADPCM звук 32 Кбит/с | RFC 3551 |
6 | DVI4 | звук | 1 | 16000 | любой | 20 | IMA ADPCM звук 64 Кбит/с | RFC 3551 |
7 | LPC | звук | 1 | 8000 | любой | 20 | Experimental Linear Predictive Coding звук 5.6 Кбит/с | RFC 3551 |
8 | PCMA | звук | 1 | 8000 | любой | 20 | ITU-T G.711 PCM A-Law звук 64 Кбит/с | RFC 3551 |
9 | G.722 | звук | 1 | 8000[Примечание 2] | любой | 20 | ITU-T G.722 звук 64 Кбит/с | RFC 3551 — Page 14 |
10 | L16 | звук | 2 | 44100 | любой | 20 | Linear PCM 16-битный стерео звук 1411.2 Кбит/с,[2][3][4] несжатый | RFC 3551, Page 27 |
11 | L16 | звук | 1 | 44100 | любой | 20 | Linear PCM 16-битный звук 705.6 Кбит/с, несжатый | RFC 3551, Page 27 |
12 | QCELP | звук | 1 | 8000 | 20 | 20 | QCELP (Qualcomm Code Excited Linear Prediction) | RFC 2658, RFC 3551 |
13 | CN | звук | 1 | 8000 | Комфортный шум.
Тип полезной нагрузки используются с кодеками, которые не поддерживают комфортный шум в алгоритме кодирования, то есть в таких как G.711, G.722.1, G.722, G.726, G.727, G.728, GSM 06.10, Siren и RTAudio. |
RFC 3389 | ||
14 | MPA | звук | 1, 2 | 90000 | 8-72 | MPEG-1 или MPEG-2 только звук | RFC 3551, RFC 2250 | |
15 | G728 | звук | 1 | 8000 | 2.5 | 20 | ITU-T G.728 звук 16 Кбит/с | RFC 3551 |
16 | DVI4 | звук | 1 | 11025 | любой | 20 | IMA ADPCM звук 44.1 Кбит/с | RFC 3551 |
17 | DVI4 | звук | 1 | 22050 | любой | 20 | IMA ADPCM звук 88.2 Кбит/с | RFC 3551 |
18 | G729 | звук | 1 | 8000 | 10 | 20 | ITU-T G.729 и G.729a звук 8 Кбит/с | RFC 3551, Page 20 |
25 | CELB | видео | 90000 | Sun CellB видео[5] | RFC 2029 | |||
26 | JPEG | видео | 90000 | JPEG видео | RFC 2435 | |||
28 | nv | видео | 90000 | Xerox PARC's Network Video (nv)[6] | RFC 3551, Page 32 | |||
31 | H261 | видео | 90000 | ITU-T H.261 видео | RFC 4587 | |||
32 | MPV | видео | 90000 | MPEG-1 и MPEG-2 видео | RFC 2250 | |||
33 | MP2T | звук/видео | 90000 | MPEG-2 транспортный поток | RFC 2250 | |||
34 | H263 | видео | 90000 | H.263 видео, первая версия (1996) | RFC 3551, RFC 2190 | |||
динамический | H263-1998 | видео | 90000 | H.263 видео, вторая версия (1998) | RFC 3551, RFC 4629, RFC 2190 | |||
динамический | H263-2000 | видео | 90000 | H.263 видео, третья версия (2000) | RFC 4629 | |||
динамический (или профиль) | H264 AVC | видео | 90000 | H.264 видео (MPEG-4 Part 10) | RFC 6184, ранее RFC 3984 | |||
динамический (или профиль) | H264 SVC | видео | 90000 | H.264 видео | RFC 6190 | |||
динамический (или профиль) | H265 | видео | 90000 | H.265 видео (HEVC) | draft-ietf-payload-rtp-h265 | |||
динамический (или профиль) | theora | видео | 90000 | Theora видео | draft-barbato-avt-rtp-theora | |||
динамический | iLBC | звук | 1 | 8000 | 20, 30 | 20, 30 | iLBC 13.33 или 15.2 Кбит/с | RFC 3952 |
динамический | PCMA-WB | звук | 1 | 16000 | 5 | ITU-T G.711.1 A-law | RFC 5391 | |
динамический | PCMU-WB | звук | 1 | 16000 | 5 | ITU-T G.711.1 µ-law | RFC 5391 | |
динамический | G718 | звук | 32000 (placeholder) | 20 | ITU-T G.718 | draft-ietf-payload-rtp-g718 | ||
динамический | G719 | звук | разное | 48000 | 20 | ITU-T G.719 | RFC 5404 | |
динамический | G7221 | звук | 16000, 32000 | 20 | ITU-T G.722.1 и G.722.1 Annex C | RFC 5577 | ||
динамический | G726-16 | звук | 1 | 8000 | любой | 20 | ITU-T G.726 звук 16 Кбит/с | RFC 3551 |
динамический | G726-24 | звук | 1 | 8000 | любой | 20 | ITU-T G.726 звук 24 Кбит/с | RFC 3551 |
динамический | G726-32 | звук | 1 | 8000 | любой | 20 | ITU-T G.726 звук 32 Кбит/с | RFC 3551 |
динамический | G726-40 | звук | 1 | 8000 | любой | 20 | ITU-T G.726 звук 40 Кбит/с | RFC 3551 |
динамический | G729D | звук | 1 | 8000 | 10 | 20 | ITU-T G.729 Annex D | RFC 3551 |
динамический | G729E | звук | 1 | 8000 | 10 | 20 | ITU-T G.729 Annex E | RFC 3551 |
динамический | G7291 | звук | 16000 | 20 | ITU-T G.729.1 | RFC 4749 | ||
динамический | GSM-EFR | звук | 1 | 8000 | 20 | 20 | ITU-T GSM-EFR (GSM 06.60) | RFC 3551 |
динамический | GSM-HR-08 | звук | 1 | 8000 | 20 | ITU-T GSM-HR (GSM 06.20) | RFC 5993 | |
динамический (или профиль) | AMR | звук | разное | 8000 | 20 | Adaptive Multi-Rate звук | RFC 4867 | |
динамический (или профиль) | AMR-WB | звук | разное | 16000 | 20 | AMR-WB звук (ITU-T G.722.2) | RFC 4867 | |
динамический (или профиль) | AMR-WB+ | звук | 1, 2 или пустой | 72000 | 13.3-40 | AMR-WB+ звук | RFC 4352 | |
динамический (или профиль) | vorbis | звук | разное | разное | Vorbis звук | RFC 5215 | ||
динамический (или профиль) | opus | звук | 1, 2 | 48000[Примечание 3] | 2.5-60 | 20 | Opus аудио | RFC 7587 |
динамический (или профиль) | speex | звук | 1 | 8000, 16000, 32000 | 20 | Speex звук | RFC 5574 | |
динамический | mpa-robust | звук | 1, 2 | 90000 | 24-72 | Loss-Tolerant MP3 звук | RFC 5219 (ранее RFC 3119) | |
динамический (или профиль) | MP4A-LATM | звук | 90000 или другие | MPEG-4 Audio | RFC 6416 (ранее RFC 3016) | |||
динамический (или профиль) | MP4V-ES | видео | 90000 или другие | MPEG-4 Visual | RFC 6416 (ранее RFC 3016) | |||
динамический (или профиль) | mpeg4-generic | звук/видео | 90000 или другой | MPEG-4 Elementary Streams | RFC 3640 | |||
динамический | VP8 | видео | 90000 | VP8 видео | draft-ietf-payload-vp8 | |||
динамический | VP9 | видео | 90000 | VP9 видео | draft-uberti-payload-vp9 | |||
динамический | L8 | звук | разное | разное | любой | 20 | Linear PCM 8-битный звук со смещением 128 | RFC 3551 Раздел 4.5.10 и Таблица 5 |
динамический | DAT12 | звук | разное | разное | любой | 20 (по аналогии с L16) | IEC 61119 12-битный нелинейный звук | RFC 3190 Раздел 3 |
динамический | L16 | звук | разное | разное | любой | 20 | Linear PCM 16-битный звук | RFC 3551 раздел 4.5.11, RFC 2586 |
динамический | L20 | звук | разное | разное | любой | 20 (по аналогии с L16) | Linear PCM 20-битный звук | RFC 3190 раздел 4 |
динамический | L24 | звук | разное | разное | любой | 20 (по аналогии с L16) | Linear PCM 24-битный звук | RFC 3190 раздел 4 |
динамический | raw | видео | 90000 | Несжатое видеоизображение | RFC 4175 | |||
динамический | ac3 | звук | разное | 32000, 44100, 48000 | Dolby AC-3 звук | RFC 4184 | ||
динамический | eac3 | звук | разное | 32000, 44100, 48000 | Enhanced AC-3 звук | RFC 4598 | ||
динамический | t140 | текст | 1000 | Текстовые сообщения (Text over IP) | RFC 4103 | |||
динамический | EVRC EVRC0 EVRC1 |
звук | 8000 | EVRC звук | RFC 4788 | |||
динамический | EVRCB EVRCB0 EVRCB1 |
звук | 8000 | EVRC-B звук | RFC 4788 | |||
динамический | EVRCWB EVRCWB0 EVRCWB1 |
звук | 16000 | EVRC-WB звук | RFC 5188 | |||
динамический | jpeg2000 | видео | 90000 | JPEG 2000 видео | RFC 5371 | |||
динамический | UEMCLIP | звук | 8000, 16000 | UEMCLIP звук | RFC 5686 | |||
динамический | ATRAC3 | звук | 44100 | ATRAC3 звук | RFC 5584 | |||
динамический | ATRAC-X | звук | 44100, 48000 | ATRAC3+ звук | RFC 5584 | |||
динамический | ATRAC-ADVANCED-LOSSLESS | звук | разное | ATRAC Advanced Lossless звук | RFC 5584 | |||
динамический | DV | видео | 90000 | DV видео | RFC 3189 | |||
динамический | BT656 | видео | ITU-R BT.656 видео | RFC 3555 | ||||
динамический | BMPEG | видео | Встроенное MPEG-2 видеоизображение | RFC 2343 | ||||
динамический | SMPTE292M | видео | SMPTE 292M видео | RFC 3497 | ||||
динамический | RED | звук | Резервные звуковые данные | RFC 2198 | ||||
динамический | VDVI | звук | Звук DVI4 с изменяемой частотой | RFC 3551 | ||||
динамический | MP1S | видео | MPEG-1 Systems потоковое видео | RFC 2250 | ||||
динамический | MP2P | видео | MPEG-2 Program потоковое видео | RFC 2250 | ||||
динамический | tone | звук | разное | tone | RFC 4733 | |||
динамический | telephone-event | звук | разное | DTMF сигнал | RFC 4733 |
- «Тактовая частота» — это скорость, с которой метка в заголовке RTP увеличивается, что бы не быть такой же, как частота дискретизации кодека. Например, кодеки, как правило, используют тактовую частоту 90000, так что их кадры могут быть более точно совпадает с временной меткой RTCP NTP, хотя видео частоты дискретизации, как правило, в диапазоне от 1 до 60 семплов в секунду.
- Хотя частотой дискретизации для G.722 является 16 000, его тактовая частота может быть и 8000 для обратной совместимости с RFC 1890, в котором неправильно используется это значение[1].
- Поскольку Opus можно изменить частоту дискретизации динамически, его тактовая частота установлена как 48000, даже когда кодек будет работать при пониженной частотой дискретизации. Параметры
maxplaybackrate
иsprop-maxcapturerate
в SDP может быть использован для указания подсказки / предпочтения о максимальной частоте дискретизации для кодирования / декодирования.
См. также
Ссылки
- RFC 3551, RTP Profile for Audio and Video Conferences with Minimal Control, H. Schulzrinne, S. Casner, The Internet Society (July 2003).
- RFC 2586 - The Audio/L16 MIME content type (May 1999). Дата обращения: 16 марта 2010.
- RFC 3108 - Conventions for the use of the Session Description Protocol (SDP) for ATM Bearer Connections (May 2001). Дата обращения: 16 марта 2010.
- RFC 4856 - Media Type Registration of Payload Formats in the RTP Profile for Audio and Video Conferences - Registration of Media Type audio/L16 (March 2007). Дата обращения: 16 марта 2010.
- XIL Programmer’s Guide, Chapter 22 «CellB Codec». August 1997. Retrieved on 2014-07-19.
- nv — network video on Henning Schulzrinne’s website, Network Video on The University of Toronto’s website, Retrieved on 2009-07-09.