1

我的应用程序的算法:

1) 使用 PhoneGap CaptureAudio 录制音频文件。

2) 使用 FileTransfer 将文件存储在服务器上。

3) 使用 Media 对象播放文件。

第 1 步完成,我得到一个录音-XXXXX.3gpp 文件。

第2步完成,recording-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。

4

2 回答 2

0

为什么使用 .3gpp 的扩展名而不是 .3gp?

您确定 IIS 正在返回 3gp 文件并使用正确的标头video/3gpp吗?如果您从桌面浏览器而不是设备导航到文件的 url,会发生什么?

IIS 可能不知道使用 .3gpp 扩展名的 3gp 的 MIME 类型,因此不会提供文件,因为出于安全原因,默认情况下 IIS 不会提供无法识别的文件扩展名。

如果 mp3 是注册的 MIME 类型,但 3gp 不是,那么这就可以解释为什么一个有效,而另一个无效。

按照此处的说明添加 3gp MIME 类型:

%windir%\system32\inetsrv\appcmd set config /section:staticContent /+"[fileExtension='.3gp',mimeType='audio/3gpp']"
于 2013-07-09T21:36:01.183 回答
0

我已经弄清楚了解决方案。

当您将文件上传到服务器时,将文件上传为 .wav 或 .mp3 扩展名而不是 .3gpp。将录制的文件从 .3gpp 重命名为 .wav 或 .mp3

当您向 Media 对象提供 URL 时,播放器会流式传输文件并开始播放。

尽管上传到服务器的文件和扩展名更改为 .wav 或 .mp3,但如果未安装兼容插件,则无法使用 Windows Media Play 在桌面上播放。

于 2013-07-10T23:38:48.820 回答