Video iOS Safari浏览器仅从画布上的视频捕获初始帧,并复制所有捕获的图像 我们正在使用Twilio视频JavaScript SDK,并在网络浏览器(iphone ios=safari,android=chrome)中进行视频通话 在视频通话过程中,用户可以捕获图像 Capture Image实际上使用javascript drawImage函数从具有实时视频通话媒体的画布中绘制图像 视频在Safari中可以正常播放,但在捕获图像功能中,它并非每次都像预期的那样运行 有时并非总是如此,safari会在所有捕获的图像中复制这样的帧。例如,如果视频打开10分钟,用户捕获图像10次,则从第5秒到第8分钟,所有10个图像 将是第五秒的场景 此重复图像问题并非每次都出现。有时当问题发生时,如果我们引导用户重置他们的浏览器设置,那么下次它工作正常,所有图像都会显示出来 和预期的不同场景 问题出现在iOS 11.2、12.3和13.1中
javascript代码:Video iOS Safari浏览器仅从画布上的视频捕获初始帧,并复制所有捕获的图像 我们正在使用Twilio视频JavaScript SDK,并在网络浏览器(iphone ios=safari,android=chrome)中进行视频通话 在视频通话过程中,用户可以捕获图像 Capture Image实际上使用javascript drawImage函数从具有实时视频通话媒体的画布中绘制图像 视频在Safari中可以正常播放,但在捕获图像功能中,它并非每次都像预期的那样运行 有时并非总是如此,safari会在所有捕获的图像中复制这样的帧。例如,如果视频打开10分钟,用户捕获图像10次,则从第5秒到第8分钟,所有10个图像 将是第五秒的场景 此重复图像问题并非每次都出现。有时当问题发生时,如果我们引导用户重置他们的浏览器设置,那么下次它工作正常,所有图像都会显示出来 和预期的不同场景 问题出现在iOS 11.2、12.3和13.1中,video,mobile-safari,getusermedia,drawimage,Video,Mobile Safari,Getusermedia,Drawimage,javascript代码: var width; var height; var video; video = document.querySelectorAll('#outremote_video video')[0]; if (video != undefined && video != null && video != "" && video.videoWid
var width;
var height;
var video;
video = document.querySelectorAll('#outremote_video video')[0];
if (video != undefined && video != null && video != "" && video.videoWidth != 0 && video.videoHeight != 0) {
width = video.videoWidth;
height = video.videoHeight;
}
var img = new Image();
var canvas = document.getElementById('screenshotcanvas');
var context = canvas.getContext('2d');
if (width && height) {
canvas.width = width;
canvas.height = height;
console.error('height ' +canvas.height+ 'width '+canvas.width);
//take video view on canvas
context.drawImage(video, 0, 0, width, height);
var imageData = canvas.toDataURL('image/jpeg');
imageDataList.push(imageData);
}
然后我将Blob imageData上传到服务器。safari怎么了?为什么它在没有任何错误消息的情况下表现出意外。是否存在缓存问题 请回答您的问题以解释如何调用示例中显示的代码。另外,您提到上载blob,但您的代码使用toDataURL()
而不是toBlob()
。请解释一下你的数据处理。您的代码看起来是正确的。(而且,Safari的WebRTC实现目前是业余的。)请回答您的问题,解释如何调用示例中显示的代码。另外,您提到上载blob,但您的代码使用toDataURL()
而不是toBlob()
。请解释一下你的数据处理。您的代码看起来是正确的。(而且,Safari的WebRTC实现目前是业余的。)