我需要录制音频文件,将其导出(存储到服务器中)到aac格式,获取它的链接并将链接和实际音频(aac)文件发送到RESTful WS。
我发现这个库可以录制音频(利用HTML5 Audio API): RecordJS https://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);
});
}
提供的示例非常简单。 但是,我不知道如何
对不起,我无法提供工作小提琴,但我对HTML5 API感到很陌生和困惑。
如果需要,我可以使用其他库或纯HTML5 API。只需要一些关于如何进行的线索。即使是通用的解决方案(即不仅仅是导出到AAC,还有MP3或其他任何东西),如果这对其他人有帮助的话,也没问题。
答案 0 :(得分:3)
提供的示例非常简单。但是,我不知道如何
- 实际上获得了aac音频文件
醇>
你不能......至少今天不是直接的。我认为MediaRecorder API旨在解决这个问题,但它还没有得到真正的支持,也没有标准化。
有些人使用emscripten为MP3编码构建LAME。您可以尝试对开源AAC编码器执行相同操作,例如内置于FFmpeg中的编码器。查看videoconverter.js。请注意,这是非常缓慢的,高度实验性的,并不适用于所有用例。
- 存储它(示例显示如何下载,而不是如何在服务器上存储)
醇>
使用您想要将该数据发送到服务器的任何内容。如果是我,我会通过二进制网络套接字发送它。
- 获取文件的链接(服务器的路径)。
醇>
这取决于你使用服务器端做什么,我们无法为你解答。它是你想要的任何东西。
答案 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我只是粗略地想知道如何将RecordJS中的AAC格式存储到服务器。我没有检查上面代码的语法。
传输录制音频的唯一方法是将其转换为javascript中的URL格式。无法将blob或AAC文件从Web浏览器传输到服务器。