GStreamer 管道中的 GstBuffer 流量监控

GstBuffer flow monitoring in GStreamer pipeline

我想监视通过我的 GStreamer 管道的缓冲区。

例如,在以下管道中:我想知道在 rtph264pay 和 udpsink 之间流动的 1 个缓冲区 (ie.GstBuffer) 是否对应于在我的以太网接口上传输的 1 个数据包。

gst-launch-1.0 filesrc ! x264enc ! rtph264pay ! udpsink

我可以使用什么工具来解决这个问题?我必须进入源代码才能得到答案吗?答案会是什么?

您可以使用GST_SCHEDULING调试类别来监控数据流。

GST_DEBUG="*SCHED*:5" gst-launch-1.0 filesrc ! x264enc ! rtph264pay ! udpsink 2> gst.log

这将生成到达接收器垫的每个缓冲区的日志。你可以过滤udpsink sink pad来获取你想要的信息。对于网络端,您需要使用网络分析器,例如 Wireshark。然后你应该能够比较。

实际上,每个有效负载缓冲区将代表 1 个 UDP 数据包,除非您的网络 MTU 小于您在有效负载上配置的值(请参阅 mtu 属性)。