Gstreamer:内部数据流错误:H264到Mjpeg到TCP

时间:2015-07-06 13:49:25

标签: tcp gstreamer h.264 pipeline mjpeg

我想拍摄h264视频,对其进行解码,在 mjpeg 中对其进行重新编码,并通过 tcp 进行流式处理。

为此,我使用了一个raspivid视频资源,它提供了一个用Gstreamer传输的h264输出视频,它使用tcp进行解码,重新编码和传输:

raspivid -n -t 0 -b 7000000 -fps 25 -o - | \
gst-launch-1.0 fdsrc ! video/x-h264,framerate=25/1,stream-format=byte-stream ! decodebin ! videorate ! video/x-raw,framerate=10/1 ! \
videoconvert ! jpegenc ! tcpserversink host=192.168.24.5 port=5000 &

接收我使用:

gst-launch-1.0 tcpclientsrc host=192.168.24.5 port=5000 ! jpegdec ! autovideosink

在我的tcp 服务器上我的CPU工作在90%,我没有错误。我们可以认为没问题,但是......

在我的tcp 客户端上我有这个错误:

ERROR: from element /GstPipeline:pipeline0/GstTCPClientSrc:tcpclientsrc0: Internal data flow error.
Additional debug info:
gstbasesrc.c(2865): gst_base_src_loop (): /GstPipeline:pipeline0/GstTCPClientSrc:tcpclientsrc0:
streaming task paused, reason not-negotiated (-4)
ERROR: pipeline doesn't want to preroll.

你有什么想法为什么我的管道坏了吗?

1 个答案:

答案 0 :(得分:0)

尝试在视频会议之前添加视频会话?

此外,您应该为tcp源指定上限,因为第二个管道需要至少知道帧速率。我会做类似的事情:

gst-launch-1.0 tcpclientsrc host=192.168.24.5 port=5000 ! image/jpeg, framerate=25/1 ! jpegparse ! jpegdec ! queue ! videoconvert ! autovideosink

如果仍然无效,来自接收管道的GST_DEBUG = 6日志应有助于查明问题。

相关问题