使用PHP将通过getUserMedia()和Javascript获得的音频文件上传到服务器
Uploading an audio file obtained via getUserMedia() and Javascript to a server using PHP
我拼凑了一个Javascript录音机,它通过getUserMedia获取用户麦克风,并记录和输出一个.OGG文件以供下载。注意,这只适用于Firefox,这对我来说很好
我不希望提供下载链接,而是希望文件在停止录制后立即通过PHP上传到服务器。我不知道该怎么做。我尝试过使用一个表单从$_FILES中获取它,但我不知道如何用要提交的BLOB预填充表单。
这是我迄今为止所拥有的。任何关于如何通过PHP将其转移到服务器的输入都将不胜感激!
<html>
<head>
</head>
<body>
<div id="container">
<audio controls autoplay></audio>
<a id="downloadLink" download="mediarecorder.ogg" name="mediarecorder.ogg" href></a>
<p id="data"></p>
<script >
navigator.getUserMedia = navigator.getUserMedia || navigator.webkitGetUserMedia || navigator.mozGetUserMedia;
var constraints = {audio: true};
var audioElement = document.querySelector('audio');
var dataElement = document.querySelector('#data');
var downloadLink = document.querySelector('a#downloadLink');
function errorCallback(error){
console.log("navigator.getUserMedia error: ", error);
}
var count = 0;
function startRecording(stream) {
log('Starting...');
mediaRecorder = new MediaRecorder(stream);
mediaRecorder.onerror = function(e){
log('Error: ' + e);
};
mediaRecorder.onstart = function(e){
log('Started');
};
mediaRecorder.onstop = function(e){
log('Stopped');
};
mediaRecorder.onwarning = function(e){
log('Warning: ' + e);
};
// parameter is number of milliseconds of data to return in a single Blob
mediaRecorder.start();
window.setTimeout(function(){
mediaRecorder.stop();
}, 2400000);
}
window.onload = function(){
if (typeof MediaRecorder === 'undefined' || !navigator.getUserMedia) {
alert('Sorry! This demo requires Firefox Nightly.');
} else {
window.onkeydown = function(e){
if ( e.keyCode == 82 ) { //R pressed
navigator.getUserMedia(constraints, startRecording, errorCallback);
} else if ( e.keyCode == 83 ) { // S pressed
mediaRecorder.stop();
mediaRecorder.ondataavailable = function(e) {
log('Data available...');
count++;
if (count > 1) {
return;
}
console.log(e);
audioElement.src = window.URL.createObjectURL(e.data);
downloadLink.href = window.URL.createObjectURL(e.data); //Audio BLOB
downloadLink.innerHTML = "Download ogg audio file";
};
}
}
}
};
function log(message){
dataElement.innerHTML = message + '<br>' + dataElement.innerHTML ;
}
</script>
</div>
</body>
</html>
在大多数浏览器中,出于安全原因,不允许预先填充html上传元素。是本地存储的ogg文件(在客户端上)。如果它存储在Web服务器上,则可以选择将(公共可用)url发布到php脚本中,并使用file_get_contents打开它。
相关文章:
- 如何播放部分音频文件
- javascript:发送带有音频文件的POST,然后重定向到新页面
- Javascript::通过HTML5音频播放器播放列表播放多个音频文件
- 正在预加载jPlayer要使用的音频文件
- 将Base64音频文件Mp3解码为可播放的Mp3
- 在播放完成之前再次单击播放音频文件
- 在 Windows 现代(地铁)UI 应用中存储图像文件和音频文件的方法是什么?
- 在 JavaScript 中对音频文件进行计时不准确
- 如何在html5/JS中只预加载音频文件的一部分
- 单个页面上的多个音频文件javascript
- 如何将timbre.js缓冲区导出为.wav或任何其他音频文件格式
- 从PHP脚本获取音频文件时,更改JavaScript音频对象的当前时间
- 如何用一个html5音频播放器播放多个音频文件
- 如何使用日期对象在特定时间激活音频文件
- 使用PHP将通过getUserMedia()和Javascript获得的音频文件上传到服务器
- 使用 Redux 播放音频文件
- 如何在javascript中转换音频文件的比特率
- 如何使用 JSON 下载音频文件
- 第二个音频文件意外循环
- 如何在html页面上使用Flash Player渲染视频/音频文件