javascript - Download video embedded in html video tag using javascript
问题描述
I would be very grateful if you guys could help me solve this problem that has plagued me for days
Code block 1(Cb1) records a video and embeds it in a tag after 10 seconds and displays a modal.
Code block 2 collects data from the user using the modal in Cb1. On submit from the modal, I want to add the video recorded earlier and submit it together with the additional data collected from the user. Thank you.
Code block 1
<video controls id='video'></video>
navigator.mediaDevices.getUserMedia(constraintObj)
.then(function(mediaStreamObj){
let mediaRecorder = new MediaRecorder(mediaStreamObj);
let vidData= [];
mediaRecorder.start();
if(mediaRecorder.state == 'recording'){
timer();
}
mediaRecorder.ondataavailable = function(ev){
vidData.push(ev.data);
}
//run this after 10s of recording
setTimeout(()=>{
stopRecording();
mediaRecorder.stop();
console.log(mediaRecorder.state);
mediaRecorder.onstop = (ev)=>{
let mediafile= new Blob(vidData, { 'type' : 'video/mp4;' });
vidData= [];
let videoURL = window.URL.createObjectURL(mediafile);
document.getElementById('video').src = videoURL;
}
sendDataModal();//prompt('Please where do you want to send this video?');
sec =0; // reset seconds on stop
}, 10000);
})
.catch((err) => {
var errName = err.name;
document.getElementById('msgPanel').className = 'error'
document.getElementById('msgPanel').textContent = errors[errName];
});
}
Code block 2
let payload = new FormData();
payload.append('institution', institution.value);
payload.append('anonymity', anonimityOnOff);
payload.append('lat', latitude);
payload.append('long', longitude);
payload.append('today', timeStamp);
//I tried this but it did not work
let mediaURL = document.getElementById('video').src;
let urlSections = mediaURL.split("/");
let mediafile = urlSections[3]+".mp4";
payload.append('mediafile', mediafile, "mediafile.mp4");
解决方案
经过几个小时的研究,我发现了这个对我有用的 XMLHttpRequest 方法。我现在正在研究如何将其转换为 fetch api。任何帮助将不胜感激。下面是对我有用的黑客
var xhr = new XMLHttpRequest();
var video=document.getElementById("vid2");
xhr.open('GET', video.src , true);
xhr.responseType = 'blob';
var blob = new Blob([this.response], {type: 'video/webm'});
payload.append("mediafile",blob,"mediafile.webm");
推荐阅读
- monetdb - 是否可以在 Windows 上运行 MonetDB 集群?
- javascript - 如何获取和移除querySelectorAll的parentNode
- javascript - 如何设置控制台数据记录的间隔
- python-3.x - 在等待文本字段变为可使用 selenium 和 python 3.8 编辑时接收 NoSuchElementException
- python - ImportError:libpython3.7m.so.1.0:无法打开共享对象文件:没有这样的文件或目录
- java - 如何将格式日期“MMddhhmmss”转换为“yyyy-MM-dd HH:mm:ss”?
- python-3.7 - Python - 只有奇数
- javascript - Javascript不变性:深拷贝字典
- javascript - 网格区域在没有定义区域/列/行的情况下工作
- xamarin - Xamarin 窗体 VerticalScrollBarVisibility 不起作用