是否可以使用Chrome从浏览器中捕获视频(网络摄像头)和音频(麦克风),然后将流保存为视频文件?
我想用它来创建一个类似于视频/照片展示的应用程序,允许用户记录一个简单的(30秒)消息(包括视频和音频),以便稍后观看。
我已经阅读了文档,但尚未找到如何捕获音频和视频的示例,也没有找到一种方法将结果存储在视频文件中。
谁能帮忙?
是否可以使用Chrome从浏览器中捕获视频(网络摄像头)和音频(麦克风),然后将流保存为视频文件?
我想用它来创建一个类似于视频/照片展示的应用程序,允许用户记录一个简单的(30秒)消息(包括视频和音频),以便稍后观看。
我已经阅读了文档,但尚未找到如何捕获音频和视频的示例,也没有找到一种方法将结果存储在视频文件中。
谁能帮忙?
MediaStreamRecorder是用于记录getUserMedia()流的WebRTC API(仍在实现中)。它允许Web应用程序从实时音视频会话创建一个文件。
<script language="javascript" type="text/javascript">
function onVideoFail(e) {
console.log('webcam fail!', e);
};
function hasGetUserMedia() {
// Note: Opera is unprefixed.
return !!(navigator.getUserMedia || navigator.webkitGetUserMedia ||
navigator.mozGetUserMedia || navigator.msGetUserMedia);
}
if (hasGetUserMedia()) {
// Good to go!
} else {
alert('getUserMedia() is not supported in your browser');
}
window.URL = window.URL || window.webkitURL;
navigator.getUserMedia = navigator.getUserMedia ||
navigator.webkitGetUserMedia ||
navigator.mozGetUserMedia ||
navigator.msGetUserMedia;
var video = document.querySelector('video');
var streamRecorder;
var webcamstream;
if (navigator.getUserMedia) {
navigator.getUserMedia({audio: true, video: true}, function(stream) {
video.src = window.URL.createObjectURL(stream);
webcamstream = stream;
// streamrecorder = webcamstream.record();
}, onVideoFail);
} else {
alert ('failed');
}
function startRecording() {
streamRecorder = webcamstream.record();
setTimeout(stopRecording, 10000);
}
function stopRecording() {
streamRecorder.getRecordedData(postVideoToServer);
}
function postVideoToServer(videoblob) {
var data = {};
data.video = videoblob;
data.metadata = 'test metadata';
data.action = "upload_video";
jQuery.post("http://www.foundthru.co.uk/uploadvideo.php", data, onUploadSuccess);
}
function onUploadSuccess() {
alert ('video uploaded');
}
</script>
<div id="webcamcontrols">
<button class="recordbutton" onclick="startRecording();">RECORD</button>
</div>
目前有几种可用的生产就绪解决方案,用于在网络上录制音频和视频。
MediaRecorder API (HTML)
MediaRecorder API(MediaStream Recorder)依赖于 getUserMedia()
来访问网络摄像头,并且受 Firefox 30+ 和 Chrome 49+ 支持。
Flash 客户端 + rtmp 媒体服务器
您需要一个 Flash (.swf) 应用程序嵌入到网页中,捕获访问者的摄像头和麦克风,使用内置编解码器:H.264、Spark、Nellymoser ASAO 和 Speex 对原始视频和音频数据进行编码,并通过 rtmp 流式传输记录的数据 到媒体服务器。
由于数据是流式传输的,一旦停止录制,所有数据已经在媒体服务器上(无需上传时间)。另一个优点是,如果客户端计算机崩溃,视频不会丢失。
您至少有三个选项可以选择媒体服务器:
媒体服务器通过流/rtmp接收数据,并根据客户端使用的编解码器和媒体服务器使用的编解码器,将音频和视频数据多路复用在mp4、flv或f4v文件中。
这个Flash客户端+媒体服务器录制过程自2002年Flash Player 6以来一直运行良好。
HTML媒体捕获
您可以使用HTML媒体捕获(此处有截图解释)来使用设备的本机视频录制应用程序和编解码器记录视频。 HTML媒体捕获在本地记录(在设备上),然后将文件上传(正常的HTTP上传过程)到Web服务器。<input type="file" accept="image/*;capture=camera"> \\ Snapshot
<input type="file" accept="video/*;capture=camcorder"> \\ Video
<input type="file" accept="audio/*;capture=microphone"> \\ Audio
然后在你的 PHP 中将表单视为普通文件处理
webcamstream.record()
不是一个函数。会抛出一个错误。 - Haseeb