2

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

gst-launch-0.10 filesrc location=/home/user/Desktop/sample_mpeg4.mp4 !qtdemux !h264解析!视频/x-h264 !ffmpeg色彩空间!去隔行!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 ...
4

2 回答 2

3

首先我想这是一个错字:

我正在尝试流式传输h265视频

对 ?

其次,您应该为该用例使用 uridecodebin :

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

您的启动线的实际问题是 h264parse 输出 h264 材料 (video/x-h264),仍然必须由您选择的解码器正确解码为 video/x-raw。

应该与 0.10 一起使用的东西:

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

decodebin 会为您解决这个问题,因此您最好使用它。

于 2013-09-17T14:57:50.763 回答
1

你为什么不使用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 已经为您处理了所有这些。

于 2013-09-17T16:18:29.873 回答