Gstreamer,录制视频时出现黑屏

时间:2020-07-22 10:21:16

标签: c gstreamer gstreamer-1.0

我有一个用C编写的gstreamer应用程序。它由管道的两个部分组成。 第一个用于将图像从网络摄像头流式传输到屏幕上(假设是“主要”部分):

gst-launch-1.0 -e v4l2src device=/dev/video4 ! video/x-bayer,format=grbg,depth=8,width=800,height=600 ! \
bayer2rgbneon ! video/x-raw,width=800,height=600 ! videoconvert ! tee name=t \
t. ! queue ! kmssink driver-name=imx-drm force-modesetting=false can-scale=false sync=false

第二个用于录制视频(比如说“录制”部分):

t. ! queue v4l2h264enc ! h264parse ! \
splitmuxsink next-file=key-frame location=/mnt/video/a%d.mp4 muxer-factory=mp4mux index=1 send-keyframe-requests=TRUE

我通过点击键盘上的按钮来运行管道的“主要”部分,并动态地附加/分离“记录”部分。

共同点-效果很好,但我遇到了一个问题。 第一次连接“录制”部分时,黑屏会持续几秒钟。 下一个附加/分离过程不会产生这种影响。

有人知道这种问题的原因吗?

如果需要,我可以提供必要的代码部分。

1 个答案:

答案 0 :(得分:0)

通过 GStreamer 上的多个线程,我发现消费者在 GStreamer 进程完全启动之前就被恢复了。因此,遵循的做法是等待 GStreamer 进程完全启动,然后恢复消费者(这里的消费者是您的视频生产者)。因此,如果使用超时,请检查您的代码。