gpt4 book ai didi

javascript - 从 ajax 提供的 dataURI 创建视频文件

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:47:25 26 4
gpt4 key购买 nike

好吧,我已经阅读了至少一百篇关于此的文章,但我找不到明确的例子来准确地做我想做的事情。我正在使用 RecordRTC 来获取我的视频。我可以以 blob:http://www.example.com/be1b2fdd-af19-4a10-b8ef-7a56a1087e3c 的形式获取视频的 webm 数据 URI。我知道我基本上可以将此源(用于我的视频元素)提供给 Canvas 元素,然后使用 Canvas toDataURL() 方法获取编码的 dataURI。但是,看到编码数据应该是视频,使用 toDataURL() 的参数如 video/webm 仍然返回 image/的编码字符串png 模仿类型。我的问题是:如果我将 blob url (blob:http://www.example.com/be1b2fdd-af19-4a10-b8ef-7a56a1087e3c) 传递给 PHP,我该如何创建 webm服务器文件系统上的文件?如果这不可能,我如何从 Canvas 为 video/webm mimetype 创建编码字符串?

这是我的视频类对象:

var Video = {
eId: '',
element: {},
source: {},
RtcOpts: {video: true, audio: true},
RTC: {},
media: {},
init: function(elementId){
Video.eId = elementId;
Video.media = navigator.getUserMedia || navigator.webkitGetUserMedia || navigator.mozGetUserMedia || navigator.msGetUserMedia;
},
success: function(stream){
Video.RTC = new MRecordRTC(stream);
Video.element = document.getElementById(Video.eId);

if(window.webkitURL || window.URL){
Video.source = (window.webkitURL) ? window.webkitURL.createObjectURL(stream) : window.URL.createObjectURL(stream);
}else{
Video.source = stream;
}

Video.element.autoplay = true;
Video.element.src = Video.source;
Video.RTC.startRecording();
Video.element.play();
},
error: function(e){
console.error('getUserMedia Error', e);
},
stop: function(){
Video.RTC.stopRecording(function(WebMURL){
console.log(WebMURL); // prints the blob url
var recordedBlob = Video.RTC.getBlob();
console.log(recordedBlob); // prints undefined
Video.save(recordedBlob);
});
},
save: function(recordedBlob){
var formData = new FormData();
formData.append('mode', 'getusermedia');
formData.append('blob', recordedBlob);

var request = new XMLHttpRequest();
request.onreadystatechange = function(){
if(request.readyState == 4 && request.status == 200){
console.log(request.responseText);
}
};
request.open('POST', rootPath+'ajax/processVideo.php');
request.send(formData);
}
};

这就是代码在我的脚本中内联运行的方式:

var playerId = 'cam-'+t+'-'+click[1]+'-'+click[2];
Video.init(playerId);

if(Video.media){
document.getElementById('stop-'+playerId).onclick = function(e){
e.preventDefault();

Video.stop();
};

Video.media(Video.RtcOpts, Video.success, Video.error);
}else{
//fallback
}

最佳答案

使用 var recordingBlob = recordRTC.getBlob();,尝试以下代码片段:

var xhr = new XMLHttpRequest(),
fd = new FormData();
xhr.open("POST", "/submit.php", true);
fd.append("video", recordedBlob);
xhr.addEventListener("load", function () {
// xhr.statusCode === 200 means it worked
});
xhr.send(fd);

PHP(我真的很生疏)$_POST["video"] 应该包含 blob。

关于javascript - 从 ajax 提供的 dataURI 创建视频文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30010039/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com