提问人:Toki1117 提问时间:11/14/2023 更新时间:11/16/2023 访问量:28
当图像 src 值来自不同的来源时,具有虚拟背景的视频变黑
Video with virtual background goes black when image src value comes from an different origin
问:
我正在尝试从不同的来源加载图像以将其用作虚拟背景。首先,我获取图像,并且能够在页面中的另一个元素中显示它(看起来CORS不是问题??),但是不知何故,在virtualBackground中附加图像时,视频会变黑,如果我使用来自同一来源的图像,它会加载而不会出现问题。
控制台中也没有错误。
我正在使用 twilio/video-processors.js v 2.0.0 和 twilio-video v2.28.1。 请检查下面的代码段:
const loadImage = (imgSource: string): Promise<HTMLImageElement> =>
new Promise((resolve, reject) => {
const img = new Image();
img.src = imgSource;
// img.src = '/specificResources/my-bg.jpg'; // When I use this one it works
img.onload = () => resolve(img);
console.log('IMAGE', img); // Prints img element
img.onerror = (e) => {
console.log('onerror', e);
reject(e);
};
});
try {
const imgUri =
'https://my.domain.com/images/fdef355eb7a7';
const data = await fetchResource(imgUri);
const backgroundImage = await loadImage(data.location); // data.location is another url
console.log('[backgroundImage]', backgroundImage); // Prints img element
const virtualBackground = new VirtualBackgroundProcessor({
assetsPath: '/twilioVideoProcessorAssets',
backgroundImage,
fitType: ImageFit.Contain,
pipeline: Pipeline.Canvas2D,
});
await virtualBackground.loadModel();
console.log('Adding processor');
videoTrack.addProcessor(virtualBackground);
} catch (error) {
console.error('Error loading model', error);
}
答:
1赞
Toki1117
11/16/2023
#1
事实证明,这毕竟是一个 CORS 问题,服务器需要在资源的响应标头中包含一些属性。
Access-Control-Allow-Origin=<origin>
Vary: Origin
不知何故很难弄清楚,因为它没有在控制台中抛出任何 CORS 错误或任何其他类型的错误,并且视频突然变黑,因此可能会误解其他事情正在发生,除非您添加图像对象,否则您会注意到。crossOrigin="anonymous"
因此,也许在控制台中抛出一些错误或异常消息还有改进的余地。
以下是一些有用的文档:
评论