需求是:接受并上传微信的录音消息(是.amr格式),这个已经实现了,现在需要在一个页面中,展示播放这些音频。

但是使用的时候,amr格式在网页中不能直接播放(我有试过直接在AVFile上传文件的时候直接修改后缀,导致的结果是音频文件都不能在线直接播放,只有下载以后可以播放)

然后我去搜了很多转换amr格式到mp3等格式的方法都没能找到,FFmpeg这个需要C还是C++基础我也弄不来,有基于C#的收费要199美元最少。。而且也不是那么容易用

我搜了社区,查到有说leanCloud用的是七牛的文件存储服务,我在搜索的时候有看到说七牛文件存储提供转码的功能,但是不知道LeanCloud可不可以使用?

我们是不是没有办法使用七牛的那个上传策略,只能通过API调用转换?

对的,或者你们在本地先改格式,再上传。

我们 AVFile 的策略是:你们给什么文件格式,就上传成为什么格式。

我们是直接微信里面获取用户发的消息,保存下来直接上传到云数据库的。

再麻烦问一下,这个使用,是发送post请求到:api.qiniu.com/pfop

带上头:Content-Type: application/x-www-form-urlencoded
Authorization: QBox

post参数:bucket就是我们数据库里的bucket
key是我们已经上传到数据库的文件地址路径
fops是转换参数
notifyURL是回调通知

这样是正确的吗?调用这个api以后,生成的新文件是在七牛的数据库还是在我们的?

假设这个文件是 A.amr,你调用这个 API 后,七牛的数据库会生成一个 Atemp.mp3 的文件,并且有缓存,供下次调用。

所以,如果不是本地转换格式的话,就是每次都要拼接这个 url 来在线转换格式。

哦。。也就是说我必须要注册一个七牛的数据库才可以了对吗

不需要的,直接拿我们 AVFile 生成的 url 去拼接就好。

好咯 我先集成了七牛云的SDK试了下成功上传并且转码了,也了解其中的大概流程了。他的上传策略也是在上传的时候同时转码也是分两步做的。

我试下咱们的,使用他们的API,那有个小问题就是,我new的AVFile,最后SaveAsync(),是不是没法返回上传以后的文件地址,只能再次连接数据库查询?然后再拿这个地址去请求七牛云音频转换的api吗

他们的api支持二进制流上传转换吗?

那个api的头部,Authorization: QBox 后面需要这个accessToken,那我还是得注册个七牛云的服务才能获取到这个token吧

碰到同样问题了,请问您最后如何解决的?leacloud里的File,能直接去七牛转码吗?关键是没accessToken...

+1 遇到同样的问题, 如果有对应的 key 自已生成 accessToken 也可以

您好,我们现在不支持这样的操作,access token 无法直接给您使用,并且这个 api 还需要额外计费。建议您直接使用七牛的存储服务,而只把 url 存放到我们这里(使用 AVFile(name, externalURI) 这样的构造函数),这样比较方便。

还可以考虑在云引擎里用 ffmpeg 来转