我的应用程序的算法:
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。
答案 0 :(得分:0)
为什么使用.3gpp的扩展名而不是.3gp?
您确定IIS正在使用video/3gpp
的正确标头提供3gp文件吗?如果您从桌面浏览器而不是设备导航到该文件的URL,会发生什么?
IIS可能不知道使用.3gpp扩展名的3gp的MIME类型,因此不会提供文件,因为出于安全原因,默认情况下IIS不会提供无法识别的文件扩展名。
如果mp3是一个注册的MIME类型,但3gp不是这样可以解释为什么一个有效而另一个无效。
Follow the instructions here to add the 3gp MIME type:
%windir%\system32\inetsrv\appcmd set config /section:staticContent /+"[fileExtension='.3gp',mimeType='audio/3gpp']"
答案 1 :(得分:0)
我已经找到了解决方案。
将文件上传到服务器时,请将文件上传为.wav或.mp3扩展名而不是.3gpp。将录制的文件从.3gpp重命名为.wav或.mp3
当您向Media对象提供URL时,播放器会流式传输文件并开始播放。
虽然如果没有安装兼容的插件,上传到服务器并且扩展名更改为.wav或.mp3的文件在使用Windows Media Play的桌面上无法播放。