树莓派超全系列教程文档--(62)使用rpicam-app通过网络流式传输视频

使用rpicam-app通过网络流式传输视频

    • [使用 `rpicam-app` 通过网络流式传输视频](#使用 rpicam-app 通过网络流式传输视频)

文章来源: http://raspberry.dns8844.cn/documentation

原文网址

使用 rpicam-app 通过网络流式传输视频

本节介绍来自 rpicam-vid 的本机流。您还可以使用 libav 后端进行网络流。

UDP

要使用Raspberry Pi作为服务器通过UDP流式传输视频,请使用以下命令,将 <ip-addr> 占位符替换为客户端或多播地址的IP地址,并将 <port> 占位符替换为您要用于流式传输的端口:

复制代码
$ rpicam-vid -t 0 --inline -o udp://<ip-addr>:<port>

要使用Raspberry Pi作为客户端查看通过UDP流式传输的视频,请使用以下命令,将 <port> 占位符替换为您要从中流式传输的端口:

复制代码
$ vlc udp://@:<port> :demux=h264

或者,在客户端上使用以下命令使用 ffplay 进行流式传输:

复制代码
$ ffplay udp://<ip-addr-of-server>:<port> -fflags nobuffer -flags low_delay -framedrop

TCP

您还可以通过TCP流式传输视频。要将Raspberry Pi用作服务器:

复制代码
$ rpicam-vid -t 0 --inline --listen -o tcp://0.0.0.0:<port>

要使用Raspberry Pi作为客户端查看通过TCP流式传输的视频,请使用以下命令:

复制代码
$ vlc tcp/h264://<ip-addr-of-server>:<port>

或者,在客户端上使用以下命令以每秒30帧的速度使用 ffplay 进行流式传输:

复制代码
$ ffplay tcp://<ip-addr-of-server>:<port> -vf "setpts=N/30" -fflags nobuffer -flags low_delay -framedrop

RTSP

要使用VLC使用Raspberry Pi作为服务器通过RTSP流式传输视频,请使用以下命令:

复制代码
$ rpicam-vid -t 0 --inline -o - | cvlc stream:///dev/stdin --sout '#rtp{sdp=rtsp://:8554/stream1}' :demux=h264

要在 Raspberry Pi 5 上获得最佳性能,请使用以下命令,该命令添加了 libav 以强制使用 H264 格式:

复制代码
$ rpicam-vid -t 0 --inline --libav-format h264 -o - | cvlc stream:///dev/stdin --sout '#rtp{sdp=rtsp://:8554/stream1}' :demux=h264

要使用Raspberry Pi作为客户端查看通过RTSP流式传输的视频,请使用以下命令:

复制代码
$ ffplay rtsp://<ip-addr-of-server>:8554/stream1 -vf "setpts=N/30" -fflags nobuffer -flags low_delay -framedrop

或者,在客户端上使用以下命令使用VLC进行流式传输:

复制代码
$ vlc rtsp://<ip-addr-of-server>:8554/stream1

要取消服务器上的预览窗口,请使用 nopreview

使用 inline 标志强制流头信息进入每个帧内,这有助于客户端在错过开头时理解流。

libav

您可以将 libav 后端用作音频/视频的网络流源。

要使用Raspberry Pi作为服务器通过TCP流式传输视频,请使用以下命令,将 <ip-addr> 占位符替换为客户端或多播地址的IP地址,并将 <port> 占位符替换为您要用于流式传输的端口:

复制代码
$ rpicam-vid -t 0 --codec libav --libav-format mpegts --libav-audio -o "tcp://<ip-addr>:<port>?listen=1"

您可以使用类似的命令通过UDP流式传输:

复制代码
$ rpicam-vid -t 0 --codec libav --libav-format mpegts --libav-audio  -o "udp://<ip-addr>:<port>"

GStreamer

https://gstreamer.freedesktop.org/\[GStreamer\] 是一个用于读取、处理和播放多媒体文件的Linux框架。本节展示如何使用 rpicam-vid 通过网络流式传输视频。

此设置使用 rpicam-vid 将编码的h.264比特流输出到标准输出。然后,我们使用GStreamer fdsrc 元素接收比特流,并使用额外的GStreamer元素通过网络发送它。在服务器上,运行以下命令来启动流,将 <ip-addr> 占位符替换为客户端的IP地址或多播地址,并将 <port> 占位符替换为您要用于流式传输的端口:

复制代码
$ rpicam-vid -t 0 -n --inline -o - | gst-launch-1.0 fdsrc fd=0 ! udpsink host=<ip-addr> port=<port>

在客户端上,运行以下命令来接收流,将 <ip-addr> 占位符替换为客户端的IP地址或多播地址,并将 <port> 占位符替换为您要用于流的端口:

复制代码
$ gst-launch-1.0 udpsrc address=<ip-addr> port=<port> ! h264parse ! v4l2h264dec ! autovideosink

TIP: 要测试此配置,请在同一设备上的不同终端中运行服务器和客户端命令,使用 localhost 作为地址。

RTP
复制代码
$ rpicam-vid -t 0 -n --inline -o - | gst-launch-1.0 fdsrc fd=0 ! h264parse ! rtph264pay ! udpsink host=<ip-addr> port=<port>

要通过RTP接收,请在客户端上运行以下命令,将 <ip-addr> 占位符替换为客户端的IP地址或多播地址,并将 <port> 占位符替换为您要用于流式传输的端口:

复制代码
$ gst-launch-1.0 udpsrc address=<ip-addr> port=<port> caps=application/x-rtp ! rtph264depay ! h264parse ! v4l2h264dec ! autovideosink

如果客户端不是Raspberry Pi,它可能有不同的GStreamer元素可用。在运行Linux的x86设备上,您可以改为运行以下命令:

复制代码
$ gst-launch-1.0 udpsrc address=<ip-addr> port=<port> caps=application/x-rtp ! rtph264depay ! h264parse ! avdec_h264 ! autovideosink
libcamerasrc GStreamer 元素

libcam 提供了一个 libcamasrc GStreamer元素,可以直接使用它来代替 rpicam-vid 。要使用此元素,请在服务器上运行以下命令,将 <ip-addr> 占位符替换为客户端或多播地址的IP地址,并将 <port> 占位符替换为您要用于流式传输的端口:

复制代码
$ gst-launch-1.0 libcamerasrc ! capsfilter caps=video/x-raw,width=1280,height=720,format=NV12 ! v4l2convert ! v4l2h264enc extra-controls="controls,repeat_sequence_header=1" ! 'video/x-h264,level=(string)4.1' ! h264parse ! rtph264pay ! udpsink host=<ip-addr> port=<port>

在客户端上,我们使用与以前相同的播放管道。

上一篇 -- 树莓派超全系列教程文档--(61)树莓派摄像头高级使用方法

下一篇 -- <>

相关推荐
lcreek2 分钟前
访问网站的完整流程指南
网络
KKKlucifer5 分钟前
混合云纳管能力:国内堡垒机适配多云与异构资源的技术方案
大数据·网络·分类
Deitymoon9 分钟前
linux——IO多路复用
linux·服务器
Olivia0514051414 分钟前
Voohu:TYPE-C连接器在高速数据传输与电源管理中的选型解析
网络·机器人·信息与通信
code_li18 分钟前
淘宝动效全链路解决方案:一次制作多端复用
网络·人工智能·电商·淘宝技术
dashizhi201520 分钟前
如何禁止外来设备连接内网wifi、禁止外来电脑接入单位局域网?
开发语言·网络·php
两点王爷22 分钟前
Ubuntu 机器安装解压软件和ip工具
linux·运维·ubuntu
KevinCyao22 分钟前
彩信http接口如何接入?采用POST方式提交多媒体附件的彩信示例
网络·网络协议·http
ZeroNews内网穿透26 分钟前
ZeroNews安全网关接入企业微信自建应用
网络·数据库·安全·云计算
在深圳搬砖27 分钟前
使用Qemu安装Ubuntu教程
linux·运维·ubuntu