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
|
|
})
|
|
}
|