Я пытаюсь установить сеанс RTSP с cURL и PHP. Я работаю с IP-камерой и хочу воспроизвести ее поток в видеотеге html5, но поскольку он не принимает RTSP, я хочу создать приложение, которое извлекает видео и отправляет его в видеотегу.
Для этого я изучил RTSP и проверил с помощью Wireshark, как он создает сеанс при воспроизведении в VLC. Моя первая проблема заключается в том, что я отправляю ответ на запрос DESCRIBE, но мой сценарий блокируется в ожидании чего-либо. По сравнению со случаем VLC, я думаю, что мне нужно отправить еще один запрос DESCRIBE с параметром ответа, полученным с помощью md5, используя nonce и другие параметры.
Мой первый запрос DESCRIBE отличается от запроса VLC тем, что я не знаю, почему он добавляет заголовок If-Modified-Since:. Я не знаю, может ли это быть чем-то уместным, но я не знаю, как это удалить.
Это мой сценарий:
<?php
$url = "rtsp://[email protected]: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://[email protected]: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
[...]
Задача ещё не решена.
Других решений пока нет …