为什么Gstreamer在运行时更改appsrc的上限?

为什么Gstreamer在运行时更改appsrc的上限?,gstreamer,Gstreamer,我正在尝试使用Gstreamer的appsrc元素开发一个应用程序。 为此目的;我正在使用以下openCV VideoWriter实例: cv::VideoWriter writer2 { "appsrc caps=video/x-raw,format=NV12,width=1280,height=720,framerate=30/1 ! " "filesink location=/home/sarslan/out.nv12 ",

我正在尝试使用Gstreamer的appsrc元素开发一个应用程序。 为此目的;我正在使用以下openCV VideoWriter实例:

    cv::VideoWriter writer2 { "appsrc caps=video/x-raw,format=NV12,width=1280,height=720,framerate=30/1 ! "
        "filesink location=/home/sarslan/out.nv12 ",
        cv::CAP_GSTREAMER,
        0,
        30.0, // fps
        cv::Size{WIDTH, HEIGHT},
        true};
在应用程序中,我将NV12帧插入到这个编写器中。 但当我执行应用程序时,“out.nv12”文件的大小是0字节。 因此,我搜索了gstreamer日志,结果如下:

0:00:00.278040860 16433   0x7f70004b30 DEBUG                 appsrc gstappsrc.c:1344:gst_app_src_set_caps:<appsrc0> setting caps to video/x-raw, format=(string)NV12, width=(int)1280, height=(int)720, framerate=(fraction)30/1
0:00:00.278505540 16433   0x7f70004b30 DEBUG                 appsrc gstappsrc.c:688:gst_app_src_internal_get_caps:<appsrc0> caps: (NULL)
0:00:00.278589460 16433   0x7f70004b30 DEBUG                 appsrc gstappsrc.c:688:gst_app_src_internal_get_caps:<appsrc0> caps: (NULL)
0:00:00.278736430 16433   0x7f70004b30 DEBUG                 appsrc gstappsrc.c:1344:gst_app_src_set_caps:<appsrc0> setting caps to video/x-raw, format=(string)BGR, width=(int)1280, height=(int)720, framerate=(fraction)30/1
0:00:00.278782890 16433   0x7f70004b30 DEBUG                 appsrc gstappsrc.c:1509:gst_app_src_set_stream_type:<appsrc0> setting stream_type of 0
0:00:00.278820150 16433   0x7f70004b30 DEBUG                 appsrc gstappsrc.c:1401:gst_app_src_set_size:<appsrc0> setting size of -1
0:00:00.279119090 16433   0x7f70004b30 DEBUG                 appsrc gstappsrc.c:865:gst_app_src_start:<appsrc0> starting
0:00:00.279575060 16433     0x37769e30 DEBUG                 appsrc gstappsrc.c:688:gst_app_src_internal_get_caps:<appsrc0> caps: (NULL)
0:00:00.27804086016433 0x7f70004b30调试appsrc gstapsrc.c:1344:gst_app_src_set_caps:将caps设置为视频/x-raw,格式=(字符串)NV12,宽度=(int)1280,高度=(int)720,帧速率=(分数)30/1
0:00:00.27850554016433 0x7f70004b30调试应用程序代码gstappsrc.c:688:gst\U应用程序\U内部\U获取\U caps:caps:(空)
0:00:00.278589460 16433 0x7f70004b30调试应用程序代码gstappsrc.c:688:gst\U应用程序\U src\U内部\U获取\U caps:caps:(空)
0:00:00.27873643016433 0x7f70004b30调试appsrc gstapsrc.c:1344:gst_app_src_set_caps:将caps设置为视频/x-raw,格式=(字符串)BGR,宽度=(int)1280,高度=(int)720,帧速率=(分数)30/1
0:00:00.278782890 16433 0x7f70004b30调试应用程序gstappsrc.c:1509:gst\U应用程序src\U设置流类型:设置流类型0
0:00:00.278820150 16433 0x7f70004b30调试应用程序gstappsrc.c:1401:gst\U应用程序src\U设置大小:设置大小为-1
0:00:00.27911909016433 0x7f70004b30调试应用程序代码gstappsrc.c:865:gst\U应用程序代码src\U启动:启动
0:00:00.279575060 16433 0x37769e30调试appsrc gstappsrc.c:688:gst\u app\u src\u internal\u get\u caps:caps:(空)
从这些日志中,我了解到appsrc元素的上限在运行时发生了更改,这就是输出文件为0字节的原因

因此,第一个问题是: 为什么gstreamer在运行时覆盖我的caps并设置自己的caps? 第二个问题是: 如何禁用此行为

谢谢