2015-02-18 2 views
0

Я хочу проверить, работает ли URL-адрес RTSP или нет, используя PHP.PHP Проверьте, работает ли RTSP

$url = "rtsp://somedomain.com/streamingdir"; 
if(is_working($url)){ 
echo "works!"; 
}else{ 
echo "fallen..."; 
} 

is_working не существует, я прошу для этой функции, благодаря

+0

Где вы нашли 'is_working' функцию? – bcesars

+0

jajaj ... его не существует! Мне нужна такая функция! – lucasgabmoreno

ответ

0

Я думаю, что вы можете использовать клиент PHP сокет для подключения к серверу RTSP, а затем вызвать RTSP описывают метод. Если вы получите ответ типа «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. Надеюсь, поможет.

Смежные вопросы