声明

  1. size_t interleave_callback(void *ptr, size_t size, size_t nmemb,
  2. void *userdata);
  3. CURLcode curl_easy_setopt(CURL *handle, CURLOPT_INTERLEAVEFUNCTION,
  4. interleave_callback);

概要

RTSP交叉数据的回调函数。

详情

传入一个指向你的回调函数的指针,该函数应该符合上面显示的原型。

只要libcurl接收到交叉的RTP数据,该回调函数就会被调用。对于每一个$块,这个函数都会被调用一次,因此它包含精确的一个上层协议单元(例如一个RTP包)。对于每一次调用,libcurl都会写入交叉头部以及包含的数据。第一个字节总是一个ASCII的美元符号。在美元符号后面的是一个字节的渠道标识符,然后是以网络字节序表示的两个字节的整型长度。参考RFC 2326的10.12节来获取更多关于RTP交叉行为的更多信息。如果该选项没有设置,或者设置成NULL,libcurl会使用默认的写函数。

交叉RTP对客户端应用程序产生一些挑战。由于流式数据共享RTSP控制连接,以及时的方式服务RTP是很重要的。如果RTP数据不能被很快地处理,后续的响应处理可能会无故地延迟,并且连接可能会关闭。当没有请求要处理的时候,应用程序可以使用CURL_RTSPREQ_RECEIVE来服务RTP数据。如果应用程序生成了一个请求,(例如CURL_RTSPREQ_PAUSE)那么响应处理器会在标记请求已完成之前处理完任何待处理的RTP数据。

默认值

NULL。

适用协议

RTSP。

可用性

在7.20.0加入。

返回值

如果支持该选项,返回CURLE_OK;否则返回CURLE_UNKNOWN_OPTION