RTSP 2.0 | Метод PAUSE

Методы RTSP 2.0 — это указание того, что должно быть выполнено на ресурсе, идентифицированном Request-URI на основании синтаксиса строки запроса RTSP, определённой как:

<Method> SP <Request-URI> SP <RTSP-Version> CRLF

Методы RTSP 2.0 перечислены в таблице 2.

Запрос с методом «PAUSE» приводит к тому, что доставка потока немедленно прерывается (останавливается). Запрос PAUSE ДОЛЖЕН быть выполнен либо с агрегированным управляющим URI для агрегированных сеансов, что приводит к остановке всех носителей, либо с URI мультимедиа для неагрегированных сеансов. На любую попытку приглушить один носитель с помощью запроса PAUSE в агрегированном сеансе ДОЛЖЕН быть дан ответ с ошибкой 460 (Только агрегированная операция разрешена). После возобновления воспроизведения ДОЛЖНА поддерживаться синхронизация треков. Любые ресурсы сервера сохраняются, хотя серверы МОГУТ закрыть сеанс и освободить ресурсы после приостановки на время, указанное в параметре «timeout» заголовка Session в сообщении SETUP.

Пример:

C->S: PAUSE rtsp://example.com/fizzle/foo RTSP/2.0
CSeq: 834
Session: OoOUPyUwt0VeY9fFRHuZ6L
User-Agent: PhonyClient/1.2

S->C: RTSP/2.0 200 OK
CSeq: 834
Date: Thu, 23 Jan 1997 15:35:06 GMT
Session: OoOUPyUwt0VeY9fFRHuZ6L
Range: npt=45.76-75.00

Запрос PAUSE приводит к немедленному прерыванию доставки потока при получении сообщения, а точка паузы устанавливается на текущую точку в презентации. Эту точку паузы в медиапотоке необходимо поддерживать. Последующий запрос PLAY без заголовка Range возобновляется с точки паузы и воспроизводится до конца носителя.

Точка паузы после любого запроса PAUSE ДОЛЖНА быть возвращена клиенту путем добавления заголовка Range с тем, что остается неиспользованным из диапазона запроса PLAY. Для носителей со свойствами произвольного доступа, если кто-то хочет возобновить воспроизведение ранжированного запроса, он просто включает заголовок Range из ответа PAUSE и включает заголовок Seek-Style с политикой Next в запросе PLAY. Для носителей, которые прогрессируют во времени и имеют длительность хранения = 0, последующий запрос PLAY на повторное начало доставки носителей ДОЛЖЕН использовать «npt = now-», а не ответ, данный в ответе на PAUSE.

C->S: PLAY rtsp://example.com/fizzle/foo RTSP/2.0
CSeq: 834
Session: OccldOFFq23KwjYpAnBbUr
Range: npt=10-30
User-Agent: PhonyClient/1.2

S->C: RTSP/2.0 200 OK
CSeq: 834
Date: Thu, 23 Jan 1997 15:35:06 GMT
Server: PhonyServer/1.0
Range: npt=10-30
Seek-Style: First-Prior
RTP-Info:url="rtsp://example.com/fizzle/audiotrack"
ssrc=0D12F123:seq=5712;rtptime=934207921,
url="rtsp://example.com/fizzle/videotrack"
ssrc=4FAD8726:seq=57654;rtptime=2792482193
Session: OccldOFFq23KwjYpAnBbUr

Через 11 секунд, то есть через 21 секунду после презентации:

C->S: PAUSE rtsp://example.com/fizzle/foo RTSP/2.0
CSeq: 835
Session: OccldOFFq23KwjYpAnBbUr
User-Agent: PhonyClient/1.2

S->C: RTSP/2.0 200 OK
CSeq: 835
Date: 23 Jan 1997 15:35:17 GMT
Server: PhonyServer/1.0
Range: npt=21-30
Session: OccldOFFq23KwjYpAnBbUr

Если клиент отправляет запрос PAUSE, а сервер подтверждает и входит в состояние готовности, правильный ответ сервера, если игрок выдает другую PAUSE, все еще остается 200 OK. Ответ 200 OK ДОЛЖЕН включать заголовок Range с текущей точкой паузы. Смотрите примеры ниже:

C->S: PAUSE rtsp://example.com/fizzle/foo RTSP/2.0
CSeq: 834
Session: OccldOFFq23KwjYpAnBbUr
User-Agent: PhonyClient/1.2

S->C: RTSP/2.0 200 OK
CSeq: 834
Session: OccldOFFq23KwjYpAnBbUr
Date: Thu, 23 Jan 1997 15:35:06 GMT
Range: npt=45.76-98.36

C->S: PAUSE rtsp://example.com/fizzle/foo RTSP/2.0
CSeq: 835
Session: OccldOFFq23KwjYpAnBbUr
User-Agent: PhonyClient/1.2

S->C: RTSP/2.0 200 OK
CSeq: 835
Session: OccldOFFq23KwjYpAnBbUr
Date: 23 Jan 1997 15:35:07 GMT
Range: npt=45.76-98.36

Ссылки на документы

Скачать оригинальный документ на английском языке RFC 7826 — Real-Time Streaming Protocol Version 2.0

Читать полную версию документа на русском языке RFC 7826 — Потоковый протокол в реальном времени (RTSP), версия 2.0

Поделись записью