Проект на C#/WPF.
Я использую EmguCV(3.4.1) для захвата и анализа видео.
Мне необходимо получать 3 rtsp видео потока в h264 1080p 60fps.
Для тестов используется процессор i3-6100 3.7GHz, 8гб оперативки.
Для захвата видео я использую класс VideoCapture. Вот часть кода в которой происходит захват видео:
Mat fr = new Mat();
VideoCapture Capture;
public void StartStream(string Source)
{
Capture = new VideoCapture(Source);
Capture.ImageGrabbed += Capture_ImageGrabbed;
Capture.Start();
}
private void Capture_ImageGrabbed(object sender, EventArgs e)
{
Capture.Retrieve(fr, 3);
//обработка кадра
}
Проблема в том, что как только происходит вызов Capture.Start(); нагрузка на процессор увеличивается на 20%.(для одного потока).
Проблема не в Capture_ImageGrabbe, т.к. даже если я не подписываюсь на событие ImageGrabbed, а просто:
Capture = new VideoCapture(Source);
Capture.Start();
Нагрузка сразу возрастает.
В связи с этим вопрос, как можно оптимизировать захват видео?
P.S.
У меня нету проблем производительности при отображении на форме или анализе кадров видео.
Если открыть тот же самый rtsp поток в VLC плеере, то нагрузка на процессор не превысит 3-5%.
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Как мне сделать, чтобы при вводе в textbox перекидывала на следующий не используя Tab (TabIndex) К примеру через событие Textbox_textChanged
У меня есть метод, который возвращает файл пользователюНо во время выполнения метода возможно исключение