You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 

135 lines
3.3 KiB

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