【问题标题】:Convert mp3 to base64 - File Reader将 mp3 转换为 base64 - 文件阅读器
【发布时间】:2016-08-10 23:40:58
【问题描述】:

我正在开发一个需要录制音频的应用程序,然后将音频存储为对象的一部分,并上传到数据库。 我试图首先提醒文件的base64,以确保它已被正确找到。 我正在使用科尔多瓦媒体捕获插件来访问设备上的录音机,并且能够录制音频,但是一旦录制完成,我想在发送到数据库之前将其转换为 base64 格式。当我使用这种方法时,它会提醒base64,但它是空的,只是“data:audio/mpeg;base64”,之后什么都没有,我不知道为什么它没有正确转换文件。

插件:https://github.com/apache/cordova-plugin-media-capture

function captureSuccess(capturedFiles) {

    //Convert capturedFiles[0] into var containing file as base64

    previewFile(capturedFiles);


    alert("Audio Captured");
}

function captureError() {
    alert("Audio Not Captured");
}

navigator.device.capture.captureAudio(captureSuccess, captureError, {
    limit: 1,
    duration: 20
    });
});

 /***********************************************************************************/

function previewFile(files) {
  var preview = document.querySelector('img');
  var file    = files[0];
  var reader  = new FileReader();

  reader.onload = function () {
  alert(reader.result);
  };

  if (file) {
    reader.readAsDataURL(file);
  }
}

【问题讨论】:

    标签: javascript cordova audio base64 media


    【解决方案1】:

    我对此有很多问题,并且已经在 StackOverFlow 上寻找答案,但很难找到答案,所以对于将来遇到此问题的任何人,我都能够解决它。问题是我想转换为 base64 的文件有一个“开始”和一个“结束”,它们都设置为 0,因此没有任何字节被访问。为了确保访问字节,我将起始字节保持为 0(所以不要更改任何内容),并将结束字节设置为与文件大小相同。以下是解析后的代码:

    $("#btnAudio").click(function () {
    
    
         function captureSuccess(capturedFiles) {
    
            var path = capturedFiles[0].fullPath;
            //Convert capturedFiles[0] into var containing file as base64
    
            previewFile(capturedFiles);
    
    
            alert("Audio Captured");
        }
    
        function captureError() {
            alert("Audio Not Captured");
        }
    
        navigator.device.capture.captureAudio(captureSuccess, captureError, {
            limit: 1,
            duration: 20
        });
    });
    
    /***********************************************************************************/
    
    function previewFile(files) {
        var file = files[0];
        var reader = new FileReader();
        file.end = file.size;
        var preview = document.querySelector('audio');
    
        reader.onload = function () {
    
    /*For testing I am just alerting reader.result, but if you want to store the 
    base64 just create a var and set its value to reader.result*/
    
            alert(reader.result); 
        };
        if (file) {
            reader.readAsDataURL(file);
        }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-03-18
      • 2011-06-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多