在iOS上同时录制和播放(Phonegap build)

mat*_*azu 5 javascript audio record ios phonegap-build

我正在使用Phonegap Build版本3.3.0开发iOS和Android应用程序.

应用的主要焦点是在后台播放另一个音频/音乐的录音.

对于这两个实例,我使用带有正确音频文件的phonegap media api进行录制(iOs - *.wav/Android - *.amr)和播放(iOs和Android - *.mp3).

例:

var audioRec = new Media(audioRecSrc, onSuccess, onError);
audioRec.startRecord();

var audioPlay = new Media(audioPlaySrc, onSuccess, onError);
audioPlay.play();
Run Code Online (Sandbox Code Playgroud)

示例适用于Android,没有任何问题.录制声音并正常播放音乐.但在iOS中只有一个是可能的.无论哪种称为最后,播放或录制.另一个返回错误代码-4.

这是iPad上的Phonegap Media API的限制还是我错过了什么?

小智 3

为了能够同时播放媒体和录制音频,必须将 AVAudioSession 的类别属性设置为AVAudioSessionCategoryPlayAndRecord。为此,您必须部署一个设置相应值的自定义 iOS 插件。

目前来说,由于 Cordova Media Plugin 中的一个错误,这个过程并不是很简单。在开始录制之前,插件会不加区别地将 AVAudioSession 的类别设置为AVAudioSessionCategoryRecord。因此,开始录制后,无法播放所需的媒体,除非您在调用 record 方法后明确将 AVAudioSession 类别设置为播放和录制。这清楚地表明您只能在录制开始后播放媒体。

然而,这种解决方法在许多情况下可能不可接受,这可能要求在录制声音之前开始播放媒体。因此,我提交了有关该问题的错误报告,您可以在这里找到:

iOS Media 插件:无法同时播放视频和录制音频

另外,我已经应用了修复程序并执行了以下拉取请求:

录制前检查 avSession.category 是否已设置为“AVAudioSessionCategoryPlayAndRecord”

这确实是一个小修复(实际上是两行代码),因此我相信它将很快应用于主分支。