- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我是 gstreamer 的新手,但经过大量研究后,我现在设法创建了自己的工作管道,通过 UDP 传输通过网络将网络摄像头从 Raspberry PI Zero 流式传输到 PC。我为自己的进步感到高兴! :)
但我正在努力创建 TCP 传输...
此管道在 UDP 上完美运行:(注意:使用测试视频源和 JPEG 编码进行了简化):
Server UDP (192.168.2.1):
gst-launch-1.0 videotestsrc is-live=true ! jpegenc ! rtpjpegpay ! udpsink host=192.168.2.13 port=7001
Client UDP (192.168.2.13):
gst-launch-1.0 udpsrc port=7001 ! application/x-rtp,encoding-name=JPEG ! rtpjpegdepay ! jpegdec ! autovideosink
...但是当我使用具有完全相同的元素的 TCP 接收器/源时,我除了错误什么也没有收到。
使用 tcpserversink 和 tcpclientsrc 修改后的管道:
Server TCP (192.168.2.1):
gst-launch-1.0 videotestsrc is-live=true ! jpegenc ! rtpjpegpay ! tcpserversink port=7001
Client TCP (192.168.2.13):
gst-launch-1.0 tcpclientsrc host=192.168.2.1 port=7001 ! application/x-rtp,encoding-name=JPEG ! rtpjpegdepay ! jpegdec ! autovideosink
尝试 1:tcpserversink port=7001
ERROR: Failed to connect to host '192.168.2.1:7001': No connection could be made because the target machine actively refused it.
尝试 2:tcpserversink host=localhost port=7001
ERROR: from element /GstPipeline:pipeline0/GstTCPClientSrc:tcpclientsrc0: Could not open resource for reading.
尝试 3:tcpserversink host=127.0.0.1 port=7001
ERROR: from element /GstPipeline:pipeline0/GstTCPClientSrc:tcpclientsrc0: Could not open resource for reading.
尝试 4:tcpserversink host=192.168.2.1 port=7001
ERROR: from element /GstPipeline:pipeline0/GstTCPClientSrc:tcpclientsrc0: Internal data stream error.
尝试 5:tcpserversink host=0.0.0.0 port=7001
ERROR: from element /GstPipeline:pipeline0/GstTCPClientSrc:tcpclientsrc0: Internal data stream error.
我认为我应该能够在不破坏管道的情况下替换 src 和 sink 元素,所以我一定是遗漏了一些东西。
如果您能对此有所启发,我将不胜感激。
最佳答案
您可以(至少)用两种方法之一解决它。第一个是在您的媒体类型的 rtp 有效负载之后添加 rtpstreampay 元素。
服务器:
gst-launch-1.0 videotestsrc is-live=true \
! jpegenc \
! rtpjpegpay \
! rtpstreampay \
! tcpserversink port=7001
客户:
gst-launch-1.0 tcpclientsrc port=7001 \
! application/x-rtp-stream,encoding-name=JPEG \
! rtpstreamdepay \
! rtpjpegdepay \
! jpegdec \
! autovideosink
第二种方法是使用 muxer 而不是 rtp payloader,比如 matroskamux,它非常通用。
服务器:
gst-launch-1.0 videotestsrc is-live=true \
! jpegenc \
! matroskamux \
! tcpserversink port=7001
客户:
gst-launch-1.0 tcpclientsrc port=7001 \
! matroskademux \
! jpegdec \
! autovideosink
如果您想进行客户端/服务器 rtp 连接,您可能还想查看 GstRtspServer。像这样的简单 Python 脚本将充当服务器。
rtspserver.py
import gi
gi.require_version('Gst','1.0')
gi.require_version('GstRtspServer','1.0')
from gi.repository import Gst, GObject, GstRtspServer
Gst.init(None)
mainloop = GObject.MainLoop()
server = GstRtspServer.RTSPServer()
factory = GstRtspServer.RTSPMediaFactory()
factory.set_launch((
'videotestsrc is-live=true '
'! jpegenc '
'! rtpjpegpay name=pay0 pt=26'
))
# allow multiple connections
factory.set_shared(True)
mounts = server.get_mount_points()
mounts.add_factory('/live', factory)
server.attach(None)
mainloop.run()
您可以使用这样的管道来查看输出。
gst-launch-1.0 \
rtspsrc location=rtsp://localhost:8554/live latency=100 \
! rtpjpegdepay \
! jpegdec \
! autovideosink
关于Gstreamer:udpsink/udpsrc 与 tcpserversink/tcpclientsrc,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50549584/
我正在使用GStreamer并使用以下管道发送音频: gst-launch-1.0 -v filesrc location=soundfile.mp3 ! mad ! audioconvert ! a
我是 gstreamer 的新手,但经过大量研究后,我现在设法创建了自己的工作管道,通过 UDP 传输通过网络将网络摄像头从 Raspberry PI Zero 流式传输到 PC。我为自己的进步感到高
我是 gstreamer 的新手,但经过大量研究后,我现在设法创建了自己的工作管道,通过 UDP 传输通过网络将网络摄像头从 Raspberry PI Zero 流式传输到 PC。我为自己的进步感到高
如果我在发送数据时没有对其进行多路分解,有没有办法限制 gstreamer 的 udpsink? 我有一个管道需要发送未复用的流。 文件源码!发球台名称=t! tsdemux ! ffdec_h264
我无法通过 rtp 将脉冲音频监视器流式传输到 vlc 或带有 udpsrc 的 gst-launch 之类的音频播放器 此命令有效且文件包含当前正在播放的音频 gst-launch-1.0 -v p
我正在尝试使用 gstreamer 流式传输我的 Raspberry Pi 相机。这是我的管道: raspivid --nopreview -ih -hf -vf --width 800 --heig
我尝试在 Mac OS X 中流式传输音频,但不断收到此错误: gst-launch osxaudiosrc ! audioresample ! audioconvert ! alawenc ! rt
我的源码主要来自http://gstreamer.freedesktop.org/data/doc/gstreamer/head/manual/html/section-data-spoof.html
我是 GSTreamer 的新手。我尝试使用 GStreamer 上传视频。在运行以下命令时, gst-launch-1.0 videotestsrc ! udpsink port=5200 我收到如
我想使用 gstreamer 以 RTP/h.264 格式将图像从多个 Logitech C920 网络摄像头流式传输到 Janus 媒体服务器。网络摄像头生成 h.264 编码的视频流,因此我可以将
我正在尝试通过 udpsink 将网络摄像头源从计算机 A 流式传输到计算机 B。如果计算机 A 的管道在计算机 B 通过 udpsrc 启动其接收管道之前将数据发送到计算机 B,则我无法使用 vaa
我是一名优秀的程序员,十分优秀!