【发布时间】:2015-05-11 03:42:10
【问题描述】:
正在尝试保存从网络摄像头流生成的 blob。这是代码。 这是项目:http://a5w.org/prog/vimeo/2/(FF 兼容)
它确实会生成带有视频数据的 blob,但由于一个奇怪的原因,我无法保存它。我试图生成一个简单的 blob (var blob = new Blob(['body { color: red; }'], {type: 'text/css'});) 并且保存时没有任何问题,但视频没有t 出于某种原因想要被保存 =( 这是媒体流记录器:https://github.com/streamproc/MediaStreamRecorder
<!DOCTYPE html>
<meta charset="UTF-8">
<script src="https://cdn.webrtc-experiment.com/MediaStreamRecorder.js"> </script>
<body>
<script>
var mediaConstraints = {
audio: !!navigator.mozGetUserMedia, // don't forget audio!
video: true // don't forget video!
};
navigator.getUserMedia(mediaConstraints, onMediaSuccess, onMediaError);
function onMediaSuccess(stream) {
var mediaRecorder = new MediaStreamRecorder(stream);
mediaRecorder.mimeType = 'video/webm';
mediaRecorder.ondataavailable = function (blob) {
// POST/PUT "Blob" using FormData/XHR2
var fileType = 'video'; // or "audio"
var fileName = 'ABCDEF.webm'; // or "wav" or "ogg"
var formData = new FormData();
formData.append(fileType + '-filename', fileName);
formData.append(fileType + '-blob', mediaConstraints);
xhr('./save.php', formData, function (fileURL) {
window.open(fileURL);
});
function xhr(url, data, callback) {
var request = new XMLHttpRequest();
request.onreadystatechange = function () {
if (request.readyState == 4 && request.status == 200) {
callback(location.href + request.responseText);
}
};
request.open('POST', url);
request.send(data);
}
var blobURL = URL.createObjectURL(blob);
document.write('<a href="' + blobURL + '">' + blobURL + '</a>');
};
mediaRecorder.start(3000);
}
function onMediaError(e) {
console.error('media error', e);
}
</script>
</body>
</html>
没有错误,上传文件夹是 777(我能够保存一个虚拟 blob 对象)
PHP 文件:
foreach(array('video', 'audio') as $type) {
if (isset($_FILES["${type}-blob"])) {
$fileName = $_POST["${type}-filename"];
$uploadDirectory = "uploads/$fileName";
if (!move_uploaded_file($_FILES["${type}-blob"]["tmp_name"], $uploadDirectory)) {
echo("problem moving uploaded file");
}
echo($uploadDirectory);
}
else
{
echo 'no files in FILES';
}
}
【问题讨论】:
-
formData.append(fileType + '-blob', )的第二个属性不应该是blob而不是mediaConstraints吗? -
哦,是的..应该。最初是这样的。不幸的是,它也不适用于原始代码(我刚刚再次检查过)。但是——非常感谢。确实,我已经忘记为这条线带回初始代码了。
-
我们可以假设您的 php 与 MSRecorder 示例中的完全一样
-
=) 是的,我已将代码添加到上述问题中。感谢您抽出时间凯多
标签: javascript blob