Я хочу проверить, работает ли URL RTSP или нет с помощью PHP.
$url = "rtsp://somedomain.com/streamingdir";
if(is_working($url)){
echo "works!";
}else{
echo "fallen...";
}
работает не существует, я прошу эту функцию, спасибо
Я думаю, что вы можете использовать клиент сокета php для подключения к серверу RTSP, а затем вызвать метод rtsp description. Если вы получили ответ типа «RTSP / 1.0 200 OK», все работает нормально.
function is_working($url){
$urlparsed = parse_url($url);
$socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
if($socket == FALSE) return false;
if(@socket_connect($socket, $urlparsed['host'], $urlparsed['port'])){
$headers = array();
$headers[] = "DESCRIBE {$url} RTSP/1.0";
$headers[] = "User-Agent: WMPlayer/12.00.7600.16385 guid/3300AD50-2C39-46C0-AE0A-39E48EB3C868";
$headers[] = "Accept: application/sdp";
$headers[] = "Accept-Charset: UTF-8, *;q=0.1";
$headers[] = "X-Accept-Authentication: Negotiate, NTLM, Digest";
$headers[] = "Accept-Language: en-US, *;q=0.1";
$headers[] = "CSeq: 1";
$headerString = implode("\r\n", $headers) . "\r\n\r\n";
if(false === socket_write($socket, $headerString, strlen($headerString))){
socket_close($socket);
return false;
}else{
$response = '';
if(false === socket_recv($socket, $response, 2048,MSG_PEEK)){
socket_close($socket);
return false;
}else{
//var_dump($response);
if(strpos($response,"RTSP/1.0 200 OK") !== FALSE){
return true;
}else{
return false;
}
socket_close($socket);
}
}
}else{
return false;
}
}
is_working("rtsp://your-url.com:1935/test.sdp");
Используйте строку «var_dump ($ response);» визуализировать ответ RTSP. Надеюсь, поможет.
Других решений пока нет …