【问题标题】:Fix black rectangle for HTML video element修复 HTML 视频元素的黑色矩形
【发布时间】:2013-09-10 18:52:19
【问题描述】:

我正在实施 WebRTC 视频聊天。我想实现以下案例:

默认情况下,视频元素通过 css 具有背景图像,如果没有视频输入,则用户会看到他(或对话者)的头像:

没有视频预期结果:

无视频实际结果:

从屏幕截图中可以看出,我的精美背景上方有黑色矩形。我想让这个丑陋的黑色矩形透明并保持视频的背景可见。

实际上,在不引入任何额外标记的情况下解决问题会很棒。

感谢您的帮助 =)

更新:

“无视频”表示用户没有网络摄像头,流只有音轨。

【问题讨论】:

  • 矩形从何而来?简单地删除它。黑色矩形不会突然出现:)
  • 这个黑色矩形来自

标签: css html google-chrome firefox webrtc


【解决方案1】:

宾果游戏!

深入阅读documentation 得到了一些结果 =) 很简单:

<video poster="image.jpg">

一个简单的属性让我开心

【讨论】:

  • 我猜你也可以使用video {background-color: transparent}
【解决方案2】:

在 Chrome 视频中尝试Alpha transparencywaitUntilRemoteStreamStartsFlowing

function onaddstream(event) {
    remote_video.src = webkitURL.createObjectURL(event.stream);
    // remote_video.mozSrcObject  = event.stream;

    waitUntilRemoteStreamStartsFlowing();
}

function waitUntilRemoteStreamStartsFlowing()
{
    if (!(remote_video.readyState <= HTMLMediaElement.HAVE_CURRENT_DATA 
        || remote_video.paused || remote_video.currentTime <= 0)) 
    {
        // remote stream started flowing!
    } 
    else setTimeout(waitUntilRemoteStreamStartsFlowing, 50);
}

【讨论】:

  • 很好的尝试...但首先,只有带有特殊标志集的 Chrome Canary 才支持 alpha 透明度(我不能强制我的所有用户安装此浏览器版本),其次 - 我已经检查视频是否开始流动: if (videoTracks.length === 0) { /* 隐藏丑陋的黑色矩形 */ }
  • Chrome 稳定版现在支持 FWIW alpha 透明度(尽管演示中说了什么!)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-04-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-09-05
  • 2014-02-27
  • 1970-01-01
相关资源
最近更新 更多