fix: 视频优化

This commit is contained in:
wangzhongjie 2025-06-10 13:33:41 +08:00
parent 5efb9cd735
commit 17c8d88345
6 changed files with 97 additions and 32 deletions

View File

@ -12,7 +12,7 @@ export const GlobalConfig: GlobalConfigType = {
commonFileWriteAddress: '/mnt/hmdfs/100/account/device_view/local/files/duolun', commonFileWriteAddress: '/mnt/hmdfs/100/account/device_view/local/files/duolun',
picSavePath: '/storage/cloud/100/files/Photo/', picSavePath: '/storage/cloud/100/files/Photo/',
videoSavePath: '/storage/cloud/100/files/Videos/', videoSavePath: '/storage/cloud/100/files/Videos/',
host: 'http://172.37.55.192:8082', host: 'http://192.168.32.105:8089',
modelNo: "3", modelNo: "3",
version: { version: {
//杭州 //杭州

View File

@ -10,9 +10,9 @@ import { JudgeConfigType } from '../model'
//考试回放开关 //考试回放开关
export const JudgeConfig:JudgeConfigType = { export const JudgeConfig: JudgeConfigType = {
//本地目录开关 //本地目录开关
isTrajectoryOpen: true, isTrajectoryOpen: false,
//是否开启拍照 //是否开启拍照
isPhotoOpen: true, isPhotoOpen: true,
//扣分语音是否强制开启 //扣分语音是否强制开启

View File

@ -20,6 +20,7 @@ import CardComponent from './Index/Card';
import BottomMessageComponent from './Index/BottomMessage'; import BottomMessageComponent from './Index/BottomMessage';
import LoadingComponent from './Index/Loading'; import LoadingComponent from './Index/Loading';
import Prompt from '@system.prompt'; import Prompt from '@system.prompt';
import { DifferentialSignal } from '../utils/business/DifferentialSignal';
@Entry @Entry
@ -64,7 +65,9 @@ struct Index {
this.ratio = AppStorage.get<BaseInfoType>('baseInfo')?.ratio || 1.4 this.ratio = AppStorage.get<BaseInfoType>('baseInfo')?.ratio || 1.4
this.angle = 0 this.angle = 0
AppStorage.set('lsh', '1111111111111') AppStorage.set('lsh', '1111111111111')
JudgeEmitterInstance.init() JudgeEmitterInstance.init()
GetSyncData<MASYSSETTableType>("MA_SYSSET").then((res: MASYSSETTableType[]) => { GetSyncData<MASYSSETTableType>("MA_SYSSET").then((res: MASYSSETTableType[]) => {
res.forEach((element) => { res.forEach((element) => {
if (element.v_no === "305") { if (element.v_no === "305") {
@ -83,6 +86,12 @@ struct Index {
AppStorage.setOrCreate('singlePlay', false) AppStorage.setOrCreate('singlePlay', false)
this.num = 0 this.num = 0
AppStorage.setOrCreate('lsh', '1111111111111') AppStorage.setOrCreate('lsh', '1111111111111')
DifferentialSignal.init();
DifferentialSignal.sendData()
DifferentialSignal.getData((data: ArrayBuffer) => {
console.log("Received differential signal data:", data.byteLength, "bytes")
})
} }
// 联网考试逻辑处理 // 联网考试逻辑处理

View File

@ -96,7 +96,7 @@ struct Index {
this.fileUtil.addFile(`${folderPath}/ipConfig.txt`, JSON.stringify(param)) this.fileUtil.addFile(`${folderPath}/ipConfig.txt`, JSON.stringify(param))
AppStorage.setOrCreate<EnvironmentConfigurationType>("EnvironmentConfiguration", param) AppStorage.setOrCreate<EnvironmentConfigurationType>("EnvironmentConfiguration", param)
const host = `http://${param.centerIp}:${param.centerPort}` const host = `http://${param.centerIp}:${param.centerPort}`
console.log("中心host",host) console.log("中心host", host)
AppStorage.setOrCreate<string>("host", host) AppStorage.setOrCreate<string>("host", host)
ethernet.setIfaceConfig("eth0", { ethernet.setIfaceConfig("eth0", {
mode: ethernet.IPSetMode.STATIC, mode: ethernet.IPSetMode.STATIC,

View File

@ -10,7 +10,7 @@ export default class TcpClient {
private oppositeIp: string = '' private oppositeIp: string = ''
private oppositeIpPort: string = '' private oppositeIpPort: string = ''
private tcpSendNum: number = 0 private tcpSendNum: number = 0
private tcp: socket.TCPSocket = null private tcp: socket.TCPSocket = socket.constructTCPSocketInstance()
private events: Array<Function> = [] private events: Array<Function> = []
constructor() { constructor() {
@ -20,59 +20,102 @@ export default class TcpClient {
return TcpClient.instance return TcpClient.instance
} }
init(tcpLocalIp: string, tcpLocalIpPort: string, tcpOppositeIp: string, tcpOppositePort: string) { // 初始化tcp连接
async init(tcpLocalIp: string, tcpLocalIpPort: string, tcpOppositeIp: string, tcpOppositePort: string) {
this.localIp = tcpLocalIp this.localIp = tcpLocalIp
this.oppositeIp = tcpOppositeIp this.oppositeIp = tcpOppositeIp
this.localIpPort = tcpLocalIpPort this.localIpPort = tcpLocalIpPort
this.oppositeIpPort = tcpOppositePort this.oppositeIpPort = tcpOppositePort
console.log(TCPTag, 'new Tcp', this.localIp, this.localIpPort, this.oppositeIp, this.oppositeIpPort) console.log(TCPTag, 'new Tcp', this.localIp, this.localIpPort, this.oppositeIp, this.oppositeIpPort)
this.tcp = socket.constructTCPSocketInstance(); this.tcp = socket.constructTCPSocketInstance();
this.bindTcp() await this.bindTcp()
await this.connectTcp()
} }
bindTcp(): Promise<void> { // 绑定tcp
return this.tcp.bind({ bindTcp(): Promise<Boolean> {
address: this.localIp, port: parseInt(this.localIpPort), family: 1 return new Promise((resolve, reject) => {
}).then(() => { this.tcp.bind({
return this.tcp.connect({ address: this.localIp,
address: { port: Number(this.localIpPort),
address: this.oppositeIp, port: parseInt(this.oppositeIpPort) family: 1
}, }).then(() => {
timeout: 6000 console.log(TCPTag, 'bindTcp success:', this.localIp, this.localIpPort, this.oppositeIp, this.oppositeIpPort)
resolve(true)
}).catch((err: BusinessError) => {
console.log(TCPTag, 'bindTcp error:', JSON.stringify(err), this.localIp, this.localIpPort, this.oppositeIp, this.oppositeIpPort)
reject(err)
}) })
}).then(() => {
try {
this.tcp.on("message", value => {
let data = new DataView(value.message)
this.events.forEach(cb => {
cb(value.message.slice(5, data.byteLength))
})
})
return Promise.resolve()
} catch (e) {
return Promise.reject(e)
}
}) })
} }
// 连接tcp
connectTcp(): Promise<Boolean> {
return new Promise((resolve, reject) => {
this.tcp.connect({
address: {
address: this.oppositeIp, port: Number(this.oppositeIpPort), family: 1
}, timeout: 1000 * 15
})
.then(() => {
this.getMessage()
console.log(TCPTag, "tcp connect success")
return this.tcp.setExtraOptions({
keepAlive: true
})
})
.then(() => {
resolve(true)
})
.catch((err: BusinessError) => {
console.log(TCPTag, "tcp connect or keepAlive error: ", JSON.stringify(err))
console.log(TCPTag, "tcp 重启服务")
reject(err)
})
})
}
getMessage() {
this.tcp.on("message", value => {
let data = new DataView(value.message)
this.events.forEach(cb => {
cb(value.message.slice(5, data.byteLength))
})
})
}
// 重新绑定tcp
async reBind() { async reBind() {
await this.close() await this.close()
this.tcp = socket.constructTCPSocketInstance(); this.tcp = socket.constructTCPSocketInstance();
await this.bindTcp() await this.bindTcp()
await this.connectTcp()
} }
// 监听tcp错误
onError(callback: Function) {
this.tcp.on('error', err => {
console.log(TCPTag, 'tcp on error: ', JSON.stringify(err))
callback?.()
});
}
// 关闭tcp连接
close(): Promise<void> { close(): Promise<void> {
return this.tcp?.close() return this.tcp?.close()
} }
// 监听tcp消息
onMsg(callback: Function) { onMsg(callback: Function) {
this.events.push(callback) this.events.push(callback)
} }
// 接收tcp消息
sendMsg(data: string): Promise<void> { sendMsg(data: string): Promise<void> {
return this.tcp?.send({ return this.tcp?.send({
data data
}).catch(async (err: BusinessError) => { }).catch(async (err: BusinessError) => {
console.log(TCPTag, 'sendMsg error:', JSON.stringify(err))
this.tcpSendNum++ this.tcpSendNum++
if (this.tcpSendNum > 10) { if (this.tcpSendNum > 10) {
this.tcpSendNum = 0 this.tcpSendNum = 0
@ -82,6 +125,7 @@ export default class TcpClient {
}) })
} }
// 取消监听tcp消息
offMsg(callback: Function) { offMsg(callback: Function) {
this.events = this.events.filter(cb => cb !== callback) this.events = this.events.filter(cb => cb !== callback)
} }

View File

@ -1,9 +1,10 @@
//差分信号 //差分信号
import { TCPTag } from '../../config';
import { EnvironmentConfigurationType } from '../../model'; import { EnvironmentConfigurationType } from '../../model';
import TcpClient from '../TcpUtils'; import TcpClient from '../TcpUtils';
class differentialSignal { class differentialSignal {
private differentialSignalTcp: TcpClient; private differentialSignalTcp: TcpClient = new TcpClient()
private timer: number = -1 private timer: number = -1
constructor() { constructor() {
@ -12,9 +13,19 @@ class differentialSignal {
init() { init() {
this.differentialSignalTcp = new TcpClient(); this.differentialSignalTcp = new TcpClient();
let config: EnvironmentConfigurationType = let config: EnvironmentConfigurationType =
AppStorage.get<EnvironmentConfigurationType>("EnvironmentConfiguration") AppStorage.get<EnvironmentConfigurationType>("EnvironmentConfiguration") || {
this.differentialSignalTcp.init(config.tcplocalIp, config.tcplocalIpPort, config.tcpOppositeIp, tcplocalIp: "",
config.tcpOppositePort); tcplocalIpPort: "",
tcpOppositeIp: "",
tcpOppositePort: ""
}
console.log(TCPTag, "初始化", JSON.stringify(config))
if (config.tcplocalIp || config.tcplocalIpPort || config.tcpOppositeIp || config.tcpOppositePort) {
this.differentialSignalTcp.init(config.tcplocalIp || "", config.tcplocalIpPort || "", config.tcpOppositeIp || "",
config.tcpOppositePort || "");
} else {
console.log(TCPTag, "未配置差分信号TCP信息,请在环境配置中设置")
}
} }
// 发送消息 // 发送消息
@ -30,6 +41,7 @@ class differentialSignal {
// 获取消息 // 获取消息
getData(callback: (data: ArrayBuffer) => void) { getData(callback: (data: ArrayBuffer) => void) {
this.differentialSignalTcp.onMsg((data: ArrayBuffer) => { this.differentialSignalTcp.onMsg((data: ArrayBuffer) => {
console.log(TCPTag, "获取", data);
callback(data); callback(data);
}); });
} }