選択できるのは25トピックまでです。 トピックは、先頭が英数字で、英数字とダッシュ('-')を使用した35文字以内のものにしてください。
 
 
 
 
 
 

38 行
1.1 KiB

  1. import 'package:audioplayers/audioplayers.dart';
  2. import 'dart:typed_data';
  3. import 'dart:async';
  4. import 'dart:io';
  5. import 'package:demo001/plugin/xunfei/audiotranslate/result_audio.dart';
  6. class AudioPlayerHandler {
  7. final AudioPlayer _audioPlayer = AudioPlayer();
  8. final Xunfei_AudioTranslation_Result_Audio _audioStream;
  9. AudioPlayerHandler(this._audioStream);
  10. // 播放音频流
  11. Future<void> playAudio() async {
  12. // 从音频流获取数据并播放
  13. await for (Uint8List audioData in _audioStream.audioStream) {
  14. await _playAudioData(audioData);
  15. }
  16. }
  17. // 播放音频数据
  18. Future<void> _playAudioData(Uint8List audioData) async {
  19. // 暂时将音频数据保存到文件系统
  20. final file = await _saveToFile(audioData);
  21. // 播放文件
  22. await _audioPlayer.play(DeviceFileSource(file.path));
  23. }
  24. // 保存音频数据到文件
  25. Future<File> _saveToFile(Uint8List audioData) async {
  26. final directory = await Directory.systemTemp.createTemp();
  27. final file = File('${directory.path}/audio.pcm');
  28. await file.writeAsBytes(audioData);
  29. return file;
  30. }
  31. }