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