【问题标题】:Video playback doesn't reach 60 FPS when using MediaSource使用 MediaSource 时视频播放未达到 60 FPS
【发布时间】:2019-04-30 08:19:52
【问题描述】:

我使用video.srcObject = mediaStream; // MediaStream object 来提供<video> 标签。 (与此演示相同:https://webrtc.github.io/samples/src/content/capture/video-video/

视频为 60 FPS,但从chrome://webrtc-internals 图表显示,发送/接收的视频 FPS 始终为 30FPS。这一套我可以改变吗?

仅供参考 - 我没有使用 getUserMedia(),我所做的与演示完全相同——使用与 WebRTC 的对等连接从 <video> 流式传输到另一个 <video>

【问题讨论】:

  • 你能显示你的代码吗?您链接到的示例与 WebRTC 直接无关(除了这些媒体组件包含在 WebRTC 库中),也不使用 MediaSource。该示例使用 captureStream(),我从未见过它的运行速度高于 30 FPS。
  • 该代码与 WebRTC 示例完全相同,我从中分出。你是对的,我没有直接使用 WebRTC。所以左边的视频只是使用
  • 除了我的回答之外,我可能会建议加入 Slack 上的 video-dev。 video-dev.herokuapp.com 那里有几个人致力于此 API 的浏览器实现。也许他们可以提供有关为什么将其锁定在最高 30 FPS 的见解。

标签: video video-streaming html5-video webrtc mediastream


【解决方案1】:

很遗憾,无法使用HTML5MediaElement.captureStream() 指定帧速率。

如果您从画布流式传输,您可以使用第一个参数指定帧速率:

canvas.captureStream(30);

但是,我从未见过任何运行速度高于 30 FPS 的捕获流。这是一个相对较新的 API,有很多实现怪癖和硬编码项。

【讨论】:

  • 感谢您的解释,我对视频还是很陌生,从 2 周前开始阅读有关 WebRTC 的内容。我想测量 WebRTC 解码性能(比如使用 chrome://webrtc-internal),根本不关心 P2P 连接,我应该将视频流作为 MediaStream 提供给
  • 我找到了这个stackoverflow.com/questions/21225187/…,但它建议使用仍不超过 30fps 的 captureStream()。
  • 我已经阅读了你的一些问题......我并没有真正理解你的意思。 getUserMedia() 用于网络摄像头、采集接口、麦克风、音频接口等,与常规视频解码无关。也许您应该发布一个新问题,从更高的层面解释您尝试做的全部事情,以便我们提出更好的答案。或者,如果您对咨询感兴趣,请发送电子邮件至 brad@audiopump.co。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-09-18
  • 1970-01-01
  • 1970-01-01
  • 2016-10-06
相关资源
最近更新 更多