1

我正在尝试使用 Rpi 零 W(无 serverX)以 10FPS 的速度保存和流式传输 Raspi 相机槽 wifi

我需要保存假设使用 MJPEG 编解码器的全帧和高分辨率。这是通过以下命令完成的:

raspivid -md 2 -w 2592 -h 1944 -fps 10 -cd MJPEG -fl -f -t 0 -o videoOut.mjpeg

这工作正常,只使用 6% 的 CPU。

然后我需要以 640x480 流式传输。我的想法是从 raspivid 流式传输预览,并将 Rpi 屏幕分辨率设置为 640x480。

为了获得非常低的延迟,我必须使用 WebRTC ( https://github.com/mpromonet/webrtc-streamer )。

我不想使用 UV4L 来保持开源。

Webrtc-streamer 管理屏幕,但似乎只与 ServerX 一起使用。

有人有想法吗?

谢谢!

4

1 回答 1

0

通过截屏视频预览窗口来进行低延迟流式传输是困难的,甚至是不可能的。有太多的步骤,每个都需要一整帧时间。

  1. 抓取一个相机帧并将其从 YCrCb 4:2:0 颜色空间转换为 RGB 1:1:1。
  2. 在 X Window System 显示服务器上绘制它。
  3. 从显示表面抓取它,将其转换回 YCrCb,然后压缩它。
  4. 将其通过网络推送给观众。
  5. 解码并渲染它。

那是五帧时间,或 10fps 时半秒。

你最好直接捕获压缩流。Broadcom RPi 处理器内置视频压缩硬件,可以在一帧多一点的时间内生成压缩数据流。它可以在生成压缩视频流的同时渲染预览窗口。

WebRTC 很好地处理了流媒体的网络方面。

于 2021-01-05T14:10:31.297 回答