【发布时间】:2016-09-16 19:16:09
【问题描述】:
我正在尝试使用 h264 流式传输视频。源是轴相机。我设法通过多播而不是 h264 流式传输 jpeg。
对于 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
但无法让它工作。
在详细模式下运行时,我会得到更多信息。
命令:
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"
如何使用 gstreamer 通过多播流式传输 H264?
【问题讨论】:
-
尝试在详细模式下使用 -v gst-launch-1.0 udpsrc uri=udp://239.194.0.177:1026 !应用程序/x-rtp,媒体=视频,时钟速率=90000,编码名称=H264! rtph264depay! h264解析! fakesink - 尝试在管道中的每个元素之后添加 fakesink,以确定哪个元素导致了问题。