如何使用javascript下载视频

如何使用javascript下载视频,javascript,Javascript,这是一个代码,我们正在录制视频使用网络摄像头,并显示在网页上再次 我想做的是将该视频下载到我的录制视频中10秒,然后将视频片段传递到后端,在那里我可以直接使用javascript使用它。我不想要下载按钮 我想用我的ML项目的视频,但我在这个网页上的问题卡住了 MediaCapture和Streams API 标题 Lorem ipsum dolor sit amet,奉献精英。 暂时性面源性胎病 临时性、重复性、劳动性、智力和智力 illum quos 开始录制 停止录音 设约束tobj={

这是一个代码,我们正在录制视频使用网络摄像头,并显示在网页上再次

我想做的是将该视频下载到我的录制视频中10秒,然后将视频片段传递到后端,在那里我可以直接使用javascript使用它。我不想要下载按钮

我想用我的ML项目的视频,但我在这个网页上的问题卡住了


MediaCapture和Streams API
标题
Lorem ipsum dolor sit amet,奉献精英。
暂时性面源性胎病
临时性、重复性、劳动性、智力和智力
illum quos

开始录制
停止录音

设约束tobj={ 音频:错, 视频:{ facingMode:“用户”, 宽度:{最小值:640,理想值:1280,最大值:1920}, 高度:{最小值:480,理想值:720,最大值:1080} } }; //宽度:1280,高度:720--仅限首选项 //facingMode:{exact:“用户”} //面向模式:“环境” //处理可能以某种方式实现getUserMedia的旧浏览器 如果(navigator.mediaDevices===未定义){ navigator.mediaDevices={}; navigator.mediaDevices.getUserMedia=函数(constraintObj){ 让getUserMedia=navigator.webkitGetUserMedia | | navigator.mozGetUserMedia; 如果(!getUserMedia){ return Promise.reject(新错误('getUserMedia在此浏览器中未实现'); } 返回新承诺(功能(解决、拒绝){ 调用(navigator、constraintObj、resolve、reject); }); } }否则{ navigator.mediaDevices.enumerateDevices() 。然后(设备=>{ devices.forEach(设备=>{ log(device.kind.toUpperCase(),device.label); //,device.deviceId }) }) .catch(错误=>{ 日志(err.name,err.message); }) } navigator.mediaDevices.getUserMedia(constraintObj) .then(功能(mediaStreamObj){ //将媒体流连接到第一个视频元素 让video=document.querySelector('video'); if(视频中的“srcObject”){ video.srcObject=mediaStreamObj; }否则{ //旧版本 video.src=window.URL.createObjectURL(mediaStreamObj); } video.onloadedmetadata=功能(ev){ //在视频元素中显示网络摄像头捕获的内容 video.play(); }; //添加用于保存视频/音频的侦听器 let start=document.getElementById('btnStart'); let stop=document.getElementById('btnStop'); 让vidSave=document.getElementById('vid2'); 让mediaRecorder=新的mediaRecorder(mediaStreamObj); 让chunks=[]; start.addEventListener('单击',(ev)=>{ mediaRecorder.start(); console.log(mediaRecorder.state); }) stop.addEventListener('单击',(ev)=>{ mediaRecorder.stop(); console.log(mediaRecorder.state); }); mediaRecorder.ondataavailable=功能(ev){ 推送(ev.data); } mediaRecorder.onstop=(ev)=>{ 设blob=newblob(块,{'type':'video/mp4;'}); 块=[]; 让videoURL=window.URL.createObjectURL(blob); vidSave.src=videoURL; } }) .catch(函数(err){ 日志(err.name,err.message); }); /********************************* getUserMedia返回一个承诺 resolve-返回MediaStream对象 拒绝返回以下错误之一 异常-一般未知原因 NotAllowedError(SecurityError)-用户拒绝了权限 NotFoundError-缺少媒体曲目 NotReadableError-用户权限已给定,但硬件/OS错误 过度约束错误-约束视频设置阻止 类型错误-音频:错误,视频:错误 *********************************/
@PatrickEvans我想在视频完成10秒后尽快将该视频发送到后端,以便将其发送到服务器:注意,还有其他示例不使用jQuery(例如xmlhttprequest,fetch)start.addEventListener('Onclick',(ev))=>@PatrickEvans我做了一些更改,现在它显示了下载按钮,但仍然不像开始下载一样自动。你能看到这个问题吗。@PatrickEvans我想在视频完成10秒后将该视频传递到后端以将其发送到服务器:注意,还有一些示例不使用jQuery(例如xmlhttprequest,fetch)start.addEventListener('Onclick',(ev)=>@PatrickEvans我做了一些更改,现在它显示了下载按钮,但仍然不是自动的,就像它开始自己下载一样。你能看到这个问题吗。