У меня есть ситуация, когда у меня несколько камер (rtspsrc
) и одноэлементный элемент, который выполняет аналитику входящего видеопотока.Я называю это одноэлементным элементом, потому что он имеет источник запроса и контактные площадки.В приложении должен существовать только один из них, поскольку он работает на графическом процессоре и может повысить производительность, выполняя пакетные операции.Представьте, что приложение, которое я создаю, представляет собой API-интерфейс для добавления камер, удаления камер, включения и выключения аналитики для каждой камеры и т. Д. На камерах будет выполняться аналитика, фиксировать результаты и отправлять их дальше.Сложность заключается в том, что мне нужно поделиться элементом Gstreamer (аналитическим элементом).
Таким образом, у меня есть несколько камер, которые подключаются к этому единственному элементу, а затем выходят в приложения.Это работает достаточно хорошо, но я хочу иметь возможность:
- Пауза определенной камеры
- Каждая
rtspsrc
должна быть полностью изолирована, поэтому ошибки в одной из них не влияютвесь конвейер - Прослушивание событий на определенной камере
Если у меня все камеры в конвейере вместе, я не могу понять, как приостановить конкретную камеру.Я не могу приостановить весь конвейер, потому что это остановит все камеры.Лучшее, что я придумал, - это удалить и в отличие от элементов для определенных камер, а затем при возобновлении добавить и заново связать.Это работает вроде.Если определенный rtspsrc
перестает отвечать, тогда останавливается весь конвейер.Если конкретный rtspsrc
не существует, тогда весь конвейер не перейдет в состояние PLAYING
Как мне разработать свое приложение?Как вы думаете, у меня должен быть один большой трубопровод?Или я должен иметь конвейер, содержащий элемент одноэлементной аналитики, и конвейер для каждой камеры, а затем соединить их с помощью appsink и appsrc?Такой подход может упростить обработку, поскольку каждый конвейер полностью отделен?
Дайте мне знать, если вам нужна дополнительная информация.