流媒体h.264视频使用gstreamer

我正在尝试使用gstreamer来流式传输h265编码的视频。 我正在使用该命令

gst-launch-0.10 filesrc location = / home / user / Desktop / sample_mpeg4.mp4! qtdemux! h264parse! video / x-h264! ffmpegcolorspace! 去隔行! xvimagesink *

我正在得到这个

警告:错误的管道:无法将h264parse0链接到ffmpegcsp0

我必须克服什么错误

为什么

ffdec_h264

我无法找到

如果尝试此操作,请获取错误

gst-launch-0.10 uridecodebin uri = file:///home/user/Desktop/sample_mpeg4.mp4! xvimagesink

Setting pipeline to PAUSED ...
Pipeline is PREROLLING ...
ERROR: from element /GstPipeline:pipeline0/GstURIDecodeBin:uridecodebin0/GstDecodeBin2:decodebin20/GstQTDemux:qtdemux0: GStreamer encountered a general stream error.
Additional debug info:
qtdemux.c(3891): gst_qtdemux_loop (): /GstPipeline:pipeline0/GstURIDecodeBin:uridecodebin0/GstDecodeBin2:decodebin20/GstQTDemux:qtdemux0:
streaming stopped, reason not-negotiated
ERROR: pipeline doesn't want to preroll.
Setting pipeline to NULL ...
Freeing pipeline ...

首先,我想这是一个错字:

我正在尝试传输h265视频

对 ?

其次,你应该使用uridecodebin作为该用例:

gst-launch uridecodebin uri=file:///home/user/Desktop/sample_mpeg4.mp4 ! xvimagesink

发射线的实际问题是h264parse输出h264素材(视频/ x-h264),它仍然需要由您选择的解码器正确解码为视频/ x-raw。

一些应该与0.10一起工作的东西:

gst-launch-0.10 filesrc location= /home/user/Desktop/sample_mpeg4.mp4 ! qtdemux ! ffdec_h264 ! autovideosink

decodebin为你照顾,所以你会更好地使用它。


你为什么不使用playbin2?

gst-launch-0.10 playbin2 uri=file:///path/to/your/file.mp4

如果由于某种原因你想使用uridecodebin,问题是你得到了“未经协商”的错误。 这意味着由uridecodebin产生的数据不会被你的接收器直接接受(在这种情况下)。

我会推荐使用:

gst-launch-0.10 uridecodebin uri=file:///home/user/Desktop/sample_mpeg4.mp4 ! ffmpegcolorspace ! videoscale ! ffmpegcolorspace ! xvimagesink

第二个ffmpegcolorspace可能不需要。 Playbin2已经为你处理所有这些。

链接地址: http://www.djcxy.com/p/43981.html

上一篇: streaming h.264 video Using gstreamer

下一篇: How to check for bad timestamping with gstreamer