【问题标题】:Show a video recorded in WebRTC in video object in Safari在 Safari 的视频对象中显示在 WebRTC 中录制的视频
【发布时间】:2021-09-04 15:51:39
【问题描述】:

当使用 WebRTC 直接从用户网络摄像头录制视频时,您会得到一个带有视频的 BLOB 对象。

video.src = window.URL.createObjectURL(blob);

当尝试将 blob 应用于视频元素时(例如,使用上面的代码或其他替代方法,如 webkitURL 等...如此处所示 https://stackoverflow.com/a/59934597/311188),它在 Safari 中失败。

它显示了视频控件,但它显示了 0 秒,并且播放什么也不做。

有人创建了一个示例来实现这一点,但它使用了文件 (https://bl.ocks.org/unRob/3bd07a012597aa959c92) 并且 Safari 中不允许使用文件

我一直在寻找如何在 Safari 中创建文件,但它不起作用。

如何将 blob 直接放在视频元素中,以便用户可以播放和预览他刚刚录制的内容?

【问题讨论】:

  • stackoverflow.com/questions/50333767/… 这可能会有所帮助
  • 不工作... mediaSource.addSourceBuffer 在 Safari 中返回错误(不支持错误:不支持该操作”
  • 您使用的是 MacOS 还是 iOS 版 Safari?
  • 它们都应该可以工作。但我从 iOS (iPhone 12) 开始

标签: javascript safari webrtc


【解决方案1】:

如果您使用 WebRTC,我假设您正在获取内容,如下所示:

const mediaStream = await navigator.mediaDevices.getUserMedia({ audio: true, video: true })

在这种情况下,您只需将该流附加到您的视频元素即可:

video.srcObject = mediaStream

【讨论】:

  • 这在 Chrome 和 Firefox 中运行没有任何问题......这是理论上的......但 iOS / Safari 在其他宇宙......这根本不起作用,但谢谢你 ;- )
  • 这很奇怪,我明白你在说什么,但我在 Chrome、Firefox 和 Safari 上都能做到这一点。您添加了webrtc-adapter 吗?您可以检查功能here
  • 录制一段视频,然后把录制的视频blob放到播放器中……你会看到在Safari中不起作用
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-11-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多