Chrome后台标签中requestVideoFrameCallback停止触发问题求助
Chrome后台标签页中requestVideoFrameCallback停止运行的问题
在Chrome浏览器中,当标签页处于后台状态时,requestVideoFrameCallback会停止运行。根据官方文档及相关Issue描述,当视频包含音频时,该回调理应在后台持续运行,但当前实际行为不符合预期,不确定这是Chrome的bug还是缺少必要设置。
复现代码
function startTest() { video = document.querySelector('video'); canvas = document.querySelector('canvas'); ctx = canvas.getContext('2d'); let start_time = 1.0, paint_count = 0, raf_count = 0; let last_time = 0; var paintFrame = function(timestamp, metadata) { if (start_time == 1.0) start_time = timestamp; updateCanvas(ctx, video); last_counter = metadata.presentedFrames; var elapsed_frame = 0; var elapsed = (timestamp - start_time) / 1000.0; if(last_time == 0){ console.log('init') elapsed_frame = 0 }else{ elapsed_frame = (new Date()).getTime() - last_time } last_time = (new Date()).getTime() var fps_text = document.querySelector('#fps'); var presented = metadata.presentedFrames + 1; fps_text.innerText = 'actual fps: ' + (++paint_count / elapsed).toFixed(3) + ', ideal fps: ' + (presented / elapsed).toFixed(3) + ', missed: ' + (presented - paint_count) + '/' + presented + '(' + ((presented - paint_count)/presented*100.0).toFixed(1) + '%)'; if(elapsed_frame > 100){ console.log('Long clock-time', elapsed_frame, 'missed', (presented - paint_count)); } video.requestVideoFrameCallback(paintFrame); }; video.onplay = function(){ v = video.requestVideoFrameCallback(paintFrame); }; video.playbackRate = 1.0; video.src="https://tguilbert-google.github.io/vid/buck360p_vp9.webm" };
问题依据
- Chrome官方文档明确,后台标签页中带音频的媒体应保持正常处理节奏
- 已有公开Issue指出,包含音频的视频在后台时
requestVideoFrameCallback应该持续运行,但测试中该回调在标签页后台时停止工作。
内容的提问来源于stack exchange,提问作者Jerod Venema
相关产品推荐
相关产品推荐

