我正在尝试使用cURL和PHP建立RTSP会话。我正在使用IP摄像头,我想在html5的视频标签中重现其流,但由于它不接受RTSP,我想创建一个提取视频并将其发送到视频标签的应用程序。
为此,我研究了RTSP并使用Wireshark监控它在VLC中重现时如何创建会话。我的第一个问题是我发送了一个被响应的DESCRIBE请求,但是我的脚本被阻止等待某些东西。与VLC情况相比,我认为我需要使用nonce和其他参数发送另一个带有md5获得的响应参数的DESCRIBE请求。
我的第一个DESCRIBE请求与VLC请求有所不同,我不知道它为什么会添加标头 If-Modified-Since:。我不知道它是否相关,但我不知道如何删除它。
这是我的剧本:
<?php
$url = "rtsp://admin@43.201.36.211:88/videoMain";
$curl = curl_init();
curl_setopt($curl, CURLOPT_VERBOSE, true);
curl_setopt($curl, CURLOPT_HEADER, true);
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_RTSP_STREAM_URI, $url);
curl_setopt($curl, CURLOPT_RTSP_REQUEST, CURL_RTSPREQ_DESCRIBE);
curl_setopt($curl, CURLOPT_HTTPHEADER, array(
'User-Agent: LibVLC/2.2.1 (LIVE555 Streaming Media v2014.07.25)'));
$res = curl_exec($curl);
echo 'unblocked';
curl_close($curl);
?>
这就是我用Wireshark捕获的内容:
DESCRIBE rtsp://admin@43.201.36.211:88/videoMain RTSP/1.0
CSeq: 1
Accept: application/sdp
If-Modified-Since: Thu, 01 Jan 1970 00:00:00 GMT
User-Agent: LibVLC/2.2.1 (LIVE555 Streaming Media v2014.07.25)
RTSP/1.0 401 Unauthorized
CSeq: 1
Date: Fri, Jan 02 1970 00:12:26 GMT
WWW-Authenticate: Digest realm="LIVE555 Streaming Media", nonce="84bbbd02eda797825d5524e5aefc428b"
虽然这是我使用VLC从IPCam重现流时捕获的内容:
[...]
DESCRIBE rtsp://43.201.36.211:88/videoMain RTSP/1.0
CSeq: 3
User-Agent: LibVLC/2.2.1 (LIVE555 Streaming Media v2014.07.25)
Accept: application/sdp
RTSP/1.0 401 Unauthorized
CSeq: 3
Date: Thu, Jan 01 1970 23:09:39 GMT
WWW-Authenticate: Digest realm="LIVE555 Streaming Media", nonce="787d041314f1ed2bff411529e888f5d9"
DESCRIBE rtsp://43.201.36.211:88/videoMain RTSP/1.0
CSeq: 4
Authorization: Digest username="admin", realm="LIVE555 Streaming Media", nonce="787d041314f1ed2bff411529e888f5d9", uri="rtsp://43.201.36.211:88/videoMain", response="8737471393ee8ecb93dbf96bed7f5609"
User-Agent: LibVLC/2.2.1 (LIVE555 Streaming Media v2014.07.25)
Accept: application/sdp
RTSP/1.0 200 OK
CSeq: 4
Date: Thu, Jan 01 1970 23:09:39 GMT
Content-Base: rtsp://43.201.36.211:65534/videoMain/
Content-Type: application/sdp
Content-Length: 492
v=0
o=- 1141547641 1 IN IP4 192.168.233.233
s=IP Camera Video
i=videoMain
t=0 0
a=tool:LIVE555 Streaming Media v2013.01.25
a=type:broadcast
a=control:*
a=range:npt=0-
a=x-qt-text-nam:IP Camera Video
a=x-qt-text-inf:videoMain
m=video 0 RTP/AVP 96
c=IN IP4 0.0.0.0
b=AS:96
a=rtpmap:96 H264/90000
a=fmtp:96 packetization-mode=1;profile-level-id=42001E;sprop-parameter-sets=Z0IAHpWoKA9k,aM48gA==
a=control:track1
m=audio 0 RTP/AVP 0
c=IN IP4 0.0.0.0
b=AS:64
a=control:track2
[...]