如何知道通过UDP ts流传输的视频分辨率?

如何知道通过UDP ts流传输的视频分辨率?,udp,gstreamer,mpeg,Udp,Gstreamer,Mpeg,我正在以mpegstream的形式通过udp传输yuv文件 我在管道下面收到了 gst-launch-1.0 udpsrc port=8765 ! rtpmp2tdepay ! tsdemux ! avdec_h264 ! appsink 在appsink,我正在接收视频缓冲区。但是,现在我想知道传入的视频流分辨率 如何找到传入视频的分辨率。在视频解码器的接收器板上添加事件探测器。API需要一个处理程序。检查处理程序中的GST\u事件\u上限 以下是API: 您是否阅读了文档?你读过GSTCA

我正在以mpegstream的形式通过udp传输yuv文件

我在管道下面收到了

gst-launch-1.0 udpsrc port=8765 ! rtpmp2tdepay ! tsdemux ! avdec_h264 ! appsink
在appsink,我正在接收视频缓冲区。但是,现在我想知道传入的视频流分辨率


如何找到传入视频的分辨率。

在视频解码器的接收器板上添加事件探测器。API需要一个处理程序。检查处理程序中的GST\u事件\u上限

以下是API:

您是否阅读了文档?你读过GSTCAP吗?是的,我读过caps来协商流。你上面第一行中的“Sink”是什么元素?它是appsink元素,这个函数是appsink的回调函数,带有新的信号样本,但你说你需要“传入的”aka编码视频流分辨率?Appsink将处理解码后的视频。解码后,在sink元素,我将获得分辨率。这只是即将到来的决议。对吧?取决于你所说的“传入解析”是什么意思。我见过一些硬件解码器输出帧以保持对齐(例如嵌入式系统中的内存布局等,以便更快地访问)。例如,如果编码分辨率为632x480,则解码输出可能为640*480(宽度16字节对齐)。如果解码器s“说”它已经将宽度填充了x字节(称为步幅),那么它就可以了,否则你永远也不会知道。
sinkPad = gst_element_get_static_pad (Sink, "sink");

sinkCaps = gst_pad_get_current_caps (sinkPad);

UU_PRINT("Caps :: %s", gst_caps_to_string (sinkCaps));

str = gst_caps_get_structure(sinkCaps, 0);

if((!gst_structure_get_int (str, "width", &width))  || (gst_structure_get_int (str, "height", &height)))
{
    UU_PRINT("No Width/Height are Available in the Incoming Stream Data !!");
}

UU_PRINT("Width :: %d Hieght %d", width, height);

gst_caps_unref(sinkCaps);