Cordova媒体插件未在iOS上播放本地文件



我在使用媒体插件播放从本地存储下载的音频文件时遇到问题。

我正在使用FileTransfer插件将文件下载到LocalFileSystem.TEMPORARY目录。

在播放之前,我使用以下代码检查音频文件的存在:

window.requestFileSystem(LocalFileSystem.TEMPORARY, 0, function (fileSystem) {
        var rootdir = fileSystem.root;
        var dir_path = rootdir.toURL();
        
        if (success_callback) {
            if (file_name && file_name !== "") {
                success_callback(dir_path + file_name);
            } else {
                success_callback(dir_path);
            }
        }
    }, function () {
        if (error_callback) {
            error_callback("Error in FileSystem request");
        }
    });

上述方法验证文件是否存在于临时存储目录中。

但当我播放该文件时,我在iOS上发现了以下日志的错误:

> File Transfer Finished with response code 200
> Audio downloaded successfully. Location: file:///var/mobile/Containers/Data/Application/0B5359AD-0F9E-4FB1-BEB3-71713973A8A2/tmp/user_timestamp.wav
> Play local file from: file:///var/mobile/Containers/Data/Application/0B5359AD-0F9E-4FB1-BEB3-71713973A8A2/tmp/user_timestamp.wav
> Will attempt to use file resource from LocalFileSystem.TEMPORARY directory
> Failed to initialize AVAudioPlayer: The operation couldn’t be completed. (OSStatus error 2003334207.)
> playAudio() Error: {"message":"","code":4}

我尝试过为Media对象提供完整路径和文件名,但这两种方法都不起作用。任何帮助都将不胜感激。

我发现了这个问题。问题是iOS没有播放在Android上录制的文件。它播放iOS录制的文件没有任何问题。

以下链接帮助我将Android中的媒体插件文件AudioPlayer.java和iOS中的CDVSound.m设置为类似的设置,现在每个平台的音频都在其他平台上播放。

iOS和Android 的音频格式

最新更新