Мультимедиа поверх IP. RTSP — различия между версиями
Alex z (обсуждение | вклад) (→RTSP) |
Alex z (обсуждение | вклад) (→Структура пакета) |
||
Строка 33: | Строка 33: | ||
== Структура пакета == | == Структура пакета == | ||
− | В заголовке RTP размещают данные | + | В заголовке RTP размещают данные необходимые для декодирования аудио- и видеоданных. |
Также передаются временная метка и номер пакета. Эти параметры позволяют определить порядок и момент декодирования каждого пакета, а также интерполировать потерянные пакеты. | Также передаются временная метка и номер пакета. Эти параметры позволяют определить порядок и момент декодирования каждого пакета, а также интерполировать потерянные пакеты. | ||
Версия 19:25, 3 апреля 2015
Содержание
RTSP
Потоковый протокол реального времени (Real Time Streaming Protocol, RTSP), прикладной протокол, предназначенным для использования в системах, работающих с мультимедиа данными, и позволяющий клиенту удалённо управлять потоком данных с сервера, предоставляя возможность выполнения команд, таких как «Старт», «Стоп», а также доступа по времени к файлам, расположенным на сервере.
RTSP не выполняет сжатие, а также не определяет метод инкапсуляции мультимедийных данных и транспортные протоколы. Передача потоковых данных сама по себе не является частью протокола RTSP. Большинство серверов RTSP используют для этого стандартный транспортный протокол реального времени(RTP), осуществляющий передачу аудио- и видеоданных.
Пример
Формат RTSP запросов
Запрос на сервер посылается в текстовом виде в формате: "метод абсолютный_адрес контент версия_протокола". Вместе с запросом могут быть переданы дополнительные служебные поля (на новых строчках запроса).
Пример запроса: "rtsp://example.com/movie.mp4 RTSP/1.0"
Список команд
- DESCRIBE - запрос описания контента
- OPTIONS - запрос поддерживаемых методов
- PLAY - запрос начала вещания контента
- PAUSE - запрос временной остановки вещания
- RECORD - запрос на записывание контента сервером
- REDIRECT - перенаправление на другой контент
- SETUP - запрос установки транспортного механизма для медиа-контента
- ANNOUNCE - обновление данных описания контента
- GET_PARAMETER - запрос указанных параметров у сервера
- SET_PARAMETER - установка параметров сервера
- TEARDOWN - остановка потока и освобождение ресурсов
RTP
Протокол RTP (англ. Real-time Transport Protocol) работает на прикладном уровне и используется при передаче трафика реального времени. Чаще всего данный протакол реализуется над UDP. Протокол TCP так же стандартизирован для передачи RTP, но как правило не используется, так как надежность передачи в TCP формирует временные задержки.
Структура пакета
В заголовке RTP размещают данные необходимые для декодирования аудио- и видеоданных. Также передаются временная метка и номер пакета. Эти параметры позволяют определить порядок и момент декодирования каждого пакета, а также интерполировать потерянные пакеты.
|
0-1 — Ver. (2 бита) указывает версию протокола. Текущая версия — 2.
2 — P (один бит) используется в случаях, когда RTP-пакет дополняется пустыми байтами на конце.
3 — X (один бит) используется для указания расширений протокола, задействованных в пакете.
4-7 — CC (4 бита) содержит количество CSRC-идентификаторов, следующих за постоянным заголовком.
8 — M (один бит) используется на уровне приложения и определяется профилем. Если это поле установлено, то данные пакета имеют какое-то особое значение для приложения.
9-15 — PT (7 бит) указывает формат полезной нагрузки и определяет её интерпретацию приложением.
64-95 — SSRC указывает источник синхронизации.
EHL (Extension Header Length) — — количество 32-битных слов в блоке данных расширения заголовка.
L — последний байт в пакете, определяющий длину области набивки в байтах (используется для выравнивания в последнем пакете).
Восстановление потерянных пакетов
FEC
Прямая коррекция ошибок (англ. Forward Error Correction, FEC) — техника кодирования/декодирования, позволяющая исправлять ошибки методом упреждения. Применяется для исправления сбоев и ошибок при передаче данных, путём передачи избыточной служебной информации, на основе которой может быть восстановлена первоначальное содержание посылки. Например через каждые четыре пакета, можно передавать пакет контроля по четности, который содержит xor предыдущих четырёх. Таким образом можно восстановить поток при потере одного из пяти пакетов.
Интерливинг
interleaving (чередование) - этот подход базируется на смешивании (интерливинге) порядка медиа перед передачей и сортировке (деинтерливинге) при его получении. Таким образом, благодаря перемешиванию не будет потеряно следующих друг за другом пакетов, и один большой разрыв при проигрывании медиа не образуется. Например, пакет может содержать 5 мс проигрывания музыки. Если они были посланы по порядку, потеря пакета повлечет перерыв в проигрывании на 5 мс. Вместо этого все четные сэмплы интервала в 10 мс посылаются в одном пакете, а нечетные во втором. Теперь потеря третьего пакета означает не пропуск в музыке в 5 мс, а чередование пустых и заполненных музыкой коротких промежутков в течение 10 мс. С потерей можно легко справиться, если плеер использует интерполяцию, учитывая предыдущий и следующий образцы. В результате мы получим временную потерю в разрешении на 10 мс, но значительного прерывания не будет. Эта схема интерливинга работает только при отсутствии сжатия. Однако схема интерливинга может также применяться после сжатия, если есть возможность обнаружить границы сэмплов в сжатом потоке.
Литература
- RTSP
- RTP
- Прямая коррекция ошибок
- Э.Таненбаум Эндрю Компьютерные сети (5-е издание) - страница 755