Gstreamer videomixer 非常低的帧率

Gstreamer videomixer Very low framerate

我正在尝试合成来自三个 Rapsberry PI 的三个流。

当我使用 videomixer 插件将两个流连接在一起时,我收到一条以以下结尾的消息:

管道:pipeline0/GstOSXVideoSink:osxvideosink0: 可能是时间戳问题,或者是这台电脑太慢了。

奇怪的是,我的任务监视器只显示 gst

的使用率约为 15%CPU

对于三个流,帧率变得无法使用。我希望我的 I7 macbook 能够毫无问题地处理这个问题....

这是我用于混合的代码,在本例中只有一个流(/sink?)。 谁能告诉我是否有明显的错误?或者我应该在哪里寻找瓶颈并改进它? 谢谢 !

gst-launch-1.0 videomixer name=m sink_1::xpos=400 sink_2::ypos=300 ! autovideosink \
-v udpsrc port=9000 caps='application/x-rtp, media=(string)video, clock-rate=(int)90000, encoding-name=(string)H264'! rtph264depay ! video/x-h264,width=400,height=300,framerate=30/1 ! h264parse ! avdec_h264 ! videoconvert ! m. \
-v udpsrc port=9001 caps='application/x-rtp, media=(string)video, clock-rate=(int)90000, encoding-name=(string)H264' ! rtph264depay ! video/x-h264,width=400,height=300,framerate=30/1 ! h264parse ! avdec_h264 ! videoconvert ! m. \
-v udpsrc port=9002 caps='application/x-rtp, media=(string)video, clock-rate=(int)90000, encoding-name=(string)H264' ! rtph264depay ! video/x-h264,width=400,height=300,framerate=30/1 ! h264parse ! avdec_h264 ! videoconvert !  m.

这是我用来从 RPI 相机发送流的代码。

raspivid -n -w 640 -h 480 -t 0 -o - \
| gst-launch-1.0 -v fdsrc ! h264parse ! rtph264pay \ 
config-interval=10 pt=96 ! udpsink host=192.168.1.3 port=9000

尝试为每个视频解码和 sync=false 添加队列元素到视频接收器。

gst-launch-1.0 videomixer name=m sink_1::xpos=400 sink_2::ypos=300 ! videoconvert ! ximagesink sync=false \
udpsrc port=9000 ! application/x-rtp,media=video,clock-rate=90000,encoding-name=H264 ! rtph264depay ! video/x-h264,width=400,height=300 ! h264parse ! avdec_h264 ! queue ! videoconvert ! m. \
udpsrc port=9001 ! application/x-rtp,media=video,clock-rate=90000,encoding-name=H264 ! rtph264depay ! video/x-h264,width=400,height=300 ! h264parse ! avdec_h264 ! queue ! videoconvert ! m. \
udpsrc port=9002 ! application/x-rtp,media=video,clock-rate=90000,encoding-name=H264 ! rtph264depay ! video/x-h264,width=400,height=300 ! h264parse ! avdec_h264 ! queue ! videoconvert !  m.

现在我对此的免责声明是,我不确定视频是否会适当流畅和同步,但它看起来相当不错。

此外,在 raspivid 上,您可能希望将 config-interval 属性 添加到 rtph264pay 元素。

raspivid -n -w 640 -h 480 -t 0 -o - | gst-launch-1.0 -v fdsrc ! h264parse ! rtph264pay config-interval=1 ! multiudpsink clients=192.168.1.3:9000,192.168.1.3:9001,192.168.1.3:9002