我正在尝试使用 gStreamer 模拟 ST2110 流,以便像这样将其从主机 A 发送到主机 B。问题是,我不知道 gstreamer 是如何工作的。
|发送者|----->开关----->|接收者|
很高兴知道: 操作系统:Ubuntu
LinuxPTP:同步服务器
gStreamer* 和 Telestream PRISM*:创建 St2110 信号
Tcpdump:抓取主机 B 上的流量
Wireshark ST2110 解剖器:过滤 pcaps
EBU-LIST:上传捕获文件并检查流是否符合 St2110 标准。
带宽:高达 10gb/s
gStreamer 发件人:
gst-launch-1.0 rtpbin 名称=rtpbin
videotestsrc 水平速度=2!
视频/x-raw,宽度=1280,高度=720,帧率=30/1,格式=UYVP! rtpvrawpay pt=102 !队列 !
rtpbin.send_rtp_sink_0 rtpbin.send_rtp_src_0 !队列 !
udpsink 主机=233.0.1.2 端口=5005 渲染延迟=0 rtpbin.send_rtcp_src_0 !
udpsink host=233.0.1.2 port=5005 sync=false async=false
音频测试!音频重采样!音频转换!
rtpL24pay ! application/x-rtp, pt=103, payload=103, clock-rate=48000, channels=2 !
rtpbin.send_rtp_sink_1 rtpbin.send_rtp_src_1 !
udpsink host=233.0.1.2 port=5007 render-delay=0 rtpbin.send_rtcp_src_1 !
udpsink host=233.0.1.2 port=5007 sync=false async=false
gStreamer 接收器: gst-launch-1.0 rtpbin 名称=rtpbin udpsrc 多播组=233.0.1.2 ! autovideosink 同步=真
如您所见,问题是 Audio、Cinst、VRX 和 Video Latency。
C:网络兼容模型。测量发送方的数据包延迟变化。 如果 packetnumber 超过 CMAX,桶就会溢出,我们就会丢失数据包。
VRX:虚拟接收缓冲区模型:第二个“桶”。它的drainrate是基于receiver的read schedule。
来源: https://tech.ebu.ch/docs/groups/list/Live_IP_Software_Toolkit-paper.pdf
我的问题是,我应该更改或添加哪些 gStreamer 设置来解决这 4 个问题(Cinst、VRX、延迟)? 我怎样才能模拟那些“漏水桶”C 和 VRX。 旁注:我使用硬件 st2110 信号发生器测试了设置,EBU-List 结果 100% 符合 ST2110。所以问题必须或应该是发件人/gStreamer。
如有任何帮助,我将不胜感激。
我测试了不同的 gStreamer 设置,但如果你不知道 gStreamer 是如何工作的,它不是很有效。