2016-09-16 260 views
1

我试图用h264传输视频。 Source是一个Axis相机。我设法使用多播传输jpeg,但不是h264。如何使用udp传输h264 gstreamer

使用JPEG我用下面的命令:

gst-launch-1.0 udpsrc uri=udp://239.194.0.177:1026 ! application/x-rtp,encoding-name=JPEG,payload=26 ! rtpjpegdepay ! jpegdec ! autovideosink 

我试图流H264,但是失败了,使用下面的命令:

gst-launch-1.0 -v udpsrc host=239.194.0.177 port=1026 ! rtph264depay ! ffdec_h264 ! xvimagesink 

我收到以下错误:

ERROR: pipeline could not be constructed: no element "udpsrc". 

使用此行:

gst-launch-1.0 udpsrc uri=udp://239.194.0.177:1026 ! application/x-rtp,media=video,clock-rate=90000,encoding-name=H264 ! rtph264depay ! h264parse 

我没有得到任何错误,但没有视频流,这是印在终端:

Setting pipeline to PAUSED ... 
Pipeline is live and does not need PREROLL ... 
Setting pipeline to PLAYING ... 
New clock: GstSystemClock 

我想从以下页面的命令:

Stream H.264 video over rtp using gstreamer

https://developer.ridgerun.com/wiki/index.php/Using_UDP_Multicast_with_GStreamer

http://labs.isee.biz/index.php/Example_GStreamer_Pipelines#H.264_RTP_Streaming

但无法让它工作。

当以verbos模式运行时,我得到更多信息。

命令:

gst-launch-1.0 -v udpsrc uri=udp://239.194.0.177:1026 ! application/x-rtp, media=video, payload=96, encoding-name=H264 ! rtph264depay ! avdec_h264 ! videoconvert ! fakesink 

输出:

Setting pipeline to PAUSED ... 
Pipeline is live and does not need PREROLL ... 
Setting pipeline to PLAYING ... 
New clock: GstSystemClock 
/GstPipeline:pipeline0/GstCapsFilter:capsfilter0.GstPad:src: caps = "application/x-rtp\,\ media\=\(string\)video\,\ payload\=\(int\)96\,\ encoding-name\=\(string\)H264\,\ clock-rate\=\(int\)90000" 
/GstPipeline:pipeline0/GstRtpH264Depay:rtph264depay0.GstPad:sink: caps = "application/x-rtp\,\ media\=\(string\)video\,\ payload\=\(int\)96\,\ encoding-name\=\(string\)H264\,\ clock-rate\=\(int\)90000" 

如何通过多播流H264在GStreamer?

+0

尝试与-v GST推出详细模式做-1.0 udpsrc uri = udp://239.194.0.177:1026! application/x-rtp,media = video,clock-rate = 90000,encoding-name = H264! rtph264depay! h264parse! fakesink - 尝试在管道中的每个元素之后添加fakesink,以确定哪个元素导致问题。 –

回答

1

太长评论 - 既然没有人回答这个发帖的想法,因为答案草案..

约没有元素udpsrc第一个错误是很奇怪的。但我认为它抱怨缺少uri参数。你使用什么版本?我没有udpsrc的主机参数。

在第三个管道中,它以h264parse结束 - 这是打字错误吗?你需要的H264解码,它不只是对其进行分析:

gst-launch-1.0 udpsrc uri=udp://239.194.0.177:1026 ! application/x-rtp,media=video,clock-rate=90000,encoding-name=H264 ! rtph264depay ! h264parse ! avdec_h264 ! videoconvert ! autovideosink 

而且与运行GST_DEBUG=3 gst-launch-1.0 ....左右补充一些日志(可能与引擎收录,如果太长)。

是什么意思:

But could not get it to work

这并不是说太多;)

通常与RTP工作时,你需要真正提供的所有功能,否则可能无法链接或玩的。 。

也许尝试用uridecodebin?不知道它是否是最好的主意:

gst-launch-1.0 uridecodebin uri = udp:// etcetc:port! videoconvert! autovideosink

如果你得到任何新的相关信息/问题,将其添加为更新,使画面整体(替他人以及..)

HTH

+0

尝试了你的命令,但没有流打开,与以前相同的消息,即新时钟之后没有任何事情发生:GstSystemClock且没有错误。 也尝试在每个元素后添加fakesink,但没有得到任何东西。 这些命令似乎没有问题,但由于某种原因,没有包含该流的窗口会打开h264。 我再次检查摄像头是否发送带h264的多播,并且联系了网络以验证数据包是否实际发送。所以我现在发送了数据包。 打印使用GST_DEBUG = 3时也没有额外的信息。 – S4M1R

+0

我希望看到日志..也许有= 4级 – nayana

+0

使用loglevel 4 https://drive.google.com/open?id=0B-lpWopRD2DXdVRRSEs1cW1DNkk – S4M1R

相关问题