首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >颤振Just_audio,方法disposeAllPlayers没有实现错误

颤振Just_audio,方法disposeAllPlayers没有实现错误
EN

Stack Overflow用户
提问于 2022-09-13 13:25:15
回答 1查看 155关注 0票数 0

我正在使用音频包来播放我的base64字符串,这是我从服务器收到的一个wav文件。这个应用程序是从一个android设备API 30-ish上播放的。这是加载base64后出现的错误:

代码语言:javascript
运行
复制
E/flutter (31770): [ERROR:flutter/lib/ui/ui_dart_state.cc(198)] Unhandled Exception: MissingPluginException(No implementation found for method disposeAllPlayers on channel com.ryanheise.just_audio.methods)
E/flutter (31770): #0      MethodChannel._invokeMethod (package:flutter/src/services/platform_channel.dart:165:7)
E/flutter (31770): <asynchronous suspension>
E/flutter (31770): #1      MethodChannelJustAudio.disposeAllPlayers (package:just_audio_platform_interface/method_channel_just_audio.dart:29:10)
E/flutter (31770): <asynchronous suspension>
E/flutter (31770): 
E/flutter (31770): [ERROR:flutter/lib/ui/ui_dart_state.cc(198)] Unhandled Exception: MissingPluginException(No implementation found for method init on channel com.ryanheise.just_audio.methods)
E/flutter (31770): #0      MethodChannel._invokeMethod (package:flutter/src/services/platform_channel.dart:165:7)
E/flutter (31770): <asynchronous suspension>
E/flutter (31770): #1      MethodChannelJustAudio.init (package:just_audio_platform_interface/method_channel_just_audio.dart:13:5)
E/flutter (31770): <asynchronous suspension>
E/flutter (31770): #2      AudioPlayer._setPlatformActive.setPlatform (package:just_audio/just_audio.dart:1330:13)
E/flutter (31770): <asynchronous suspension>
E/flutter (31770): 

我的自定义base64播放器,我从页面的指示:

代码语言:javascript
运行
复制
class MyAudioPlayer extends StreamAudioSource {
  MyAudioPlayer({this.bytes});

  List<int> bytes;

  @override
  Future<StreamAudioResponse> request([int start, int end]) async {
    final start = 0;
    final end = bytes.length;
    return StreamAudioResponse(
      sourceLength: bytes.length,
      contentLength: end - start,
      offset: start,
      stream: Stream.value(bytes.sublist(start, end)),
      contentType: "audio/x-wav",
    );
  }
}

我播放的文件:

代码语言:javascript
运行
复制
  void playTTS(String content) async{
    Dialogs.showLoadingDialog(context: context);
    final List<int> base64 = await ApiService.textToSpeech(content);
    final player = AudioPlayer();
    await player.setAudioSource(MyAudioPlayer(bytes: base64));
    await player.play();
    Navigator.of(context, rootNavigator: true).pop();
    listString.value = List.from(listString.value..add(ValueNotifier(content)));
  }

我已经将此设置为我的androidmanifest.xml已设置为true。

代码语言:javascript
运行
复制
android:usesCleartextTraffic="true"

任何帮助都是非常感谢的。

EN

Stack Overflow用户

回答已采纳

发布于 2022-09-15 04:00:25

似乎我不必像教程那样用自定义类来转换base64 Wav文件。根据在线转换器,我所要做的就是将data:audio/wav;base64,$base64放在实际的base64字符串之前,并使用正常的setUrl,它起了作用:

代码语言:javascript
运行
复制
 final String code = "data:audio/wav;base64," + json.decode(response.body)["base64"];
 final player = AudioPlayer();
 player.setUrl(code);
 await player.play();
票数 0
EN
查看全部 1 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73703810

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档