通过 HTML5 API(RecordJS 或替代方案)将音频录制为 AAC
Record audio through HTML5 API (RecordJS or alternative) to AAC
我需要录制一个音频文件,将其导出(存储到服务器)为 aac 格式,获取它 link 并将 link 加上实际的音频 (aac) 文件发送到RESTful WS.
我找到这个库来录制音频(利用 HTML5 音频 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);
});
}
提供的示例非常简单。
但是,我不知道如何
- 实际上正在获取 aac 音频文件
- 存储它(示例显示如何下载,而不是如何存储在服务器上)
- 获取文件的link(服务器路径)。
很抱歉,我无法提供有效的 fiddle,但我对 HTML5 API.
很陌生而且很困惑
如果需要,我可以使用其他库或纯 HTML5 API。只需要一些关于如何进行的线索。如果对其他人有帮助,即使是通用解决方案(即不仅导出到 AAC,还导出 MP3 或其他)也可以。
The example provided is quite straightforward. However, I have no clue on how
- actually getting an aac audio files
你不能……至少不能直接不是今天。我认为 MediaRecorder API 旨在解决这个问题,但它还没有得到真正的支持,也没有标准化。
有些人用过 emscripten to build LAME for MP3 encoding. You could try to do the same for an open source AAC encoder, such as the one built into FFmpeg. Check out videoconverter.js。请注意,这非常慢,具有很强的实验性,并不适合所有用例。
- store it (the example shows how to download, not how store on server)
使用您想要的任何方式将该数据发送到服务器。如果是我,我会通过二进制网络套接字发送它。
- get the file's link (server's path).
这取决于您在服务器端使用它做什么,我们无法为您解答。随心所欲
我不知道我的解决方案能否回答您的问题。首先,您必须将 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);
我一周前做了这件事,请不要完全按照我写的上面的代码,因为我只是粗略地介绍如何将 AAC 格式从 RecordJS 存储到服务器。我没有检查上面代码的语法。
传输录制音频的唯一方法是在 javascript 中将其转换为 URL 格式。无法将 blob 或 AAC 文件从 Web 浏览器传输到服务器。
我需要录制一个音频文件,将其导出(存储到服务器)为 aac 格式,获取它 link 并将 link 加上实际的音频 (aac) 文件发送到RESTful WS.
我找到这个库来录制音频(利用 HTML5 音频 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);
});
}
提供的示例非常简单。 但是,我不知道如何
- 实际上正在获取 aac 音频文件
- 存储它(示例显示如何下载,而不是如何存储在服务器上)
- 获取文件的link(服务器路径)。
很抱歉,我无法提供有效的 fiddle,但我对 HTML5 API.
很陌生而且很困惑如果需要,我可以使用其他库或纯 HTML5 API。只需要一些关于如何进行的线索。如果对其他人有帮助,即使是通用解决方案(即不仅导出到 AAC,还导出 MP3 或其他)也可以。
The example provided is quite straightforward. However, I have no clue on how
- actually getting an aac audio files
你不能……至少不能直接不是今天。我认为 MediaRecorder API 旨在解决这个问题,但它还没有得到真正的支持,也没有标准化。
有些人用过 emscripten to build LAME for MP3 encoding. You could try to do the same for an open source AAC encoder, such as the one built into FFmpeg. Check out videoconverter.js。请注意,这非常慢,具有很强的实验性,并不适合所有用例。
- store it (the example shows how to download, not how store on server)
使用您想要的任何方式将该数据发送到服务器。如果是我,我会通过二进制网络套接字发送它。
- get the file's link (server's path).
这取决于您在服务器端使用它做什么,我们无法为您解答。随心所欲
我不知道我的解决方案能否回答您的问题。首先,您必须将 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);
我一周前做了这件事,请不要完全按照我写的上面的代码,因为我只是粗略地介绍如何将 AAC 格式从 RecordJS 存储到服务器。我没有检查上面代码的语法。
传输录制音频的唯一方法是在 javascript 中将其转换为 URL 格式。无法将 blob 或 AAC 文件从 Web 浏览器传输到服务器。