我通过navigator.mediaDevices.getUserMedia拉起摄像头
我通过下面代码储存了录取视频的blob数组
//stream是navigator.mediaDevices.getUserMedia成功时返回的res
this.mediaRecorderData = new MediaRecorder(stream, {
mimeType: 'video/webm'
});
this.mediaRecorderData.ondataavailable = (e) => {
if (e.data.size > 0) {
this.videoCecorded.push(e.data); //视频录制视频流数据
};
};
然后通过下面代码将blob数组videoCecorded转换为file再转为base64(这里因为后端要mp4格式转的base64,以此只能先转file的mp4)
let blob = new Blob(_this.videoCecorded, {
type: "video/mp4"
});
let filename = new Date().getTime() + '.mp4';
let file = new File([blob], filename, {
type: 'video/mp4'
})
let reader = new FileReader();
reader.readAsDataURL(file);
let base64
reader.onload = e => {
base64 = e.target.result;
base64 = base64.split(',')[1];
console.log(base64)//这里的base64就是我目前最终得到的base64
}
现在遇到的问题是:
我直接拉起摄像头进行录制,这个base64后端一直报错,原因是视频有问题导致转的base64也有问题
如果我用手机录制一段人脸视频,通过工具手动转成base64并把其写死为接口入参,则接口是正确返回的
这样可以看出是我上面录制视频并转base64的地方出现了问题,请问怎么解决?
拉摄像头录的视频,是把什么格式的转换成mp4保存起来了,flv还是m3u8格式的?
与手机录制的视频格式比较一下