微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Raspivid 低延迟流媒体和保存

如何解决Raspivid 低延迟流媒体和保存

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

我需要以全帧和高分辨率保存,假设使用 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 一起使用。

有人有想法吗?

谢谢!

解决方法

通过截屏视频预览窗口来实现低延迟流传输是困难的,甚至是不可能的。太多的步骤需要花费一整帧的时间。

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

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

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

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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。