import request from '@/utils/request' import { limitVideoRequest } from '@/utils/videoRequestLimit' const unwrap = promise => promise.then(result => { if (result && Object.prototype.hasOwnProperty.call(result, 'data')) return result.data return result }) function encodeCameraCodeSegments(cameraCode) { const value = String(cameraCode || '') const separatorIndex = value.indexOf('#') if (separatorIndex <= 0 || separatorIndex === value.length - 1) { throw new Error('摄像机编码格式不正确') } return [ encodeURIComponent(value.slice(0, separatorIndex)), encodeURIComponent(value.slice(separatorIndex + 1)) ] } export function getNvrConfig() { return unwrap(request({ url: '/patrol/video/config', method: 'get' })) } export function startLive(channel, streamType = 1) { return unwrap(limitVideoRequest(() => request({ url: '/patrol/video/realtime/start', method: 'post', timeout: 8000, noAlert: true, data: { cameraCode: channel.cameraCode || channel.channelCode, streamType } }), 'embed')) } export function getLiveStatus(cameraCode) { return unwrap(limitVideoRequest(() => request({ url: '/patrol/video/realtime/status', method: 'get', timeout: 8000, noAlert: true, params: { cameraCode } }))) } export function stopLive(cameraCode) { return unwrap(limitVideoRequest(() => request({ url: '/patrol/video/realtime/stop', method: 'post', timeout: 8000, data: { cameraCode } }))) } export function controlPtz(payload) { return unwrap(request({ url: '/patrol/preset/ptzControl', method: 'post', data: payload })) } export function getPresetList(cameraCode) { const [device, domain] = encodeCameraCodeSegments(cameraCode) return unwrap(request({ url: `/patrol/preset/presetList/${device}/${domain}`, method: 'get' })) } export function createPreset(payload) { return unwrap(request({ url: '/patrol/preset/presetCreate', method: 'post', data: payload })) } export function createSnapshot(cameraCode) { const [device, domain] = encodeCameraCodeSegments(cameraCode) return unwrap(request({ url: `/patrol/videotape/snapshot/task/${device}/${domain}`, method: 'get' })) } export function downloadSnapshot(taskId) { return request({ url: `/patrol/videotape/snapshot/${encodeURIComponent(taskId)}`, method: 'get', responseType: 'blob' }) } export function createPlaybackSession(payload) { return unwrap(request({ url: '/patrol/videotape/hls/ui/session/create', method: 'post', data: payload })) } export function getPlaybackSession(sessionId) { return unwrap(request({ url: `/patrol/videotape/hls/session/query/${encodeURIComponent(sessionId)}`, method: 'get' })) } export function controlPlayback(sessionId, payload) { return unwrap(request({ url: `/patrol/videotape/hls/ui/session/control/${encodeURIComponent(sessionId)}`, method: 'post', data: payload })) } export function deletePlaybackSession(sessionId) { return unwrap(request({ url: `/patrol/videotape/hls/session/delete/${encodeURIComponent(sessionId)}`, method: 'delete' })) } export function downloadPlaybackClip(payload) { return request({ url: '/patrol/videotape/clip/download', method: 'post', data: payload, responseType: 'blob', timeout: 120000 }) }