| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296 |
- <?php
- /**
- * Created by PhpStorm.
- * User: qiuzijian
- * Date: 2021-04-25
- * Time: 09:53
- */
- namespace Modules\Camera\Http\Controllers\Api;
- use App\Enum\ApiEnum;
- use App\Http\Controllers\Api\BaseController;
- use Illuminate\Support\Facades\Input;
- use Illuminate\Support\Facades\Log;
- use Modules\Camera\Entities\CameraList;
- use Modules\Camera\Enum\CameraEnum;
- use Modules\Camera\Services\CameraServices;
- use Modules\Mine\Entities\MineListExt;
- use DB;
- class CameraApiController extends BaseController
- {
- /**
- * 作者: qiuzijian
- * 注释: 获取摄像头列表
- * @return \App\Http\Controllers\Api\JsonResponse
- */
- public function getCamerasList()
- {
- $parent_id = Input::get('parent_id', '');
- $mine_id = Input::get('mine_id', '');
- $camera_type = Input::get('camera_type', CameraEnum::CAMERA_TYPE_ALL);
- $surface_id = Input::get('surface_id', '');
- if (!$parent_id) {
- return self::errorResponse(ApiEnum::STATUS_CODE_EMPTY);
- }
- if (!in_array($camera_type, [CameraEnum::CAMERA_TYPE_NORMAL, CameraEnum::CAMERA_TYPE_ALL]) && !$surface_id) {
- return self::errorResponse(ApiEnum::STATUS_CODE_EMPTY);
- }
- //判断是否使用海康视频服务器
- // $is_hak = MineListExt::where('mine_id', $parent_id)->value('is_hak');
- // if ($is_hak) {
- // $result = CameraServices::getHaiKangCamera($parent_id, $mine_id, $camera_type);
- // } else {
- $result = CameraServices::getCameraListByMineId($mine_id, $camera_type, $parent_id, $surface_id);
- // }
- return self::successResponse($result);
- }
- /**
- * 作者: qiuzijian
- * 注释: 获取摄像头播放地址
- * @return \App\Http\Controllers\Api\JsonResponse
- */
- public function getCamerasUrl()
- {
- $parent_id = Input::get('parent_id', '');
- $camera_id = Input::get('camera_id', '');
- if (!$parent_id || !$camera_id) {
- return self::errorResponse(ApiEnum::STATUS_CODE_EMPTY);
- }
- //判断摄像头来源是否为内网服务器
- $camera_source = CameraList::where('id', $camera_id)->value('camera_source');
- if ($camera_source == CameraEnum::CAMERA_SOURCE_3) {
- $result = CameraServices::getIntranetCameraUrl($camera_id);
- return self::successResponse($result);
- }
- //判断是否使用海康视频服务器
- $is_hak = MineListExt::where('mine_id', $parent_id)->value('is_hak');
- //判断是否生成摄像头请求链接
- $camera_url = CameraList::where('id', $camera_id)->value('camera_url');
- if ($is_hak && !$camera_url) {
- //判断是否是mine配置文件的矿区
- $mine_res = DB::table('mine_list')->where('id',$parent_id)->get();
- if(isset($mine_res[0]->title) && in_array($mine_res[0]->title,config('mine'))){
- $result = CameraServices::getRtspTianDi($camera_id,$parent_id);
- }else{
- $result = CameraServices::downloadCameraFiles($parent_id, $camera_id);
- }
- } else {
- //判断硬盘录像机的有没有封面图,有的走easydrawin,没有的走ffmpeg
- $cover_picture = CameraList::where('id', $camera_id)->value('cover_picture');
- // if(!$cover_picture){
- //ffmpeg拉流获取首帧图片
- // $result = CameraServices::getCameraUrlByFfmpeg($camera_id);
- // }else{
- $result = CameraServices::getCameraUrlByCameraId($camera_id);
- // }
- }
- return self::successResponse($result);
- }
- //获取海康rtsp流
- public function getHikRtsp(){
- $parent_id = Input::get('parent_id', '');
- $camera_id = Input::get('camera_id', '');
- if (!$parent_id || !$camera_id) {
- return self::errorResponse(ApiEnum::STATUS_CODE_EMPTY);
- }
- //判断是否使用海康视频服务器
- $is_hak = MineListExt::where('mine_id', $parent_id)->value('is_hak');
- //判断是否生成摄像头请求链接
- $camera_url = CameraList::where('id', $camera_id)->value('camera_url');
- if ($is_hak == 1 && !$camera_url) {
- $result = CameraServices::getHkRtsp($camera_id,$parent_id);
- return self::successResponse($result);
- }else{
- return self::errorResponse(ApiEnum::HK_REQUEST_FAIL);
- }
- }
- //海康摄像头easy_drawin方式获取url
- public function getCamerasRtsp()
- {
- $parent_id = Input::get('parent_id', '');
- $camera_id = Input::get('camera_id', '');
- if (!$parent_id || !$camera_id) {
- return self::errorResponse(ApiEnum::STATUS_CODE_EMPTY);
- }
- //判断摄像头来源是否为内网服务器
- $camera_source = CameraList::where('id', $camera_id)->value('camera_source');
- if ($camera_source == CameraEnum::CAMERA_SOURCE_3) {
- $result = CameraServices::getIntranetCameraUrl($camera_id);
- return self::successResponse($result);
- }
- //判断是否使用海康视频服务器
- $is_hak = MineListExt::where('mine_id', $parent_id)->value('is_hak');
- //判断是否生成摄像头请求链接
- $camera_url = CameraList::where('id', $camera_id)->value('camera_url');
- if ($is_hak && !$camera_url) {
- //判断是否是mine配置文件的矿区
- $mine_res = DB::table('mine_list')->where('id',$parent_id)->get();
- if(isset($mine_res[0]->title) && in_array($mine_res[0]->title,config('mine'))){
- //天地伟业使用easy_drawin获取rtsp
- $result = CameraServices::getRtspTianDi($camera_id,$parent_id);
- }else{
- //海康使用easy_drawin获取rtsp
- $result = CameraServices::getRtspHaiKang($camera_id, $parent_id);
- }
- } else {
- //硬盘录像机使用easy_drawin获取rtsp
- $result = CameraServices::getRtspYingPan($camera_id);
- }
- return self::successResponse($result);
- }
- /**
- * 作者: qiuzijian
- * 注释: 停止摄像头推流
- * @return \App\Http\Controllers\Api\JsonResponse
- */
- public function stopCamerasStream()
- {
- $camera_id = Input::get('camera_id', '');
- $result = CameraServices::stopCameraStream();
- return self::successResponse($result);
- }
- //回放列表
- public function getPlaybackList(){
- $camera_id = Input::get('camera_id', '');
- $result['status'] = true;
- $result['msg'] = ApiEnum::RETURN_SUCCESS;
- if (!$camera_id) {
- $result['status'] = false;
- $result['msg'] = ApiEnum::STATUS_CODE_EMPTY;
- return $result;
- }
- $query = CameraList::where('id', $camera_id)->first();
- if (!$query) {
- $result['status'] = false;
- $result['msg'] = ApiEnum::NO_CAMERA_URL;
- return $result;
- }
- if($query->playback == 0){
- $result['status'] = false;
- $result['msg'] = ApiEnum::NO_SUPORT_PLAYBACK;
- return $result;
- }
- $playback = DB::table('playback')->where('camera_id',$query->id)->where('deleted_at',null)->get();
- if(count($playback)>0){
- for($i=0;$i<count($playback);$i++){
- $result['data'][$i]['title'] = $playback[$i]->title;
- $result['data'][$i]['start_time'] = $playback[$i]->start_time;
- $result['data'][$i]['end_time'] = $playback[$i]->end_time;
- $result['data'][$i]['camera_id'] = $playback[$i]->camera_id;
- }
- }else{
- $result['data'] = null;
- }
- return $result;
- }
- //回放URL
- public function getPlaybackUrl(){
- $camera_id = Input::get('camera_id', '');
- $start_time = Input::get('start_time', '');
- $end_time = Input::get('end_time', '');
- $result['status'] = true;
- $result['msg'] = ApiEnum::RETURN_SUCCESS;
- if (!$camera_id || !$start_time || !$end_time) {
- $result['status'] = false;
- $result['msg'] = ApiEnum::STATUS_CODE_EMPTY;
- return $result;
- }
- $query = CameraList::where('id', $camera_id)->first();
- if (!$query) {
- $result['status'] = false;
- $result['msg'] = ApiEnum::NO_CAMERA_URL;
- return $result;
- }
- if($query->playback == 0){
- $result['status'] = false;
- $result['msg'] = ApiEnum::NO_SUPORT_PLAYBACK;
- return $result;
- }
- $start_time = date('c', strtotime($start_time));
- $end_time = date('c', strtotime($end_time));
- $haikang = new HaiKangController();
- $result = CameraServices::getPlaybackUrl($camera_id,$start_time,$end_time);
- return self::successResponse($result);
- }
- /**
- * 作者: qiuzijian
- * 注释: 获取编码设备信息
- * @return \App\Http\Controllers\Api\JsonResponse
- */
- public function getTranscodeInfo()
- {
- $parent_id = Input::get('parent_id', '');
- if (!$parent_id) {
- return self::errorResponse(ApiEnum::STATUS_CODE_EMPTY);
- }
- $result = CameraServices::getHaiKangTransCode($parent_id);
- return self::successResponse($result);
- }
- /**
- * 作者: qiuzijian
- * 注释: 获取大南湖摄像头列表
- * @return \App\Http\Controllers\Api\JsonResponse
- */
- public function getSouthLakeCamera()
- {
- $result = CameraServices::getLeChangeCamera();
- return self::successResponse($result);
- }
- }
|