我的应用程序的算法:
1)使用PhoneGap CaptureAudio录制音频文件 .
2)使用FileTransfer将文件存储在服务器上 .
3)使用Media对象播放文件 .
完成第1步,我得到一个录制XXXXX.3gpp文件 .
完成第2步,并将录制-XXXXX.3gpp文件上载到我的服务器 .
第3步是问题所在 . 打开3gpp文件时出现媒体对象错误
var my_media = new Media("http://myserver/getfile.aspx?file=filepath/recording-XXXXX.3gpp", function() {
console.log("playAudio():Audio Success");
}, function(){
alert('code: ' + error.code + '\n' +
'message: ' + error.message + '\n');
});
my_media.play();
但是,如果我将查询更改为mp3文件,则媒体对象将按要求运行 .
我不确定出了什么问题 . 有一点,我能做的是创建.3gpp到.mp3,但该选项是最后的选择 .
请帮我解决一下这个 .
我在Android平板电脑上使用PhoneGap 2.4.0 .
2 回答
为什么使用.3gpp的扩展名而不是.3gp?
你确定IIS正在为3gp文件提供服务并使用正确的
video/3gpp
标头吗?如果您从桌面浏览器而不是设备导航到该文件的URL,会发生什么?IIS可能不知道使用.3gpp扩展名的3gp的MIME类型,因此不会提供文件,因为默认情况下,IIS出于安全原因不会提供无法识别的文件扩展名 .
如果mp3是一个注册的MIME类型,但3gp不是这样可以解释为什么一个工作而不是另一个工作 .
Follow the instructions here to add the 3gp MIME type:
我已经找到了解决方案 .
将文件上载到服务器时,将文件上传为.wav或.mp3扩展名而不是.3gpp . 将录制的文件从.3gpp重命名为.wav或.mp3
当您向Media对象提供URL时,播放器会流式传输文件并开始播放 .
虽然如果没有安装兼容的插件,上传到服务器的文件和扩展名更改为.wav或.mp3的文件在使用Windows Media Play的桌面上无法播放 .