【问题标题】:Get base64 of audio data from Cordova Capture从 Cordova Capture 获取 base64 的音频数据
【发布时间】:2015-05-25 09:14:36
【问题描述】:

我正在使用 ngCordova Capture 通过录制音频来编写此代码,并将 base64 发送到某处(通过 REST)。我可以让 Capture Audio 工作,但是一旦它返回 audioURI,我就无法从文件系统中获取 base64 数据。我的代码如下:

$cordovaCapture.captureAudio(options).then(function(audioURI) {
  $scope.post.tracId = $scope.tracId;
  $scope.post.type = 'audio';
  console.log('audioURI:');
  console.log(audioURI);
  var path = audioURI[0].localURL;
  console.log('path:');
  console.log(path);

  window.resolveLocalFileSystemURL(path, function(fileObj) {
    var reader  = new FileReader();
    console.log('fileObj:');
    console.log(fileObj);

    reader.onloadend = function (event) {
      console.log('reader.result:');
      console.log(reader.result);
      console.log('event.result:');
      console.log(event.result);
    }
    reader.onload = function(event2) {
      console.log('event2.result:');
      console.log(event2.target.result);
    };
    reader.readAsDataURL(fileObj);
   console.log(fileObj.filesystem.root.nativeURL + ' ' + fileObj.name);
   $cordovaFile.readAsDataURL(fileObj.filesystem.root.nativeURL, fileObj.name)
   .then(function (success) {
         console.log('success:');
         console.log(success);
         }, function (error) {
         // error
         });
  });

这是控制台日志中的输出:

那么如何从 .wav 文件中获取 base64 数据呢?

我一直在阅读这些链接:

PhoneGap FileReader/readAsDataURL Not Triggering Callbacks

https://developer.mozilla.org/en-US/docs/Web/API/FileReader/readAsDataURL

http://jsfiddle.net/eliseosoto/JHQnk/

http://community.phonegap.com/nitobi/topics/filereader_onload_not_working_with_phonegap_build_2_5_0

【问题讨论】:

    标签: javascript ios cordova audio filereader


    【解决方案1】:

    有同样的问题,我使用 Cordova Capture 和 Cordova File 插件解决了这个问题。

    navigator.device.capture.captureAudio(function (audioFiles) {
        var audioFile = audioFiles[0],
            fileReader = new FileReader(),
            file;
        fileReader.onload = function (readerEvt) {
            var base64 = readerEvt.target.result;
        };
        //fileReader.reasAsDataURL(audioFile); //This will result in your problem.
        file = new window.File(audioFile.name, audioFile.localURL, 
                               audioFile.type, audioFile.lastModifiedDate, audioFile.size);
        fileReader.readAsDataURL(file); //This will result in the solution.
    });
    

    【讨论】:

    • 有没有办法通过视频来实现这一点?
    • @stackexchange12 是的,我也是为视频制作的。请改用 capture.captureVideo。
    • 你能看看我的问题@NielsSteenbeek 吗?不幸的是,我无法让您的解决方案正常工作。非常感谢。 stackoverflow.com/questions/51254272/…
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-11-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-06-18
    • 1970-01-01
    相关资源
    最近更新 更多