cordova-plugin-media:解析nodejs服务器上的".amr"音频文件

nic*_*ost 6 android wav amr node.js cordova

我正在使用cordova-plugin-media插件来记录来自android和ios设备的音频文件.但是,android只允许在".amr"结尾记录文件,iOS在其他地方只支持".wav".但是,Android上的iOS设备播放".wav"时,iOS不支持".amr"文件.这就是为什么我必须以某种方式转换它们.

因为我找不到任何cordova-plugin转换客户端上的".amr"文件除了这个(基于外部API并且极其缓慢+不完全工作 - 此外我不喜欢做客户端的文件转换),我正在寻找服务器端的解决方案:

是否有任何javascript库(最好是"nodejs-friendly")允许我轻松地将".amr"文件转换为".wav"或".mp3"(或类似 - 只能在iOS上播放)?尽管ffmpeg(我无法正确安装),我找不到任何解决方案...... :(

(在cordova-plugin-media中将mime-type设置为'audio/wav'会创建一个"损坏的"wav文件,在使用工具进一步分析时仍然是amr-encode ...)

我真的很感谢你的帮助!

nic*_*ost 4

我想出了一个“解决方案”,如果其他人遇到与我相同的问题,我会与您分享:

www.cloudconvert.com 提供了一个非常简单的 API,用于“即时”转换视频/音频/img 文件。

对于node.js,我可以推荐一个节点包: https: //github.com/cloudconvert/cloudconvert-node

我决定将 .amr 转换为 .mp3 而不是 .wav(iOS“标准”),因为 .mp3 较小。为了能够在 iOS 设备上播放它,必须根据 github 上描述的(手动)示例稍微调整比特率。确保将以下选项传递给您的转换过程:

  ccprocess.start({
    outputformat: 'mp3',
    input: 'download',
    file: 'path-to-your-file',
    converteroptions: {
      audio_bitrate: "721",
      audio_frequency: "44100",
      audio_qscale: -1
    }
  }, function (err, ccprocess) { ...
Run Code Online (Sandbox Code Playgroud)