我正在尝试读取以h263格式编码的视频流,该视频流通过Windows上的rtsp和gstreamer接收。最后,我必须获得BGR或RGB格式(使用Qimage/Qt)。
我可以使用 vlc rtsp://172.22.1.2:8554/test
观看流程
我可以用cmd观看流程: gst-launch-1.0 rtspsrc location=rtsp://172.22.1.2:8554/test ! rtph263pdepay ! avdec_h263 ! autovideosink
我不能在我的程序中执行此操作。我试过m_pipeline = gst_parse_launch("rtspsrc location=rtsp://172.22.1.2:8554/test ! rtph263pdepay ! avdec_h263 ! appsink name=sink caps=video/x-raw, format=BGR", &error);
我尝试uridecodebin uri=..
处于rtspsrc location=..
状态.
我试了video/x-h263
,video/x-raw, format=RGB
我是否有关于大写的错误消息,或者程序崩溃。
我不知道我是否没有使用正确的元素,或者我的命令结束是否错误或其他原因..?
收到错误,因为avdec_h263的 src 上限与你为 appsink 指定的上限不匹配。运行 cmd gst-inspect-1.0 avdec_h264
,您可以看到 src pad caps 模板仅支持 video/x-raw format = I420
,而您的 appsink 设置为 video/x-raw format=BGR
。
尝试将 videoconvert
元素添加到解码器和 appsink 之间的管道中: m_pipeline = gst_parse_launch("rtspsrc location=rtsp://172.22.1.2:8554/test ! rtph263pdepay ! avdec_h263 ! videoconvert ! appsink name=sink caps=video/x-raw, format=BGR", &error);