提交流格式播放代码
This commit is contained in:
parent
9848852f9f
commit
d830165402
@ -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();
|
||||
}
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user