简单实现php对接海康开放平台接口
可以先用海康平台的接口测试工具测试下自己的IP

下面是一个获取视频url的流程,分三步
<?php namespace app\admin\controller; use app\common\base\Base; use think\Exception; use think\Request; header('Content-type:text/html; Charset=utf-8'); date_default_timezone_set('PRC'); class AdminC extends Base { public $pre_url = "https://教育综合安防管理平台IP地址"; protected $app_key = "你的ak"; protected $app_secret = "你的sk"; public $content_type = "application/json"; //类型 public $token_url = '/artemis/oauth/token'; // 获取token public $node_list_url = "/artemis/api/resource/v1/cameras"; //获取节点 public $video_url = "/artemis/api/video/v2/cameras/previewURLs"; //获取一个视频url public function test(Request $req) { try{ // 1. 获取token $token = $this->getToken(); // 2. 获取视频节点 $res = $this->getNodes($token, $req); // 3. 获取url数组 foreach($res as $k => $v){ $obj = $this->getUrl($token,$v['cameraIndexCode']); $arr[$k]['url'] = $obj['url'] ?? ''; $arr[$k]['name'] = $v['cameraName']; unset($obj); } dump($arr); }catch(Exception $e){ return $e->getMessage(); } } // 请求获取token public function getToken() { $params = [ 'client_id' => $this->app_key, 'client_secret' => $this->app_secret ]; $res = $this->curlPost($params,[],$this->token_url); // post请求 if (isset($res['error'])) { failApi($res['error_description'])->send(); die; } return $res['access_token']; } // 请求获取视频节点 public function getNodes($token, Request $req) { $param = [ 'pageNo' => $req->pageNo ?? "1", 'pageSize' => $req->pageSize ?? "1000", ]; $headers = [ 'Access_token:' . $token, 'Content-Type: application/json', ]; // body参数是json字符串格式 $res = $this->curlPost(json_encode($param),$headers,$this->node_list_url); return $res['data']['list']; } // 请求获取视频url public function getUrl($token,$node) { $param = [ 'cameraIndexCode' => $node, "streamType"=> 0, "protocol"=> "rtsp", "transmode"=> 1, "streamform"=> "rtp", // 转码 "expand" =>"streamform=rtp" ]; $headers = [ 'Access_token:' . $token, 'Content-Type: application/json', ]; // body参数是json字符串格式 $res = $this->curlPost(json_encode($param),$headers,$this->video_url); return $res['data']; } /** * @param $param // body参数 * @param $headers // header参数 * @param $url // 请求api */ public function curlPost($param, $headers,$url) { $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $this->pre_url . $url); // 拼接url curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_POST, 1); curl_setopt($ch, CURLOPT_POSTFIELDS, $param); if(count($headers)) // heade参数 curl_setopt($ch, CURLOPT_HTTPHEADER, $headers); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); // 跳过ssl验证 curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false); $result = curl_exec($ch); if (curl_errno($ch)) { curl_close($ch); return failApi(curl_error($ch))->send(); } curl_close($ch); return json_decode($result,true); } }
成功:

然后用vlc播放器播放:

输入返回的url播放即可:


浙公网安备 33010602011771号