调试对讲视频问题

This commit is contained in:
魏少阳 2023-12-18 16:03:05 +08:00
parent 4a131c88f5
commit c2823155b4
10 changed files with 98 additions and 32 deletions

View File

@ -97,6 +97,7 @@ static bool isVedioStop;
[arecord AudioEnd];
}
//
- (void)connect_ini {
_connect_reg_time = [Sformat timestamp];
Byte connect_bb[512];
@ -642,22 +643,24 @@ static bool isVedioStop;
isVedioStop= NO;
//
memcpy(bbsend, bb, 62);
bbsend[7] = 1;
bbsend[8] = 4;
NSLog(@"replay talk ip=%@;port=%d", ip, port);
[[Pub getApp].udp sendDataInMain:bbsend length:512 toHost:ip toPort:port];
//
memcpy(bbsend, bb, 62);
bbsend[7] = 1;
bbsend[8] = 5;
NSLog(@"replay talk ip=%@;port=%d", ip, port);
[[Pub getApp].udp sendDataInMain:bbsend length:512 toHost:ip toPort:port];
//
//
[self connect_ini];
[self connect];
//
timer = [NSTimer scheduledTimerWithTimeInterval:1
target:self selector:@selector(connect)
userInfo:nil repeats:YES];
@ -855,13 +858,19 @@ static char cnt;
}
else{//
NSData *data1 = [[NSData alloc] initWithBytes:bb length:60+32];
//
BAGLEN = [Pub getShortFromByte:bb at:POS_blen + 2];
// 63
iframe_index = [Pub getShortFromByte:bb at:POS_iframe_index];
// 65
alen = [Pub getShortFromByte:bb at:POS_alen];
blen = [Pub getShortFromByte:bb at:POS_blen];
// 71
bag_index = bb[POS_bag_index]&0xff ;
// 69
bag_num = bb[POS_bag_num]&0xff;
// 73
blen = [Pub getShortFromByte:bb at:POS_blen];
if(iframe_index != iframe.iframe_index){
iframe = [[IframeInfo alloc] init];
iframe.iframe_index = iframe_index;

View File

@ -129,9 +129,9 @@ class _MyAppState extends State<MyApp> with WidgetsBindingObserver, BaseWidget {
// playLocalAudio();
Uint8List uint8List = Uint8List.fromList([]);
CallTalk talkClass = CallTalk();
talkClass.getAVData(uint8List, 90);
// Uint8List uint8List = Uint8List.fromList([]);
// CallTalk talkClass = CallTalk();
// talkClass.getAVData(uint8List, 90);
}
//

View File

@ -1,9 +1,43 @@
import 'dart:async';
import '../../../../tools/baseGetXController.dart';
import '../../../../tools/eventBusEventManage.dart';
import 'lockMonitoring_state.dart';
class LockMonitoringLogic extends BaseGetXController {
final LockMonitoringState state = LockMonitoringState();
///
StreamSubscription? _getTVDataRefreshUIEvent;
void _getTVDataRefreshUIAction() {
// eventBus
_getTVDataRefreshUIEvent = eventBus.on<GetTVDataRefreshUI>().listen((event) {
state.listData.value = event.tvList;
});
}
@override
void onReady() {
// TODO: implement onReady
super.onReady();
print("onReady()");
_getTVDataRefreshUIAction();
}
@override
void onInit() {
// TODO: implement onInit
super.onInit();
}
@override
void onClose() {
// TODO: implement onClose
print("锁详情界面销毁了");
_getTVDataRefreshUIEvent!.cancel();
}
}

View File

@ -1,4 +1,5 @@
import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
import 'package:flutter_screenutil/flutter_screenutil.dart';
import 'package:get/get.dart';
@ -28,9 +29,9 @@ class _LockMonitoringPageState extends State<LockMonitoringPage> {
Stack(
// alignment: Alignment.bottomCenter,
children: [
// Image.asset("images/icon_test20231113.png", width: 1.sw, height: 1.sh, fit: BoxFit.cover),
state.listData.value.isEmpty ? Image.asset("images/icon_test20231113.png", width: 1.sw, height: 1.sh, fit: BoxFit.cover) :
Image.memory(
state.imageData,
Uint8List.fromList(state.listData.value),
width: 1.sw,
height: 1.sh,
fit: BoxFit.cover,

View File

@ -5,7 +5,9 @@ import 'package:get/get.dart';
class LockMonitoringState {
var isOpenVoice = false.obs;
Uint8List imageData = Uint8List.fromList([
var listData = <int>[].obs;
Uint8List imageData = Uint8List.fromList([
255,
216,
255,

View File

@ -6,6 +6,8 @@ import 'package:star_lock/main/lockDetail/monitoring/monitoring/lockMonitoring_p
import 'package:star_lock/talk/call/g711Decoder.dart';
import 'package:star_lock/talk/call/iFrameInfo.dart';
import '../../tools/eventBusEventManage.dart';
class CallTalk {
static int POS_iframe_index = 63;
static int POS_alen = 65;
@ -27,9 +29,9 @@ class CallTalk {
// '5858584349449601075439415f396333613730323264346364a5a5a5a5c0a809a3503138363832313530323337000000000000000030303030420e000002000000b33300001f000100b301b301ffd8ffe000114a4649460001010000';
// Uint8List bb = Uint8List.fromList(hex.decode(hexData));
//
String hexData =
'5858584349449601075439415f396333613730323264346364a5a5a5a5c0a809a3503138363832313530323337000000000000000030303030e02900000100050080020000010001004001b30145444444444444444445454444444444444444444444434343434443434344444444444544454545444444444444454545454545454545454445444545454545454545444444444343434344444443434344444444444343434343434343434443434343434343424343434343434242424242424242424243434343434242424242424343434342424343434242424242434243434343434344454344444444444444444444444444454545454544444444444444444445454545454545454545454545454546454545454545454545454545454545454646464646464645454545464646454545454545454545454545454544444444444444444443434343434343434343434343434343434343434242424242424242424242424242424343434242434343434343434343434343434343434343434444444343434343430000000000000000000000000000000000000024000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000024001d044000000000001d080001000000001d18c03000000000';
Uint8List bb = Uint8List.fromList(hex.decode(hexData));
// String hexData =
// '5858584349449601075439415f396333613730323264346364a5a5a5a5c0a809a3503138363832313530323337000000000000000030303030e02900000100050080020000010001004001b30145444444444444444445454444444444444444444444434343434443434344444444444544454545444444444444454545454545454545454445444545454545454545444444444343434344444443434344444444444343434343434343434443434343434343424343434343434242424242424242424243434343434242424242424343434342424343434242424242434243434343434344454344444444444444444444444444454545454544444444444444444445454545454545454545454545454546454545454545454545454545454545454646464646464645454545464646454545454545454545454545454544444444444444444443434343434343434343434343434343434343434242424242424242424242424242424343434242434343434343434343434343434343434343434444444343434343430000000000000000000000000000000000000024000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000024001d044000000000001d080001000000001d18c03000000000';
// Uint8List bb = Uint8List.fromList(hex.decode(hexData));
//
if (bb[61] == 1) {
@ -68,14 +70,25 @@ class CallTalk {
iframe.bb = Uint8List(end);
}
copyBytes(iframe!.bb!, start, bb, POS_data, blen);
print('bbbbbb111: ${bb}');
iframe.bb!.addAll(bb.sublist(76, bb.length));
// copyBytes(iframe!.bb!, start, bb, POS_data, blen);
//
print('Copied Bytes: ${iframe.bb}');
Uint8List data = iframe.bb!.sublist(0, iframe.cur_len);
if(iframe.bagNum == iframe.bagReceive){
Uint8List data = iframe.bb!.sublist(0, iframe.cur_len);
print('播放第%d帧:${iframe.iframeIndex} 一帧图片的Data: $data');
eventBus.fire(GetTVDataRefreshUI(data));
}
// Get.toNamed(Routers.lockMonitoringPage, arguments: {
// "lockId": "111"
// });
//
print(iframe.bb);
// print(iframe.bb);
}
}

View File

@ -68,7 +68,7 @@ class UDPManage{
if(event == RawSocketEvent.read){
Datagram? dg = socket.receive();
try {
print('Did received data on the stream (length --> ${dg!.data.length}) dg!.data:${dg!.data}');
// print('Did received data on the stream (length --> ${dg!.data.length}) dg!.data:${dg!.data}');
// EventBusManager().eventBusFir(EventReceiveModel(data: dg?.data,sendChannel: DataChannel.udp));
CommandUDPReciverManager.appDataReceive(dg!.data);
} catch (e) {
@ -87,7 +87,7 @@ class UDPManage{
return;
}
try {
print("sendData:$data");
// print("sendData:$data");
var result = _udpSocket?.send(data, InternetAddress(host!), port!);
if(result != data.length) {
print('❌Udp ----> send data $result ${data.length}');

View File

@ -2,6 +2,7 @@
import 'dart:typed_data';
import '../../tools/toast.dart';
import '../call/callTalk.dart';
import 'udp_talkClass.dart';
class CommandUDPReciverManager {
@ -15,7 +16,7 @@ class CommandUDPReciverManager {
if(dataSize < 4){
return;
}
// print("appDataReceiveData:$data");
print("appDataReceiveData:$data");
Uint8List data1 = Uint8List.fromList(data);
if(data1.length==1){
@ -27,7 +28,7 @@ class CommandUDPReciverManager {
if (data[6] == 4) {
if(data[7] == 2){
print("心跳包反馈 在线状态");
// print("心跳包反馈 在线状态");
} else if(data[7]==3) {
[Toast.show(msg: "您已在其他设备登录")];
}
@ -38,9 +39,8 @@ class CommandUDPReciverManager {
// }
//
// var beiCallType = data[8] & 0xff;
var beiCallType = 1 & 0xff;
print("被呼叫2 类型$beiCallType");
var beiCallType = data[8] & 0xff;
print("被呼叫类型$beiCallType");
switch (beiCallType) {
case 1:{
//
@ -57,8 +57,9 @@ class CommandUDPReciverManager {
break;
case 7:
case 8:{//
//print("音视频数据");
print("音视频数据");
CallTalk cllTalk = CallTalk();
cllTalk.getAVData(data1, data1.length);
}
break;
case 9:{
@ -66,8 +67,7 @@ class CommandUDPReciverManager {
//print("对方保持连接");
data[7] = 2;
}
else{
} else{
//print("保持连接反馈");
}

View File

@ -19,18 +19,16 @@ class UDPTalkClass{
factory UDPTalkClass() => _share();
UDPTalkClass get manager => _share();
UDPTalkClass._init() {
}
UDPTalkClass._init();
var status = 0;// 0
var remoteEquid;
var remoteEquid;//
late Timer timer;
// 退
var isBeCall = false;
beCallW({List<int>? data, String? ip, int? port}) async {
print("beCall");
// print("beCall");
// if (await isCallMe(data)) {
// return;
// }
@ -42,10 +40,12 @@ class UDPTalkClass{
remoteEquid = getEquidFrombb(data, 9);
status = 6;
//
data![7] = 1;
data[8] = 4;
UDPManage().sendData(data);
//
data[7] = 1;
data[8] = 5;
UDPManage().sendData(data);
@ -59,6 +59,7 @@ class UDPTalkClass{
if(UDPTalkClass().isBeCall == false){
UDPTalkClass().isBeCall = true;
//
timer = Timer.periodic(1.seconds, (timer) {
data[7] = 1;
data[8] = 9;

View File

@ -54,4 +54,10 @@ class LockSetChangeSetRefreshLockDetailWithType{
int type;// 0 1
int setResult;
LockSetChangeSetRefreshLockDetailWithType(this.type, this.setResult);
}
///
class GetTVDataRefreshUI{
List<int> tvList;
GetTVDataRefreshUI(this.tvList);
}