Добрый день.

В настоящее время я работаю над проектом, чтобы сделать резюме видео наблюдения. Идея состоит в том, чтобы читать фреймы с использованием OpenCV, делать обнаружение на переднем плане и классифицировать человека методом глубокого обучения.

Поскольку кодирование с использованием x264 требует огромных ресурсов процессора, я хочу использовать -c copy в ffmpeg, чтобы избежать кодирования. Я могу распознать индексы кадров, в которых участвует движущийся человек, или соответствующие временные метки. Есть ли способ, с помощью которого я могу использовать кодек копирования для генерации результирующего видео из исходного видео без транскодирования?

1 ответ1

0

Нет, вы не можете просто взять отдельные кадры входного видео. Эти кадры могут быть закодированы таким образом, что они ссылаются на другие кадры и требуют их для декодирования. Вы не можете избежать перекодирования, если ваше входное видео состоит только из I-кадров.

Если вы читаете видео с помощью OpenCV для анализа необходимых кадров, вы также можете использовать OpenCV напрямую для вывода соответствующих кадров в виде изображений JPG (или аналогичных). Позже вы можете сшить их вместе как видео с ffmpeg. Или используйте класс VideoWriter из OpenCV для создания выходного видео на лету.

В зависимости от вашего варианта использования (и я предполагаю, что это скорее исследовательский проект, в котором вы используете большой набор входных видео для обучения / проверки модели), может быть более эффективным сначала преобразовать каждое входное видео в видео только в I-кадре. (например, используя ffv1 если вы хотите без потерь), а затем работайте с этим.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .