提交流格式播放代码

This commit is contained in:
Daisy 2023-12-27 17:16:58 +08:00
parent 9848852f9f
commit d830165402

View File

@ -143,8 +143,8 @@ class CallTalk {
if (audioData.isNotEmpty) {
//
print('转换pcmBytes数据长度为:${audioData.length}');
_playRawData(audioData);
// _playAudioStream(audioData);
// _playRawData(audioData);
playAudioStream(audioData);
} else {
print('Failed to read audio data.');
}
@ -162,32 +162,30 @@ class CallTalk {
);
}
Future<void> _playAudioStream(List<int> audioData) async {
Future<void> playAudioStream(List<int> audioData) async {
await _audioPlayer
.setSubscriptionDuration(const Duration(milliseconds: 10));
//
await _audioPlayer.startPlayer(
codec: Codec.pcm16,
sampleRate: 8000,
numChannels: 1,
);
int totalLength = audioData.length;
int offset = 0;
while (offset < totalLength) {
int chunkSize = _bufferSize;
if (offset + chunkSize > totalLength) {
chunkSize = totalLength - offset;
//
for (int i = 0; i < audioData.length; i += 320) {
int chunkSize = 320;
if (i + chunkSize > audioData.length) {
chunkSize = audioData.length - i;
}
List<int> chunk = audioData.sublist(offset, offset + chunkSize);
await _audioPlayer.feedFromStream(Uint8List.fromList(chunk));
offset += chunkSize;
List<int> chunk = audioData.sublist(i, i + chunkSize);
await _audioPlayer
.feedFromStream(G711().convertToInt8ListLittleEndian(chunk));
}
await _audioPlayer.stopPlayer();
}
Future<void> stopAudioPlayer() async {
//
await _audioPlayer.stopPlayer();
}
}