我正在开发一个接受 Opencv 帧(通过 opencv camera 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 的上限是:
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 插件尝试过这个管道,管道似乎工作状况良好!
你能帮忙的话,我会很高兴 !
谢谢 !