У меня есть конвейер gstreamer, который берет видео с веб-камеры и разделяет его на два потока:
1) используйте приложение, чтобы я мог программно редактировать захваченные кадры;
2) сохраняет видео в файл
Конвейер выглядит так:
gst-launch-1.0 v4l2src device=/dev/video0 \
! tee name=t ! queue ! videoconvert ! videoscale ! appsink name=sink caps="video/x-raw,format=RGB,width=800,framerate=15/1" t. \
! queue ! video/x-raw,width=800,framerate=15/1 ! jpegenc ! avimux ! filesink location=/tmp/output.avi
Я использую это в приложении C ++.
Моя проблема в том, что в большинстве случаев мне нужны не два потока, работающие одновременно, а только один из них. А в редких случаях - нужно и то, и другое.
Поэтому мне нужен способ временно приостановить / остановить либо приложение, либо сохранение видео - чтобы сэкономить процессор.
Я делаю это сейчас: уничтожаю конвейер и воссоздаю его снова только с одним потоком, когда это необходимо, но это кажется довольно уродливым.
Я искал лучшее решение, но пока не повезло - есть ли способ сделать это?
Заранее спасибо!