2015-04-17 47 views
0

我需要录制音频文件,将其导出(存储到服务器中)到aac格式,获取它的链接并发送链接加上实际的音频(aac)文件到RESTful WS。通过HTML5 API(RecordJS或替代品)将音频录制到AAC

我发现这个库记录音频(利用HTML5音频API的):RecordJShttps://github.com/mattdiamond/Recorderjs

我把它(初始化+开始录制+停止录音)。 现在我应该处理音频以便导出它

由插件创建者所提供的例子是:

function createDownloadLink() { 
    recorder && recorder.exportWAV(function(blob) { 
     var url = URL.createObjectURL(blob); 
     var li = document.createElement('li'); 
     var au = document.createElement('audio'); 
     var hf = document.createElement('a'); 

     au.controls = true; 
     au.src = url; 
     hf.href = url; 
     hf.download = new Date().toISOString() + '.wav'; 
     hf.innerHTML = hf.download; 
     li.appendChild(au); 
     li.appendChild(hf); 
     recordingslist.appendChild(li); 
    }); 
    } 

提供的例子是非常简单的。 但是,我对如何

  1. 实际上得到的AAC音频文件没有线索
  2. 店呢(例子展示了如何下载,而不是在服务器上存放了)
  3. 得到文件链接(服务器路径)。

对不起,我无法提供工作小提琴,但我对HTML5 API颇为陌生和困惑。

如果需要,我可以使用其他库或纯HTML5 API。只需要一些线索就如何进行。即使是一个通用的解决方案(即不只是出口到AAC,也包括MP3或其他),如果这对其他人有帮助的话,那也是很好的。

回答

3

提供的例子非常简单。不过,我对

  1. 如何实际上得到的AAC音频文件

你不能毫无头绪......至少不直接不是今天。我认为MediaRecorder API旨在解决这个问题,但目前还没有得到真正的支持,也没有标准化。

一些人已经使用emscripten为MP3编码构建LAME。您可以尝试为开源AAC编码器(如内置于FFmpeg中的编码器)执行相同的操作。检出videoconverter.js。请注意,这是非常缓慢,高度实验性的,并不适合所有用例。

  • 店它(示例显示了如何下载,而不是如何存储在服务器上)
  • 使用任何你想要的数据发送到服务器。如果是我,我会通过二进制web套接字发送它。

    1. 获取文件的链接(服务器的路径)。

    这取决于你在服务器端做什么,我们不能为你回答。这是你想要的。

    0

    我不知道我的解决方案会回答你的问题。首先,您必须将blob格式转换为URL格式才能传输它。之后,使用ajax将其上传到服务器。该URL将使用PHP脚本在服务器端转换为AAC格式。

    在JavaScript

    function saveToServer() 
    { 
         recorder && recorder.exportWAV(function(blob) { 
         var data = ""; 
         var reader = new FileReader(); 
         reader.readAsDataURL(blob); 
         reader.onloadend = function(){ 
          data = reader.result; 
          //your ajax code here 
         } 
    
         }); 
    
    } 
    

    php脚本示例:

    $audioData = substr($_POST['data'], strpos($_POST['data'], ",") + 1); 
    $decodedAudioData = base64_decode($audioData); 
    $upload_dir = "/this/is/AAC/directory/"; 
    mkdir($upload_dir); //create dir 
    $aacFile = $upload_dir."myAudio.aac"; // create AAC file in the dir 
    $fileHandle = fopen($aacFile, 'wb'); 
    $fwrite($fileHandle, $decodedAudioData); // write data into the AAC file 
    $fclose($fileHandle); 
    

    我一个星期前行这事,请不要严格遵循上面的代码我写的,bcoz我只是粗略了解如何将AAC格式从RecordJS存储到服务器。我没有检查上面的代码的语法。

    传输录制音频的唯一方法是将其转换为JavaScript格式的URL格式。将blob或AAC文件从Web浏览器传输到服务器是不可能的。