在PhoneGap中使用Media Object播放3gpp文件

时间:2013-07-09 21:14:43

标签: android cordova media

我的应用程序的算法:

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 个答案:

答案 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的桌面上无法播放。