
Я создаю приложение для чтения нескольких потоков IP-камер (rtsp) и запуска различных алгоритмов машинного обучения в реальном времени. Для каждого потока камеры,
- Я запускаю процесс ffmpeg, который непрерывно разбивает потоки rtsp на кадры и сохраняет их как изображения (JPEG). Потоки используют кодировку H.264. Я беру 1 кадр каждую секунду в качестве вывода.
- Очереди сообщений, соответствующие моделям, получают сообщение, содержащее местоположение файла.
- Модели продолжают изучать файл и делать выводы.
Проблема, с которой я столкнулся, заключается в использовании процессора процессом декодирования ffmpeg. Для вывода в реальном времени без потери кадров мне приходится усиливать свой сервер на ядро для каждых 2 потоков камеры. Есть ли какая-то оптимизация, которую мне не хватает для ffmpeg?
Я использую процессор Intel Xeon Gold с ОС Ubuntu 18.04.