2015-04-17 81 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瀏覽器傳輸到服務器是不可能的。