如何使用 GStreamer 从 Docker 容器内部通过 UDP 端口流式传输视频?

问题描述 投票:0回答:1

我已经创建了一个图像容器来下载、构建和安装 GStreamer。之后,当我运行容器时,我尝试像这样运行 GStreamer 命令行

gst-launch-1.0 -v filesrc location=/home/Documents/video.mp4  ! decodebin !\
 videoconvert ! jpegenc ! rtpjpegpay ! udpsink host=127.0.0.1 port=5000

我无法从容器外部使用相应的命令接收流媒体:

gst-launch-1.0 udpsrc  port=5000 !\
 application/x-rtp,encoding-name=JPEG,payload=26 ! rtpjpegdepay !\
 jpegdec ! autovideosink

但是当我在容器外运行这两个命令时它工作正常。

有人知道它是怎么做出来的吗?

观察:

  • 这就是我运行容器的方式:

    docker build -t gstreamer-image . 

    docker run -it -p 127.0.0.1:5000:5000/udp 3c1b4d08122e

  • 我也试过这样跑:

docker run -it -p 127.0.0.1:5000:5000 3c1b4d08122e

和标签 --network=host

linux docker containers udp gstreamer
1个回答
0
投票

无需弄清楚如何转发端口,直接打开一个到主机的udp连接即可:

docker容器中的发件人:

docker run -it --rm --add-host=host.docker.internal:host-gateway gstreamer-image bash
gst-launch-1.0 videotestsrc ! videoconvert ! jpegenc ! rtpjpegpay ! udpsink host=host.docker.internal port=5000

主机上的接收器:

gst-launch-1.0 udpsrc port=5000 ! application/x-rtp,encoding-name=JPEG,payload=26 ! rtpjpegdepay ! jpegdec ! autovideosink
© www.soinside.com 2019 - 2024. All rights reserved.