6155发送视频修改,方便随时切换切片大小

This commit is contained in:
liub
2025-11-21 14:18:36 +08:00
parent 294d854867
commit a8ce1d9680
6 changed files with 124 additions and 90 deletions

View File

@ -36,6 +36,7 @@
}, },
onShow: function() { onShow: function() {
console.log('App Show'); console.log('App Show');
//将检查更新换到onshow,因为苹果用户喜欢一直挂着 //将检查更新换到onshow,因为苹果用户喜欢一直挂着
uni.getSystemInfo({ uni.getSystemInfo({
success: function(res) { success: function(res) {
@ -46,8 +47,6 @@
console.log("appid=", appid); console.log("appid=", appid);
upgrade.checkAndUpdateWgt(); upgrade.checkAndUpdateWgt();
} }
} }
} }
}); });

View File

@ -2,7 +2,7 @@
const config = { const config = {
// 开发环境 // 开发环境
development: { development: {
BASE_URL: 'https://www.cnxhyc.com/jq', BASE_URL: 'http://139.224.253.23:8000',
API_PREFIX: '', API_PREFIX: '',
// MQTT 配置 // MQTT 配置
MQTT_HOST: 'www.cnxhyc.com', MQTT_HOST: 'www.cnxhyc.com',

View File

@ -56,7 +56,8 @@
"<uses-permission android:name=\"android.permission.BLUETOOTH_CONNECT\"/>" "<uses-permission android:name=\"android.permission.BLUETOOTH_CONNECT\"/>"
], ],
"minSdkVersion" : 21, "minSdkVersion" : 21,
"abiFilters" : [ "armeabi-v7a", "arm64-v8a", "x86" ] "abiFilters" : [ "armeabi-v7a", "arm64-v8a", "x86" ],
"schemes" : ""
}, },
/* ios */ /* ios */
"ios" : { "ios" : {
@ -72,7 +73,8 @@
"NSCameraUsageDescription" : "App需要您的同意访问相机,用于上传头像,设备开机画面", "NSCameraUsageDescription" : "App需要您的同意访问相机,用于上传头像,设备开机画面",
"NSMicrophoneUsageDescription" : "App需要您的同意访问麦克风,用于上传语音包" "NSMicrophoneUsageDescription" : "App需要您的同意访问麦克风,用于上传语音包"
}, },
"idfa" : false "idfa" : false,
"urltypes" : ""
}, },
/* SDK */ /* SDK */
"sdkConfigs" : { "sdkConfigs" : {

View File

@ -877,7 +877,7 @@
"clientid": clientid "clientid": clientid
}, },
formData: { formData: {
code: 2 code: 1
}, },
timeout: 600000, timeout: 600000,
fail: (ex) => { fail: (ex) => {
@ -899,8 +899,10 @@
if (res.statusCode === 200) { if (res.statusCode === 200) {
if (res.data.code == 200) { if (res.data.code == 200) {
console.log("上传完成,耗时:" + m + "分" + s + "秒"); console.log("上传完成,耗时:" + m + "分" + s + "秒,获得数据:"+res.data.length);
updateLoading(these,{text:"上传完成,耗时:" + m + "分" + s + "秒,正在切片。"}) updateLoading(these, {
text: "上传完成,耗时:" + m + "分" + s + "秒,正在切片。"
})
resolve(res.data); resolve(res.data);
return; return;
@ -922,12 +924,14 @@
//视频切片 //视频切片
let videoCutPacket = (array) => { let videoCutPacket = (array) => {
console.log("开始切片:",array.length);
return new Promise((resolve, reject) => { return new Promise((resolve, reject) => {
try { try {
let index=0;
let imgSize = 25600; let imgSize = 25600;
let packetSize = 3200; let packetSize = 3200;
let tdSize = 500; let tdSize = 500; //只能是400/500
let childPackLength = (tdSize === 400 ? 8 : 7);
let results = []; let results = [];
for (let i = 0; i < 30; i++) { //先切出30张每张25600字节 for (let i = 0; i < 30; i++) { //先切出30张每张25600字节
let packet = array.slice(0, imgSize); let packet = array.slice(0, imgSize);
@ -940,18 +944,24 @@
packet.splice(0, packetSize); packet.splice(0, packetSize);
let thirdLevel = []; let thirdLevel = [];
for (let k = 0; k < 7; k++) { //每1个大包切出7个小包前6包500字节第7包200字节共计56小包 for (let k = 0; k < childPackLength; k++) {
//如果每小包500字节的话每1个大包切出7个小包前6包500字节第7包200字节共计56小包
//如果每小包400字节的话每1个大包切出8个小包每包400字节共计64小包
let arr = childPacket.slice(0, tdSize); let arr = childPacket.slice(0, tdSize);
childPacket.splice(0, tdSize) childPacket.splice(0, tdSize)
thirdLevel.push(arr); thirdLevel.push(arr);
index++;
console.log("第"+index+"包长度:"+arr.length);
} }
secondLevel.push(thirdLevel); secondLevel.push(thirdLevel);
} }
results.push(secondLevel); results.push(secondLevel);
} }
updateLoading(these,{text:'切片完成,正在发送'}); updateLoading(these, {
text: '切片完成,正在发送'
});
resolve(results); resolve(results);
} catch (error) { } catch (error) {
updateLoading(these, { updateLoading(these, {
@ -974,9 +984,9 @@
this.currentPacket = 0; this.currentPacket = 0;
let smallPacketLen = array[0][0][0].length;
// 总数据包数 // 总数据包数,每包400字节就是1920包每包500字节时1680包
var totalPackets = 1680; var totalPackets = smallPacketLen === 400 ? 1920 : 1680;
this.totalPackets = totalPackets; this.totalPackets = totalPackets;
let currentPacket = 1; let currentPacket = 1;
@ -1000,12 +1010,13 @@
} }
// console.log("111111") // console.log("111111")
// 计算当前包的数据 // 计算当前包的数据
let packetSize = 500; let packetSize = smallPacketLen;
if (smallPacketLen === 500) {
if ((currentPacket - 1) % 56 === 0) { if ((currentPacket - 1) % 56 === 0) {
packetSize = 508; packetSize = 508;
} }
if (childPacketIndex === 6) { if (childPacketIndex === 6) {
@ -1015,12 +1026,19 @@
if ((currentPacket - 1) % 56 === 55) { if ((currentPacket - 1) % 56 === 55) {
packetSize = 201; packetSize = 201;
} }
} else if (smallPacketLen === 400) {
if ((currentPacket - 1) % 64 === 0) {
packetSize = 408;
}
if ((currentPacket - 1) % 64 === 63) {
packetSize = 401;
}
}
console.log("imgIndex=" + imgIndex + ",imgPackIndex=" +
imgPackIndex +
",childPacketIndex=" + childPacketIndex)
let packetData = array[imgIndex][imgPackIndex][childPacketIndex]; let packetData = array[imgIndex][imgPackIndex][childPacketIndex];
console.log("imgIndex=" + imgIndex + ",imgPackIndex=" +imgPackIndex +",childPacketIndex=" + childPacketIndex+',packetData='+packetData.length);
let buffer = new ArrayBuffer(packetSize); let buffer = new ArrayBuffer(packetSize);
let dataView = new DataView(buffer); let dataView = new DataView(buffer);
@ -1028,7 +1046,8 @@
let sortNo = currentPacket.toString(16).padStart(4, '0'); let sortNo = currentPacket.toString(16).padStart(4, '0');
// console.log("11111"); // console.log("11111");
let start = 0; let start = 0;
if ((currentPacket - 1) % 56 === 0) { if (((currentPacket - 1) % 56 === 0 && smallPacketLen === 500)
|| ((currentPacket - 1) % 64 ===0 && smallPacketLen === 400)) {
// 填充头部 // 填充头部
dataView.setUint8(0, 0xFA); // 帧头 dataView.setUint8(0, 0xFA); // 帧头
dataView.setUint8(1, 0x09); // 帧类型:开机画面 dataView.setUint8(1, 0x09); // 帧类型:开机画面
@ -1042,19 +1061,24 @@
dataView.setUint8(7, imgPackIndex + 1); dataView.setUint8(7, imgPackIndex + 1);
start = 8; start = 8;
} }
console.log("222222");
for (let i = 0; i < packetData.length; i++) { for (let i = 0; i < packetData.length; i++) {
dataView.setUint8(start + i, '0x' + packetData[i]); dataView.setUint8(start + i, '0x' + packetData[i]);
} }
// console.log("333333333"); if (smallPacketLen === 500) {
if ((currentPacket - 1) % 56 === 55) { if ((currentPacket - 1) % 56 === 55) {
dataView.setUint8(200, 0xFF); dataView.setUint8(200, 0xFF);
} }
} else if (smallPacketLen === 400) {
if ((currentPacket - 1) % 64 === 63) {
dataView.setUint8(200, 0xFF);
}
}
// console.log("444444"); // console.log("444444");
let inteval = parseInt(this.inteval ? this.inteval : 80); let inteval = parseInt(this.inteval ? this.inteval : 80);
ble.sendData(f.deviceId, buffer, f.writeServiceId, f ble.sendData(f.deviceId, buffer, f.writeServiceId, f
.wirteCharactId, ).then(() => { .wirteCharactId,15).then(() => {
if (ReSendNo) { if (ReSendNo) {
resolve(); resolve();
@ -1064,12 +1088,13 @@
this.currentPacket = currentPacket; this.currentPacket = currentPacket;
updateLoading(these, { updateLoading(these, {
text:'正在发送:'+currentPacket+"/"+totalPackets text: '正在发送:' + currentPacket + "/" +
totalPackets
}); });
childPacketIndex++; childPacketIndex++;
if (childPacketIndex == 7) { if (childPacketIndex == (smallPacketLen === 500?7:8)) {
imgPackIndex++; imgPackIndex++;
if (imgPackIndex == 8) { if (imgPackIndex == 8) {
imgIndex++; imgIndex++;
@ -1092,7 +1117,9 @@
} }
console.error(err.errMsg + ",发送失败了" + currentPacket); console.error(err.errMsg + ",发送失败了" + currentPacket);
updateLoading(these,{text:"发送失败,"+err.errMsg}); updateLoading(these, {
text: "发送失败," + err.errMsg
});
reject(err); reject(err);
}); });
}; };
@ -1113,6 +1140,7 @@
uni.chooseVideo({ uni.chooseVideo({
sourceType: ['album'], sourceType: ['album'],
compressed:false,
success: function(res) { success: function(res) {
console.log("res=", res); console.log("res=", res);
let path = res.tempFilePath; let path = res.tempFilePath;
@ -1124,9 +1152,9 @@
err.push("视频时长至少2秒"); err.push("视频时长至少2秒");
} }
if (width != 160 || height != 80) { // if (width != 160 || height != 80) {
err.push("视频宽高必须是160*80"); // err.push("视频宽高必须是160*80");
} // }
if (err.length > 0) { if (err.length > 0) {
err = err.join(";"); err = err.join(";");
these.showPop({ these.showPop({
@ -1150,12 +1178,15 @@
shotVideoClick(array).then(() => { shotVideoClick(array).then(() => {
console.log("发送完成"); console.log("发送完成");
let end = new Date(); let end = new Date();
var diff = (end.getTime() - start.getTime()) / 1000; var diff = (end.getTime() - start
.getTime()) / 1000;
let s = parseInt(diff % 60); let s = parseInt(diff % 60);
let m = parseInt((diff - s) / 60); let m = parseInt((diff - s) / 60);
console.log("发送完成,耗时:" + m + "分" + s + "秒"); console.log("发送完成,耗时:" + m + "分" +
s + "秒");
updateLoading(these, { updateLoading(these, {
text: "发送完成,耗时:" + m + "分" + s + "秒", text: "发送完成,耗时:" + m +
"分" + s + "秒",
}); });
}).catch((ex1) => { }).catch((ex1) => {

View File

@ -219,7 +219,7 @@
<view> <view>
<view class="item"> <view class="item">
<input class="value" style="text-indent: 20rpx;" v-model="formData.msgTxt" placeholder="请输入文字" <input maxlength="16" class="value" style="text-indent: 20rpx;" v-model="formData.msgTxt" placeholder="请输入文字"
placeholder-class="usrplace" /> placeholder-class="usrplace" />
</view> </view>
@ -867,8 +867,10 @@
// console.log("收到文本回复", payload); // console.log("收到文本回复", payload);
// // this.SendTxtMQ(json); // // this.SendTxtMQ(json);
// } // }
if (keys.indexOf('sta_BreakNews') > -1) { //紧急通知 if (keys.indexOf('sta_BreakNews') > -
if(json.sta_BreakNews==='I get it')// && this.Status.msgOkTime && this.Status.msgOkIntval){ 1) { //紧急通知
if (json.sta_BreakNews ===
'I get it') // && this.Status.msgOkTime && this.Status.msgOkIntval){
{ {
these.showPop({ these.showPop({
showPop: true, showPop: true,

View File

@ -1828,7 +1828,7 @@ class BleHelper {
Promise.race([timeOut(ms), promise]).then(resolve).catch((ex) => { Promise.race([timeOut(ms), promise]).then(resolve).catch((ex) => {
// console.error("ex=", ex); // console.error("ex=", ex);
if (ex.code == -1) { if (ex.code == -1) {
console.error('专业给Uniapp填坑,发送消息永无回调'); // console.error('专业给Uniapp填坑,发送消息永无回调');
resolve(ex); resolve(ex);
} else { } else {
reject(ex); reject(ex);