Flutter:如何将音频文件以Base64格式进行编码和解码?

4
我正在使用Dialogflow构建聊天机器人应用程序,并希望在我的应用程序中实现语音识别功能。正如您所知,Dialogflow为我们提供了一种基于音频检测意图的功能,但它仅接受以base64形式的音频。对我来说问题是我无法将音频文件编码为Base64。由于我刚开始学习Flutter开发,所以如果我漏掉了什么或者做错了什么,请告诉我。谢谢! 我尝试了这种方法,但它没有给我正确的输出:
  Future<String> makeBase64(String path) async {
    try {
      if (!await fileExists(path)) return null;
      File file = File(path);
      file.openRead();
      var contents = await file.readAsBytes();
      var base64File = base64.encode(contents);

      return base64File;
    } catch (e) {
      print(e.toString());

      return null;
    }
  }
1个回答

7
你能这样做:

你可以这样操作:

List<int> fileBytes = await file.readAsBytes();
String base64String = base64Encode(fileBytes);

转换后的字符串不包括MIME类型,因此您可能需要像这样包含:
final fileString = 'data:audio/mp3;base64,$base64String';

不,但我猜测我得到的编码输出是不完整的,因为当我尝试解码输出时,它给我返回了一个不兼容的音频文件。我正在使用以下网站进行解码:链接 - mechanic
1
成功了!非常感谢@xion。我之前的错误在于将输出打印到调试控制台上,然后在不知情的情况下使用它进行解码,而忽略了调试控制台如果字符串太长就不会提供完整的字符串这个事实。 - mechanic

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接