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

uqjltbpv  于 2023-04-05  发布在  Linux
关注(0)|答案(1)|浏览(223)

我创建了一个镜像容器,它可以下载、构建和安装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

laximzn5

laximzn51#

不需要弄清楚如何转发端口,只需要直接打开一个到主机的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

相关问题