import 'dart:async'; import 'package:flutter/services.dart'; class G711 { Future> readAssetFile(String assetPath) async { final ByteData data = await rootBundle.load(assetPath); final List bytes = data.buffer.asUint8List(); return bytes; } int ALawToLinear(int aVal) { // 取反 aVal = ~aVal; // 计算偏移 int t = ((aVal & 0x0F) << 3) + 0x84; t <<= (aVal & 0x70) >> 4; // 根据符号位决定返回值的正负 return (aVal & 0x80) != 0 ? 0x84 - t : t - 0x84; } //711解码为pcm数据 List convertList(List aLawList) { // 将 ALawToLinear 函数应用于 List final List linearList = aLawList.map(ALawToLinear).toList(); return linearList; } //List转为Uint8List Uint8List convertToInt8ListLittleEndian(List intList) { final List int8List = []; for (int intValue in intList) { intValue = intValue * 2; // 将 int 拆分为两个字节,采用小端序 int8List.add(intValue & 0xFF); // 低 8 位 int8List.add((intValue & 0xFF00) >> 8); // 高 8 位 } return Uint8List.fromList(int8List); } }