更新
经过进一步的调查,我可能是错的。根据Cordova Media API documentation,在iOS中录制音频时,您要录制的文件必须已经存在并且是.wav文件。也许您已经尝试过这个(如果是这样,那么我的先前答案可能是正确的),但是这里有一个简单的脚本来创建文件,一旦文件句柄准备好就开始录制:
var audioRecSrc = "myrecording.wav";
var audioPlaySrc = "audiotoplay.mp3"
document.addEventListener("deviceready", onDeviceReady, false);
function onDeviceReady() {
window.requestFileSystem(LocalFileSystem.PERSISTENT, 0, gotFS, fail);
}
function gotFS(fileSystem) {
fileSystem.root.getFile(audioRecSrc, {create: true, exclusive: false}, gotFileEntry, fail);
}
function gotFileEntry(fileEntry) {
var audioRec = new Media(audioRecSrc, onSuccess, onError);
audioRec.startRecord();
var audioPlay = new Media(audioPlaySrc, onSuccess, onError);
audioPlay.play();
}
function fail(error) {
console.log("error : " + error.code);
}
如果您需要参考,这里是Cordova文件API文档的链接。您还需要确保在应用程序配置中具有适当的权限以使用文件和媒体API(您需要的所有内容都在我链接的页面上)
先前内容
这是iOS的一个限制。以下是Mobile Safari文档的摘录(当PhoneGap使用iPhone SDK编译时,它使用本地UIWebView):
多个同时音频或视频流
目前,运行iOS的所有设备都仅限于同时播放一个音频或视频流。在iOS设备上不支持播放多个视频——并排,部分重叠或完全重叠。同时播放多个音频流也不受支持。但是,您可以动态更改音频或视频源。有关详细信息,请参见“按顺序替换媒体源”(第41页)
从逻辑上讲,如果不能同时播放两个流,则同时进行播放和录制也是不可能的。至于关于StarComposer应用的评论,原生iPhone应用程序与使用PhoneGap的应用程序之间有很大的区别。PhoneGap使用Cordova使开发人员可以使用JavaScript访问本机设备功能的子集,而原生应用具有完整的功能范围。您所经历的有限流媒体功能是由于iOS平台上HTML5实现的缘故。这是我从中引用上述语录的文档,它在第23页:
https://developer.apple.com/library/safari/documentation/AudioVideo/Conceptual/Using_HTML5_Audio_Video/Using_HTML5_Audio_Video.pdf