优化对讲接收音频

This commit is contained in:
魏少阳 2023-12-29 18:40:02 +08:00
parent 719246ea82
commit 2723c0b058
2 changed files with 33 additions and 4 deletions

View File

@ -47,7 +47,7 @@ class LockMonitoringLogic extends BaseGetXController {
// 60
state.oneMinuteTimeTimer = Timer.periodic(const Duration(seconds:1), (Timer t) async {
state.oneMinuteTime.value++;
Get.log('state.oneMinuteTime.value:${state.oneMinuteTime.value}');
// Get.log('state.oneMinuteTime.value:${state.oneMinuteTime.value}');
if(state.oneMinuteTime.value >= 60){
// 60
state.oneMinuteTimeTimer.cancel();

View File

@ -1,6 +1,7 @@
import 'dart:convert';
import 'dart:typed_data';
import 'package:flutter/foundation.dart';
import 'package:get/get.dart';
import 'package:star_lock/talk/call/g711.dart';
import 'package:star_lock/talk/call/iFrameInfo.dart';
import '../../tools/eventBusEventManage.dart';
@ -22,6 +23,7 @@ class CallTalk {
IframeInfo? iframe; //
var growableList;
bool getFirstFrame = false; //
List<int> allDataBytes = <int>[]; //
CallTalk._init() {
iframe = IframeInfo();
@ -47,6 +49,14 @@ class CallTalk {
try {
// ALaw Linear
pcmBytes = G711().convertList(g711Data);
allDataBytes.addAll(pcmBytes);
// String filePath = 'assets/s10-g711.bin';
//
// List<int> audioData = await G711().readAssetFile(filePath);
// pcmBytes = G711().convertList(audioData);
// allDataBytes = pcmBytes.sublist(0, 640);
_initializeAudioPlayer(pcmBytes);
} catch (e) {
print('Error decoding G.711 to PCM: $e');
@ -118,9 +128,28 @@ class CallTalk {
//
Future<void> _initializeAudioPlayer(List<int> audioData) async {
PcmArrayInt16 fromList = PcmArrayInt16.fromList(audioData);
await FlutterPcmSound.feed(fromList);
Get.log('_initializeAudioPlayer audioData:$audioData');
PcmArrayInt16 fromList = PcmArrayInt16.fromList(audioData);
// FlutterPcmSound.setFeedCallback(onFeed);
await FlutterPcmSound.feed(fromList);
FlutterPcmSound.play();
}
}
void onFeed(int remainingFrames) async {
int framesToFeed = 320;
if (allDataBytes.length >= framesToFeed) {
List<int> frames = allDataBytes.sublist(0, framesToFeed);
allDataBytes.removeRange(0, framesToFeed);
// FlutterPcmSound
PcmArrayInt16 fromList = PcmArrayInt16.fromList(frames);
await FlutterPcmSound.feed(fromList);
FlutterPcmSound.play();
} else {
//
print("Not enough data in allPcmData.");
}
}
}