我对 gstreamer 比较陌生,正在寻找一些调试想法。我正在研究使用 H264、RTP、UDP 的视频流,并设置一些测试发送和接收脚本作为概念证明。我没有使用实际的网络,而是使用 localhost 并将所有代码保存在一台 PC 上。
发件人
gst-launch-1.0 videotestsrc ! video/x-raw,width=640,height=480 !\
timeoverlay !\
x264enc tune=zerolatency byte-stream=true bitrate=3000 !\
h264parse !\
rtph264pay !\
udpsink host=localhost port=5200
接收者
gst-launch-1.0 udpsrc port=5200 !\
application/x-rtp,encodingname=H264,payload=96 !\
rtph264depay !\
h264parse !\
avdec_h264 !\
autovideosink
这几乎可以工作。显示了测试视频,但几秒钟后,大部分图像(色块)消失了,只有噪点框显示在右下方。然后几秒钟后它又闪烁回来,依此类推。
我可以看到它可能与排队或缓冲或同步或带宽有关?它不会在实际网络上丢失内容,因为我正在通过 localhost 进行 UDP 流量。有点在这里折腾,添加和删除各种参数并没有太大区别。是的,其中一些是copypasta,我可能不太清楚我在做什么。
如果没有什么明显的,我该如何调试呢?
我不认为这是原始 CPU 能力,因为 top 并不表示我接近 100% CPU。