【问题标题】:cordova-plugin-media-with-compression error on IOS when recording录制时IOS上的cordova-plugin-media-with-compression错误
【发布时间】:2016-12-06 04:48:22
【问题描述】:

我正在将 cordova-plugin-media-with-compression 用于在 IOS 和 Android 上运行的应用程序。在 Android 上,代码运行良好,记录、播放、停止、擦除,没问题。在 IOS 上,我可以播放使用 android 应用程序保存的文件,但是当我尝试录制时,我得到错误 1,即 MEDIA_ERR_ABORTED(不知道这意味着什么)。因此在 Android 上完美运行,但不会在 IOS 上录制。我还将cordovafile用于其他事情并且它们可以工作,所以我知道cordova文件正在工作并且我验证我正在为媒体路径获取合法文件夹。

我直接使用了示例中的代码。

$scope.mediapath = cordova.file.externalApplicationStorageDirectory || cordova.file.tempDirectory || cordova.file.sharedDirectory;

 $rootScope.mediaOptions = {
        SampleRate: 16000,
        NumberOfChannels: 1
    };

$scope.mediafile = "record-audio.m4a";
    $scope.media = new Media($scope.mediapath + $scope.mediafile, function () {
        console.log("recordAudio():Audio Success");
    },
        function (err) { console.log("recordAudio():Audio Error: " + err.code); },
        function (s) {
            if (s === 4) {
                $timeout(function () {
                    angular.element(document.getElementById('stopButton')).triggerHandler('click');
                }, 0);
            }
        } );
    $scope.media.startRecordWithCompression($rootScope.mediaOptions);

【问题讨论】:

  • 同样的错误,如果 $scope.media.startRecord();使用而不是 $scope.media.startRecordWithCompression($rootScope.mediaOptions);
  • 关于错误信息的详细信息详细信息是:Failed to start recording using AVAudioRecorder
  • 我找到了答案。收到 err.message 后,我在这里找到了解决方案 stackoverflow.com/questions/25252295/… 解决方案是添加这一行。 $scope.mediapath = $scope.mediapath.fullPath;

标签: ios cordova ionic-framework cordova-media-plugin


【解决方案1】:

尽管如此。 $scope.mediapath = $scope.mediapath.fullPath;工作了一段时间,我遇到了进一步的错误,最终得到了这个解决方案。注意我保留了 mediapath 和 mediapath1 因为当使用 $cordovaFile.readAsDataURL($rootScope.mediapath, $scope.mediafile)... 我需要 ios 和 android 的 mediapath。

    $rootScope.mediaOptions = {
        SampleRate: 16000,
        NumberOfChannels: 1
    };
        $rootScope.mediapath = cordova.file.tempDirectory || cordova.file.dataDirectory || cordova.file.externalApplicationStorageDirectory ||  cordova.file.sharedDirectory || cordova.file.applicationStorageDirectory;
        $rootScope.mediapath1 = $rootScope.mediapath;
        if (cordova.platformId === 'ios') {
            $rootScope.mediapath1 = '';
        }

then when I need to initialize the media 
        $scope.mediafile = "audio.m4a";

        $scope.media = new Media($rootScope.mediapath1 + $scope.mediafile, 
          function () {
            console.log("recordAudio():Audio Success");

        },
          function (err) { console.log("recordAudio():Audio Error: " + err.code + err.message); },
function (s) {
// catch change to audio here for example when s===4 the recording has been stopped.
               }
            });
        $scope.media.startRecordWithCompression($rootScope.mediaOptions)

;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-12-22
    • 2021-10-10
    相关资源
    最近更新 更多