Общие заголовки RTSP 2.0 — это заголовки, которые могут использоваться как в запросах, так и в ответах. Общие заголовки RTSP 2.0 перечислены в таблице 1
Общий заголовок «Media-Properties» используется в ответах метода SETUP или запросах метода PLAY_NOTIFY для указания свойств мультимедиа, которые в настоящее время применимы к сеансу RTSP. PLAY_NOTIFY МОЖЕТ быть использован для изменения этих свойств в любой момент. Однако клиент ДОЛЖЕН получить обновление до любого действия, связанного с вступлением в силу новых свойств мультимедиа. Для агрегированных сеансов заголовок Media-Properties будет возвращаться в каждом ответе SETUP. Заголовок, полученный в последнем ответе, является заголовком, который применяется ко всему сеансу с этого момента до любого будущего обновления. Заголовок МОЖЕТ быть включен без значения в запросы метода GET_PARAMETER к серверу с включенным заголовком Session для запроса текущих свойств мультимедиа для сеанса. Ответчик ДОЛЖЕН включать свойства мультимедиа текущего сеанса.
Свойства мультимедиа, выраженные этим заголовком, являются свойствами, применимыми ко всем мультимедиа в сеансе RTSP. Для агрегированных сеансов заголовок выражал объединенные медиа-свойства. В результате агрегирование мультимедиа МОЖЕТ привести к изменению свойств мультимедиа и, таким образом, содержимого заголовка Media-Properties, содержащегося в последующих ответах SETUP.
Заголовок содержит список значений свойств, которые применимы к текущим настроенным носителям или совокупности носителей, как указано URI RTSP в запросе. В заголовке нет порядка. Значения свойств должны быть помещены в одну группу, которая обрабатывает определенное ортогональное свойство. Значения или группы, которые выражают несколько свойств, НЕ ДОЛЖНЫ использоваться. Список свойств, которые могут быть выражены, МОЖЕТ быть расширен в любое время. Неизвестные значения свойств ДОЛЖНЫ игнорироваться.
Эта спецификация определяет следующие четыре группы и значения их свойств:
Random Access (Произвольный доступ)
Произвольный доступ (Random-Access): указывает, что возможен произвольный доступ. При желании может включать значение с плавающей запятой в секундах, указывающее наибольшую продолжительность между любыми двумя точками произвольного доступа в среде.
Только начало (Beginning-Only): поиск ограничен только началом.
Нет поиска (No-Seeking): поиск невозможен.
Content Modifications (Модификации контента)
Неизменный (Immutable): содержимое не будет изменено в течение времени жизни сеанса RTSP.
Динамический (Dynamic): содержимое может быть изменено на основе внешних методов или триггеров.
Прогрессирование времени (Time-Progressing): доступ к медиа происходит по мере того, как время настенных часов увеличивается.
Retention (Хранение)
Неограниченный (Unlimited): содержимое будет сохраняться в течение всего срока действия сеанса RTSP.
Ограниченное по времени (Time-Limited): содержимое будет храниться по крайней мере до указанного времени настенного часового пояса. Время должно быть указано в формате абсолютного времени, указанном в разделе 4.4.3 из RFC 7826.
Длительность времени (Time-Duration): каждая отдельная медиа-единица сохраняется как минимум в течение указанного времени. Это определение позволяет сохранять данные с помощью скользящего окна на основе времени. Продолжительность времени выражается как число с плавающей точкой в секундах. Значение 0.0 является действительным, так как это указывает на то, что в сеансе с прогрессирующим временем данные не сохраняются.
Supported Scale (Поддерживаемая шкала)
Шкалы (Scales): список в кавычках, разделенный запятыми, из одного или нескольких десятичных значений или диапазонов значений шкалы, поддерживаемых содержимым в произвольном порядке. Диапазон имеет начальное и конечное значение, разделенные двоеточием. Диапазон указывает, что контент поддерживает детальный выбор значений масштаба. Тонкая зернистость позволяет выполнять шаги, по крайней мере, не более одной десятой масштаба.
Считается, что контент поддерживает мелкозернистый выбор, когда сервер в ответ на заданное значение масштаба может создавать контент с фактическим масштабом, который составляет менее одной десятой единицы масштаба, то есть 0,1, от запрошенного значения. Отрицательные значения поддерживаются. Значение нуля «0» не имеет значения и НЕ ДОЛЖНО использоваться.
Примеры этого заголовка для контента по требованию и живого потока без записи:
On-demand:
Media-Properties: Random-Access=2.5, Unlimited, Immutable,
Scales="-20, -10, -4, 0.5:1.5, 4, 8, 10, 15, 20"
Live stream without recording/timeshifting:
Media-Properties: No-Seeking, Time-Progressing, Time-Duration=0.0
Синтаксис поля общего заголовка Media-Properties в RTSP 2.0
Media-Properties = "Media-Properties" HCOLON [media-prop-list]
media-prop-list = media-prop-value *(COMMA media-prop-value)
media-prop-value = ("Random-Access" [EQUAL POS-FLOAT])
/ "Beginning-Only"
/ "No-Seeking"
/ "Immutable"
/ "Dynamic"
/ "Time-Progressing"
/ "Unlimited"
/ ("Time-Limited" EQUAL utc-time)
/ ("Time-Duration" EQUAL POS-FLOAT)
/ ("Scales" EQUAL scale-value-list)
/ media-prop-ext
media-prop-ext = token [EQUAL (1*rtsp-unreserved / quoted-string)]
scale-value-list = DQUOTE scale-entry *(COMMA scale-entry) DQUOTE
scale-entry = scale-value / (scale-value COLON scale-value)
scale-value = FLOAT
Ссылки
Скачать оригинальный документ на английском языке RFC 7826 — Real-Time Streaming Protocol Version 2.0
Читать полную версию документа на русском языке RFC 7826 — Потоковый протокол в реальном времени (RTSP), версия 2.0
Ссылка на синтаксис