首页 > 解决方案 > 如何使用 GStreamer 组合 appsink 和 filesink?

问题描述

我是 GStreamer 的新手,我正在尝试创建一个管道来显示视频并同时录制它。我已经设法使用以下方法制作显示部分:

ss << "filesrc location=/home/videos/video1.avi ! avidemux name=demux demux.video_0 ! mpeg4videoparse ! avdec_mpeg4 ! nvvidconv ! video/x-raw,format=I420 ! appsink name=mysink";

另外,我读过它filesink location=somepath用于将数据保存到文件中,但我不知道如何将它与管道的其余部分结合起来。

那么,如何在同一管道中使用appsink和?filesink

标签: gstreamerpipeline

解决方案


GStreamertee为这种情况提供了一个元素。但是请注意,在大多数情况下,您需要queue在 tee 的每个分支之后添加一个以防止死锁。例如

filesrc location=/home/videos/video1.avi ! avidemux name=demux demux.video_0 ! mpeg4videoparse ! avdec_mpeg4 ! nvvidconv ! video/x-raw,format=I420 ! tee name=mytee ! queue ! appsink name=mysink mytee. ! queue ! filesink location=out.raw

推荐阅读