Как объединить appsink и filesink с помощью GStreamer? - PullRequest
0 голосов
/ 15 апреля 2020

Я новичок в 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 в одном конвейере?

1 Ответ

0 голосов
/ 16 апреля 2020

GStreamer предлагает элемент tee для таких случаев. Тем не менее, обратите внимание, что в большинстве случаев вам понадобится queue после каждой ветви тройника, чтобы предотвратить взаимные блокировки. Например,

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
...