在 Windows Safari VLC 网络插件中停止流式传输

Streaming stops In Windows Safari VLC web plugin

我在 Windows Safari 中使用 vlc 插件的视频流时遇到问题。我在嵌入标签中添加了 windowless="true" 属性,以便我可以在 vlc 插件上方显示透明 DIV 以在视频上绘制。添加此标签后,视频停止并且未收到视频帧。但是当我点击视频或在视频上画东西时,视频帧刷新了一会儿。即使我删除 windowless="true" 属性视频也能正常工作。 在 windows safari 中观察到问题仅在 windowless="true".

我有完全相同的行为。 Windows10、Safari 5.1.7.

到目前为止,我找到的唯一解决方案是强制浏览器更新播放器框架的解决方法。我通过快速添加和删除 "glass" div 来做到这一点:一个占据整个浏览器屏幕并具有不透明背景填充颜色的区域。由于它是透明的,因此屏幕上没有任何可见的变化,但 Safari 总是会重新绘制重叠区域,即使它们被透明窗格重叠也是如此。这是我的工作:

function play() {
  // ...create player, set properties, etc.
  // assuming player taking whole browser's screen.

  // It's a glass pane - it should cover whole player's output surface.
  var glass = $('<div>');
  $('body').append(glass);

  // Here we start updating...
  setInterval(function() {
    $('body').toggleClass('glass');
  }, 20);  // <== 1000ms / 30fps = 33ms, put 20ms just in case.
}
.glass {
  position: absolute;
  width: 100%;
  height: 100%;
  z-index: 10000;
  background-color: rgba(40,1,1,0);
}

当然,您需要调整 z-index 以便玻璃与播放器表面重叠但不会阻挡您的自定义控件。

是的,这是一个丑陋的 hack,但它可以作为一个短期解决方案。