HTML5 amp; getUserMedia - Record Audio amp; Save to Web Server after Certain Time(HTML5 amp;getUserMedia - 录制音频 amp;一定时间后保存到 Web 服务器)
问题描述
在开发我的网页时,我在使用 HTML5 的 getUserMedia 时遇到了一些困难.这是我第一次尝试实现它来记录用户的音频输入.Flash 不适合该项目,因为它也必须在移动设备上使用.
I'm having some difficulties with getUserMedia with HTML5 whilst developing my web page. This is the first time I've tried to implement this to record a users audio input. Flash is not an option for this project as it has to be used on mobile devices too.
我来这里是想看看是否有人有经验并知道如何使用 getUserMedia 实现 HTML5 来录制用户麦克风一段时间(通过 PHP 会话完成),然后保存音频文件并将其发送到一个网络服务器.
I come here to see if anyone has experience with and knows how to implement an HTML5 with getUserMedia to record a users microphone for a certain amount of time (done with a session in PHP) and then saves and sends the audio file to a web server.
如果这是不可能的,那么还有其他方法吗,也许是使用 Java 小程序?
If this isn't possible then is there any other way, perhaps with a Java applet?
js:
<script>
var onFail = function(e) {
console.log('Rejected!', e);
};
var onSuccess = function(s) {
var context = new webkitAudioContext();
var mediaStreamSource = context.createMediaStreamSource(s);
recorder = new Recorder(mediaStreamSource);
recorder.record();
// audio loopback
// mediaStreamSource.connect(context.destination);
}
window.URL = window.URL || window.webkitURL;
navigator.getUserMedia = navigator.getUserMedia || navigator.webkitGetUserMedia || navigator.mozGetUserMedia || navigator.msGetUserMedia;
var recorder;
var audio = document.querySelector('audio');
function startRecording() {
if (navigator.getUserMedia) {
navigator.getUserMedia({audio: true}, onSuccess, onFail);
} else {
console.log('navigator.getUserMedia not present');
}
}
function stopRecording() {
recorder.stop();
recorder.exportWAV(function(s) {
audio.src = window.URL.createObjectURL(s);
});
}
</script>
HTML(从这里链接到recorder.js):
The HTML (linked to recorder.js from here):
<script type="text/javascript" src="recorder.js"> </script>
<input onclick="startRecording()" type="button" value="start recording">
<input onclick="stopRecording()" type="button" value="stop recording and play">
推荐答案
可以使用 XMLHttpRequest
function upload(blobOrFile) {
var xhr = new XMLHttpRequest();
xhr.open('POST', '/upload.aspx', true);
xhr.onload = function (e) {
var result = e.target.result;
};
xhr.send(blobOrFile);
}
// stop recording function calls the upload method
// I am using recorder.js
recorder.exportWAV(function (blob) {
var url = URL.createObjectURL(blob);
audio.src = url;
audio.controls = true;
var hf = document.createElement('a');
hf.href = url;
hf.download = new Date().toISOString() + '.wav';
upload(blob);
});
// on server side ASPX pageload - can save .wav file on server
Request.SaveAs(Server.MapPath("/foo/" + "1" + ".wav"), false);
这篇关于HTML5 &getUserMedia - 录制音频 &一定时间后保存到 Web 服务器的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
本文标题为:HTML5 &getUserMedia - 录制音频 &一定时间
基础教程推荐
- YouTube API v3 点赞视频,但计数器不增加 2022-01-01
- PHP 类:全局变量作为类中的属性 2021-01-01
- 如何替换eregi() 2022-01-01
- 如何在 Laravel 中使用 React Router? 2022-01-01
- 有什么方法可以用编码 UTF-8 而不是 Unicode 返回 PHP`json_encode`? 2021-01-01
- 如何在 Laravel 5.3 注册中添加动态下拉列表列? 2021-01-01
- 在PHP中根据W3C规范Unicode 2022-01-01
- 学说 dbal querybuilder 作为准备好的语句 2022-01-01
- PHP PDO MySQL 查询 LIKE ->多个关键词 2021-01-01
- Cron Jobs 调用带有变量的 PHP 脚本 2022-01-01
