我想使用 UDP 接收器和 src 元素通过网络流式传输视频。
我正在使用以下内容:
i.MX6双处理器作为服务器
x86 系统作为 Ubuntu 18 的接收器
连接到 i.MX6 双处理器的 UVC 相机
当我运行 gst 管道时,gst 启动窗口弹出但视频不播放它显示黑屏。
我使用的管道 服务器:
gst-launch-1.0 v4l2src !视频转换!视频比例!视频率! “视频/x-raw,宽度=720,高度=576,格式=I420,帧率=30”! rtpvrawpay! udpsink host=162.168.0.105 port=5000 sync=false
接收器:
gst-launch-1.0 udpsrc port=5001 caps = "application/x-rtp, media=(string)video, clock-rate=(int)90000, encoding-name=(string)RAW, sampling=(string)YCbCr -4:2:2, depth=(string)8, width=(string)720, height=(string)576, payload=(int)96, a-framerate=(string)30" ! rtpvrawdepay!视频转换!队列 ! xvimagesink 同步=假
我尝试更改一些参数,例如:分辨率、帧率等,但没有用,它只显示黑屏。我也尝试删除参数但在删除参数后它没有显示 gst 启动窗口或任何错误。
我已经检查了摄像头是否接受输入,但是当我在本地系统上播放时它工作正常。
能否请您帮助管道流式传输视频并避免黑屏?
流式传输视频时,我建议您对流进行编码。这将减少流的大小并获得更好的性能,这是常见的做法。这里我有一些服务器和接收器管道,我在其中编码和解码我的视频。两者都在我的电脑上运行。
服务器管道
gst-launch-1.0 -e -v v4l2src ! videoconvert ! videoscale ! videorate ! "video/x-raw,format=I420,width=640,height=480,framerate=30/1" ! x264enc key-int-max=15 ! rtph264pay ! udpsink host=localhost port=5000
在之前的管道中,我保留了您使用的第一个元素。然后我使用
x264enc
元素进行H264编码。 x264enc 是 GStreamer 中的一个由软件编码的元素,但由于您使用的是 i.MX6,因此您可以使用硬件加速编码器,如 vpuenc
,您可以在此 link 中查找更多信息。然后 rtph264pay
元素将 video/x-h264
转换为 application/x-rtp
。最后,我指定我的主机地址和端口。我正在使用本地主机,因为我在我的电脑上流式传输。
接收管道
gst-launch-1.0 -v udpsrc uri=udp://localhost:5000 ! application/x-rtp,media=video,clock-rate=90000,encoding-name=H264,payload=96 ! rtph264depay ! avdec_h264 ! autovideosink
在此管道中,我使用 uri 属性指定流的来源。您应该将地址更改为服务器的 IP,并将端口更改为您在服务器管道中指定的地址。最后,您使用
video/x-h264
解码元素将 video/x-raw
解码为 avdec_h264
。
我希望这有帮助。