【问题标题】:GStreamer Pipeline problems when using appsrc and vaapiencode_h264 plugin使用appsrc和vaapiencode_h264插件时的GStreamer Pipeline问题
【发布时间】:2015-11-21 21:18:52
【问题描述】:

我正在开发一个接受 Opencv 帧(通过 opencv 相机 Api 发起)的应用程序,并在将这些帧编码为 H264 帧后尝试将它们发送到网络中。

对于这个项目,我被要求通过硬件执行编码。

我使用下面的管道来做发射机的编码位:

gst-launch-1.0 appsrc name=applicationSource ! videoconvert ! video/x-raw,width=640,format=I420,height=480,framerate=15/1 ! vaapiencode_h264 ! vaapiparse_h264 config-interval=1 ! rtph264pay config-interval=1 ! gdppay ! tcpserversink host=127.0.0.1 port=5002 sync=false

我的 Appsrc 的 Caps 是:

video/x-raw","format""RGB","width"640,"height",G_TYPE_INT,480,
                                               "framerate", 15, 1,
                                               "pixel-aspect-ratio" 1, 1,

但是,当我尝试运行此管道时,会出现以下错误:

libva 信息​​:VA-API 版本 0.37.0

libva 信息​​:va_getDriverName() 返回 0

libva 信息​​:尝试打开 /usr/lib64/dri/i965_drv_video.so

libva 信息​​:找到初始化函数 __vaDriverInit_0_37

libva 信息​​:va_openDriver() 返回 0

0:00:04.597696251 23508 0x7f724003f940 WARN GST_PADS gstpad.c:3739:gst_pad_peer_query: 不能 发送粘性事件

0:00:05.030818739 23508 0x7f724003f940 WARN basesrc gstbasesrc.c:2933:gst_base_src_loop: 错误: 内部数据流错误。

0:00:05.030864404 23508 0x7f724003f940 WARN basesrc gstbasesrc.c:2933:gst_base_src_loop:错误: 流式传输任务暂停,原因未协商 (-4)

错误:内部数据流错误。

0:00:05.032763231 23508 0x7f724003f940 WARN baseparse gstbaseparse.c:1155:gst_base_parse_sink_event_default: 错误:在流结束之前未找到有效帧

错误:在流结束之前未找到有效帧

正如我所强调的,由于谈判问题,管道没有启动

我已经测试了我的 Appsrc,它似乎可以正常工作(接收数据)。

任何人都可以建议任何其他插件来克服这个问题吗?

PS:我已经用相机 v4l2src 插件尝试过这个管道,管道似乎工作状况良好!

任何帮助都会很好!

谢谢!

【问题讨论】:

  • 您的appsrc 提供什么视频格式?你在你的代码中调用gst_appsrc_set_caps 吗?如果没有,您需要这样做,以便 videoconvert 知道它在使用什么。
  • 嗨,我解决了上述问题,这是由于 gstreamer 管道中缺少 caps 属性...

标签: opencv gstreamer h.264 vaapi


【解决方案1】:

我解决了上述问题,这是由于 gstreamer 管道中缺少 caps 属性...

我已经将appsrc插件的大写添加为:

video/x-raw","format""RGB","width"640,"height",G_TYPE_INT,480,
                                               "framerate", 15, 1,
                                               "pixel-aspect-ratio" 1, 1,

但我错过了一个

"interlace-mode",G_TYPE_STRING,"progressive",

检查 v4l2src 上限以验证: 通过启用调试来做到这一点

--gst-debug=v4l2src:6

像这样在管道中运行它:

gst-launch-1.0 --gst-debug=v4l2src:6 v4l2src ! videoconvert ! video/x-raw,width=640,format=I420,height=480,framerate=15/1 ! vaapiencode_h264 ! vaapiparse_h264 config-interval=1 ! rtph264pay config-interval=1 ! gdppay ! tcpserversink host=127.0.0.1 port=5002 sync=false

【讨论】:

    猜你喜欢
    • 2018-05-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-04-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多