通过php连接到海康威视nvr

时间:2017-08-11 18:12:24

标签: php jquery curl rtsp

我在多个地方有多个NVR(网络视频记录器),我想从php检查他们是否正常工作。 我想通过使用用户名和密码连接到NVR的Web服务器来实现此目的。 我已经创建了一个用户名(例如,您可以连接到它,但请不要将其充满):

用户名:用户
密码:A123456789
登录页面:http://31.168.115.100/doc/page/login.asp

通过查看nvr的源代码,我注意到登录按钮使用了jquery,它可以与php一起使用吗? 我看过这段代码:

$data = array(
    'username' => 'user',
    'password' => 'A123456789'
);
$url = 'http://31.168.115.100/doc/page/login.asp';
$ch = curl_init($url);
$postString = http_build_query($data, '', '&');
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $postString);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$response = curl_exec($ch);
curl_close($ch);

print($response);

但它不起作用。

另一种连接方式是从端口554获取rtsp协议的响应,但由于身份验证,我总是从服务器收到错误。 rtsp网址是 RTSP://用户:A123456789@31.168.115.100:554 /流/渠道/ 1201 这是在vlc上工作,

,代码是

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 'connected';
                }else{
                    return 'not connected';
                }
                socket_close($socket);
            }
        }

    }else{
        return 'false';
    }
}

echo is_working("rtsp://user:A123456789@31.168.115.100:554/Streaming/Channels/1201");

我想要完成的是创建一个函数,我在函数中写入url,username,password 如果它连接与否,它将返回给我。

0 个答案:

没有答案