Давайте проясним: вы пытаетесь выполнить обработку видео в реальном времени? Поскольку ваше последнее обновление значительно изменило проблему, я добавляю еще один ответ.
" медлительность"вы испытываете может быть из-за нескольких причин.Чтобы получить эффект « в режиме реального времени » (в смысле восприятия), вы должны иметь возможность обрабатывать кадр и отображать его в течение 33 мс (приблизительно, для видео со скоростью 30 кадров в секунду).Это означает, что вы должны декодировать фрейм, запустить на нем функции компоновки (как вы вызываете) и отобразить его на экране в течение этого промежутка времени.
Если функции компоновки слишком загружают процессор, то вы можетенаписание программы графического процессора для ускорения этой задачи.Но первое, что вы должны сделать , это точно определить узкое место вашего приложения .Вы можете на мгновение убрать ваше приложение, чтобы оно могло декодировать кадры и отображать их на экране (не выполнять функции компоновки), просто чтобы посмотреть, как оно работает.Если он медленный, то процесс декодирования может использовать слишком много ресурсов ЦП / ОЗУ (возможно, это ошибка на вашей стороне?).
Я однажды использовал FFMPEG и SDL для аналогичного проектаи я был очень доволен результатом. В этом руководстве показано, как сделать базовый видеоплеер с использованием обеих библиотек.По сути, он открывает видеофайл, декодирует кадры и отображает их на поверхности для отображения.