dwww Home | Manual pages | Find package

CURLOPT_RTSP_REQUEST(3)     Library Functions Manual    CURLOPT_RTSP_REQUEST(3)

NAME
       CURLOPT_RTSP_REQUEST - RTSP request

SYNOPSIS
       #include <curl/curl.h>

       CURLcode curl_easy_setopt(CURL *handle, CURLOPT_RTSP_REQUEST, long request);

DESCRIPTION
       Tell  libcurl what kind of RTSP request to make. Pass one of the follow-
       ing RTSP enum values as a long in the  request  argument.  Unless  noted
       otherwise, commands require the Session ID to be initialized.

       CURL_RTSPREQ_OPTIONS
              Used  to retrieve the available methods of the server. The appli-
              cation is responsible for parsing and obeying the  response.  The
              session ID is not needed for this method.

       CURL_RTSPREQ_DESCRIBE
              Used  to  get the low level description of a stream. The applica-
              tion should note what formats it  understands  in  the  'Accept:'
              header.  Unless  set manually, libcurl automatically adds in 'Ac-
              cept: application/sdp'. Time-condition headers are added  to  De-
              scribe  requests  if the CURLOPT_TIMECONDITION(3) option is used.
              (The session ID is not needed for this method)

       CURL_RTSPREQ_ANNOUNCE
              When sent by a client, this method changes the description of the
              session. For example, if a client is using the server to record a
              meeting, the client can use Announce to inform the server of  all
              the  meta-information  about  the  session. ANNOUNCE acts like an
              HTTP PUT or POST just like CURL_RTSPREQ_SET_PARAMETER

       CURL_RTSPREQ_SETUP
              Setup is used to initialize the transport layer for the  session.
              The application must set the desired Transport options for a ses-
              sion by using the CURLOPT_RTSP_TRANSPORT(3) option prior to call-
              ing   setup.  If  no  session  ID  is  currently  set  with  CUR-
              LOPT_RTSP_SESSION_ID(3), libcurl extracts and uses the session ID
              in the response to this request. The session ID is not needed for
              this method.

       CURL_RTSPREQ_PLAY
              Send a Play command to the server. Use the  CURLOPT_RANGE(3)  op-
              tion to modify the playback time (e.g. npt=10-15).

       CURL_RTSPREQ_PAUSE
              Send  a Pause command to the server. Use the CURLOPT_RANGE(3) op-
              tion with a single value to indicate when the  stream  should  be
              halted. (e.g. npt=25)

       CURL_RTSPREQ_TEARDOWN
              This command terminates an RTSP session. Simply closing a connec-
              tion  does  not  terminate  the RTSP session since it is valid to
              control an RTSP session over different connections.

       CURL_RTSPREQ_GET_PARAMETER
              Retrieve a parameter from the server. By default, libcurl adds  a
              Content-Type:  text/parameters  header  on all non-empty requests
              unless a custom one is set. GET_PARAMETER acts just like an  HTTP
              PUT  or POST (see CURL_RTSPREQ_SET_PARAMETER). Applications wish-
              ing to send a heartbeat  message  (e.g.  in  the  presence  of  a
              server-specified  timeout) should send use an empty GET_PARAMETER
              request.

       CURL_RTSPREQ_SET_PARAMETER
              Set a parameter on the server. By default, libcurl uses  a  *Con-
              tent-Type:  text/parameters*  header  unless a custom one is set.
              The interaction with SET_PARAMETER is much like an  HTTP  PUT  or
              POST.  An  application may either use CURLOPT_UPLOAD(3) with CUR-
              LOPT_READDATA(3) like an HTTP PUT, or it  may  use  CURLOPT_POST-
              FIELDS(3) like an HTTP POST. No chunked transfers are allowed, so
              the  application must set the CURLOPT_INFILESIZE(3) in the former
              and CURLOPT_POSTFIELDSIZE(3) in the latter. Also, there is no use
              of multi-part POSTs within RTSP.

       CURL_RTSPREQ_RECORD
              Used to tell the  server  to  record  a  session.  Use  the  CUR-
              LOPT_RANGE(3) option to modify the record time.

       CURL_RTSPREQ_RECEIVE
              This  is  a  special request because it does not send any data to
              the server. The application may call this function  in  order  to
              receive  interleaved  RTP  data.  It returns after processing one
              read buffer of data in order to give the application a chance  to
              run.

DEFAULT
PROTOCOLS
       This functionality affects rtsp only

EXAMPLE
       int main(void)
       {
         CURL *curl = curl_easy_init();
         if(curl) {
           CURLcode res;
           curl_easy_setopt(curl, CURLOPT_URL, "rtsp://example.com/");
           /* ask for options */
           curl_easy_setopt(curl, CURLOPT_RTSP_REQUEST, CURL_RTSPREQ_OPTIONS);
           res = curl_easy_perform(curl);
           curl_easy_cleanup(curl);
         }
       }

AVAILABILITY
       Added in curl 7.20.0

RETURN VALUE
       curl_easy_setopt(3) returns a CURLcode indicating success or error.

       CURLE_OK  (0) means everything was OK, non-zero means an error occurred,
       see libcurl-errors(3).

SEE ALSO
       CURLOPT_RTSP_SESSION_ID(3), CURLOPT_RTSP_STREAM_URI(3)

libcurl                            2026-07-12           CURLOPT_RTSP_REQUEST(3)

Generated by dwww version 1.16 on Sat Oct 3 05:45:08 CEST 2026.