Основная идея моего приложения - «основной» конвейер, который транслирует видео на экран. А приложение может выполнять другие функции, такие как масштабирование, сохранение изображения / видео и т. Д. c. Эти дополнительные действия запускаются с клавиатуры.
Вот общий конвейер:
sr c -> debayer-> square (для масштабирования) -> videocrop-> videoscale-> queue-> sink
Масштабирование работает правильно, потому что изменение свойства панели на лету - не большая проблема.
Моя идея реализации «сохранения» функциональности был в добавлении «тройника» с настройкой необходимой части конвейера для сохранения. Это должно выглядеть так:
sr c -> debayer-> square (для масштабирования) -> videocrop-> videoscale-> tee-> queue-> sink
_________________________________________________ tee-> queue-> videoconvert-> jpegen c -> filesink
Я протестировал этот подход с использованием gst-launch-1.0 - все работает нормально, но у меня есть некоторые проблемы с кодом реализация. После нажатия на нужную кнопку изображение просто зависает и больше ничего не происходит.
У кого-нибудь есть идеи или примеры или связанные ссылки для такой проблемы? Я могу поделиться всем конвейером для gst-launch-1.0 и необходимыми частями кода. Просто спросите их, пожалуйста.
Я продолжаю работать над этим вопросом и отправлю ответ, если найду его.