3 Protocol Parameters (Parametri del protocollo)
3 Protocol Parameters (Parametri del protocollo)
3.1 RTSP Version (Versione RTSP)
Si applica [H3.1], sostituendo HTTP con RTSP.
3.2 RTSP URL (URL RTSP)
Gli scheme «rtsp» e «rtspu» servono a riferire risorse di rete tramite il protocollo RTSP. La presente sezione definisce sintassi e semantica specifiche dello scheme per gli URL RTSP.
rtsp_URL = ( "rtsp:" | "rtspu:" ) "//" host [ ":" port ] [ abs_path ]
host = <Nome di dominio Internet legale o indirizzo IP in notazione decimale puntata, come definito nella sezione 2.1 di RFC 1123>
port = *DIGIT
abs_path è definito in [H3.2.1].
Si noti che identificatori di frammento e di query non hanno al momento un significato ben definito; l'interpretazione è lasciata al server RTSP.
Lo scheme rtsp richiede che i comandi siano emessi tramite un protocollo affidabile (su Internet, TCP), mentre lo scheme rtspu identifica un protocollo non affidabile (su Internet, UDP).
Se la porta è vuota o assente, si assume la porta 554. La semantica è che la risorsa identificata può essere controllata da RTSP sul server in ascolto per connessioni TCP (scheme «rtsp») o pacchetti UDP (scheme «rtspu») su quella porta dell'host, e che il Request-URI della risorsa sia rtsp_URL.
L'uso di indirizzi IP negli URL SHOULD essere evitato ove possibile (vedere RFC 1924 [19]).
Una presentazione o un flusso è identificato da un identificatore testuale del media, usando il set di caratteri e le convenzioni di escape [H3.2] degli URL (RFC 1738 [20]). Gli URL possono riferirsi a un flusso o a un aggregato di flussi, cioè una presentazione. Di conseguenza, le richieste descritte nella sezione 10 possono applicarsi all'intera presentazione o a un singolo flusso al suo interno. Si noti che alcuni metodi di richiesta possono applicarsi solo ai flussi, non alle presentazioni, e viceversa.
Ad esempio, l'URL RTSP:
rtsp://media.example.com:554/twister/audiotrack
identifica il flusso audio nella presentazione «twister», controllabile tramite richieste RTSP emesse su una connessione TCP verso la porta 554 dell'host media.example.com.
Anche l'URL RTSP:
rtsp://media.example.com:554/twister
identifica la presentazione «twister», che può essere composta da flussi audio e video.
Ciò non implica un modo standard per riferire i flussi negli URL. La descrizione della presentazione definisce le relazioni gerarchiche nella presentazione e gli URL dei singoli flussi. Una descrizione di presentazione può chiamare un flusso «a.mov» e l'intera presentazione «b.mov».
I componenti di percorso dell'URL RTSP sono opachi al client e non implicano alcuna struttura particolare del file system sul server.
Questo disaccoppiamento consente anche di usare descrizioni di presentazione con protocolli di controllo media non RTSP sostituendo semplicemente lo scheme nell'URL.
3.3 Conference Identifiers (Identificatori di conferenza)
Gli identificatori di conferenza sono opachi per RTSP e sono codificati con i metodi standard di codifica URI (cioè LWS è escaped con %). Possono contenere qualsiasi valore di ottetto. L'identificatore di conferenza MUST essere globalmente univoco. Per H.323 va usato il valore conferenceID.
conference-id = 1*xchar
Gli identificatori di conferenza consentono alle sessioni RTSP di ottenere parametri da conferenze multimediali a cui partecipa il server media. Tali conferenze sono create da protocolli fuori dall'ambito della presente specifica, ad es. H.323 [13] o SIP [12]. Invece di fornire esplicitamente informazioni di trasporto, il client RTSP può chiedere al server media di usare i valori nella descrizione della conferenza.
3.4 Session Identifiers (Identificatori di sessione)
Gli identificatori di sessione sono stringhe opache di lunghezza arbitraria. Lo spazio bianco lineare deve essere escaped in URL. Un identificatore di sessione MUST essere scelto in modo casuale e MUST essere lungo almeno otto ottetti per rendere più difficile indovinarlo. (Vedere la sezione 16.)
session-id = 1*( ALPHA | DIGIT | safe )
3.5 SMPTE Relative Timestamps (Timestamp relativi SMPTE)
Un timestamp relativo SMPTE esprime il tempo rispetto all'inizio della clip. I timestamp relativi sono espressi come time code SMPTE per accuratezza di accesso a livello di frame. Il time code ha il formato ore:minuti:secondi:frame.subframe, con origine all'inizio della clip. Il formato smpte predefinito è «SMPTE 30 drop», con frame rate di 29,97 frame al secondo. Altri codici SMPTE MAY essere supportati (ad es. «SMPTE 25») tramite uso alternativo di «smpte time». Il campo «frames» nel valore temporale può assumere i valori da 0 a 29. La differenza tra 30 e 29,97 frame al secondo è gestita eliminando i primi due indici di frame (valori 00 e 01) di ogni minuto, tranne ogni decimo minuto. Se il valore di frame è zero, può essere omesso. I subframe sono misurati in centesimi di frame.
smpte-range = smpte-type "=" smpte-time "-" [ smpte-time ]
smpte-type = "smpte" | "smpte-30-drop" | "smpte-25" ; altri timecode possono essere aggiunti
smpte-time = 1*2DIGIT ":" 1*2DIGIT ":" 1*2DIGIT [ ":" 1*2DIGIT ] [ "." 1*2DIGIT ]
Esempi: smpte=10:12:33:20- smpte=10:07:33- smpte=10:07:00-10:07:33:05.01 smpte-25=10:07:00-10:07:33:05.01
3.6 Normal Play Time (Tempo di riproduzione normale)
Il normal play time (tempo di riproduzione normale, NPT) indica la posizione assoluta del flusso rispetto all'inizio della presentazione. Il timestamp consiste in una frazione decimale. La parte a sinistra del punto decimale può essere espressa in secondi oppure in ore, minuti e secondi. La parte a destra del punto decimale misura frazioni di secondo.
L'inizio di una presentazione corrisponde a 0,0 secondi. I valori negativi non sono definiti. La costante speciale now è definita come l'istante corrente di un evento dal vivo e può essere usata solo per eventi dal vivo.
Il NPT è definito come in DSM-CC: «Intuitivamente, il NPT è l'orologio che lo spettatore associa a un programma. Spesso è visualizzato digitalmente su un videoregistratore. Il NPT avanza normalmente in modalità di riproduzione normale (scale = 1), più velocemente in avanzamento rapido (rapporto di scala positivo elevato), decrementa in scansione all'indietro (rapporto di scala negativo elevato) ed è fisso in pausa. Il NPT è (logicamente) equivalente ai time code SMPTE.» [5]
npt-range = ( npt-time "-" [ npt-time ] ) | ( "-" npt-time )
npt-time = "now" | npt-sec | npt-hhmmss
npt-sec = 1*DIGIT [ "." *DIGIT ]
npt-hhmmss = npt-hh ":" npt-mm ":" npt-ss [ "." *DIGIT ]
npt-hh = 1*DIGIT ; qualsiasi numero positivo
npt-mm = 1*2DIGIT ; 0-59
npt-ss = 1*2DIGIT ; 0-59
Esempi: npt=123.45-125 npt=12:05:35.3- npt=now-
La sintassi è conforme a ISO 8601. La notazione npt-sec è ottimizzata per la generazione automatica, la notazione npt-hhmmss per la lettura umana. La costante «now» consente ai client di richiedere il feed dal vivo anziché la versione memorizzata o ritardata. Ciò è necessario perché né l'ora assoluta né l'istante zero sono appropriati in questo caso.
3.7 Absolute Time (Tempo assoluto)
Il tempo assoluto è espresso come timestamp ISO 8601, usando UTC (GMT). Si possono indicare frazioni di secondo.
utc-range = "clock" "=" utc-time "-" [ utc-time ]
utc-time = utc-date "T" utc-time "Z"
utc-date = 8DIGIT ; < YYYYMMDD >
utc-time = 6DIGIT [ "." fraction ] ; < HHMMSS.fraction >
Esempio per l'8 novembre 1996 alle 14:37:20,25 UTC:
19961108T143720.25Z
3.8 Option Tags (Tag di opzione)
I tag di opzione sono identificatori univoci usati per designare nuove opzioni in RTSP. Questi tag sono usati nei campi di intestazione Require (sezione 12.32) e Proxy-Require (sezione 12.27).
Sintassi:
option-tag = 1*xchar
Il creatore di una nuova opzione RTSP dovrebbe prefissare l'opzione con un nome di dominio inverso (ad es. «com.foo.mynewfeature» è un nome adatto per una funzione il cui inventore è raggiungibile su «foo.com»), oppure registrare la nuova opzione presso l'Internet Assigned Numbers Authority (IANA).
3.8.1 Registering New Option Tags with IANA (Registrare nuovi tag di opzione presso l'IANA)
Quando si registra una nuova opzione RTSP, dovrebbero essere fornite le seguenti informazioni:
-
Nome e descrizione dell'opzione. Il nome può essere di qualsiasi lunghezza, ma SHOULD non superare circa venti caratteri. Il nome MUST NOT contenere spazi, caratteri di controllo o punti.
-
Indicazione di chi ha il controllo delle modifiche sull'opzione (ad esempio IETF, ISO, ITU-T, altri organismi di standardizzazione internazionale, un consorzio o una particolare azienda o gruppo di aziende);
-
Un riferimento a una descrizione più dettagliata, se disponibile, ad esempio (in ordine di preferenza) un RFC, un articolo pubblicato, un deposito brevettuale, un rapporto tecnico, codice sorgente documentato o un manuale informatico;
-
Per opzioni proprietarie, informazioni di contatto (indirizzo postale e di posta elettronica);