React-Native将录制的音频发送到AWS S3

时间:2018-06-13 02:37:53

标签: reactjs amazon-web-services react-native audio amazon-s3

我正在尝试与React-Native中的录音进行即时聊天。我在将录制的音频发送到S3时遇到问题。

我使用React-Native-Audio录制声音输入,使用React-Native-Sound播放录制的音频,使用React-Native-aws3将文件发送到AWS。

我可以播放本地录制的音频。另外,我可以将图片发送到S3。但是,当我尝试将音频发送到AWS S3并播放来自S3给出的URL的音频时,音频不起作用。 S3将文件显示为0字节。

这是我的代码:

  const file = {
    audioPath, // `${AudioUtils.DocumentDirectoryPath}/test.aac`
    name: `${this.props.local.currentUserId}${moment
      .utc()
      .format("YYYY-MM-DD-HH-mm-ss")}.aac`,
    type: `audio/aac`
  };
  const options = {
    keyPrefix: ****,
    bucket: ****,
    region: ****,
    accessKey: ****,
    secretKey: ****
  };

  RNS3.put(file, options)
    .progress(event => {
      console.log(`percent: ${event.percent}`);
    })
    .then(response => {
      console.log(response, "response from rns3 audio");
      if (response.status !== 201) {
        console.error(response.body);
        return;
      }
      // ... handling the response
    })

我认为问题在于没有提取实际的录音。

1 个答案:

答案 0 :(得分:1)

非常愚蠢的语法错误。

const file = {
  uri: audioPath,
  name: `${this.props.local.currentUserId}${moment
         .utc()
         .format("YYYY-MM-DD-HH-mm-ss")}.aac`,
  type: `audio`
};

只需要添加uri属性。

它现在正在工作!

<强>更新

对于那些希望了解如何向RN-Gifted-Chat添加音频的人,请参阅我的中篇文章:https://medium.com/@decentpianist/react-native-chat-with-image-and-audio-c09054ca2204