Страницы

Поиск по вопросам

четверг, 11 июля 2019 г.

Разрезать видео с помощью opencv c++

С помощью videocapture из видеоролика длиной N минут делать много удалений длиной несколько секунд. Знаю есть вариант, через VideoWriter просто переписывать видео. Но зачем он тогда нужен, когда через вызов cmd можно использовать ffmpeg?
Ищу нормальный способ из in.mp4 вырезать секундные куски и получить out.mp4 без ffmpeg. И еще вопрос, везде при разрезке in.mp4 потом надо склеивать все куски. Избежать такого возможно?


Ответ

Нарезать видеофайл на отдельные отрезки OpenCV позволяет, но по большому счёту это неподходящий для данной задачи инструмент. Всё равно, что саблей косить траву. Вроде и замах красивый, а некое неудоумение не отпускает.
В OpenCV класс VideoWriter является обёрткой над FFmpeg и предоставляет лишь базовый функционал по сохранению видеокадров в файл. Создан он лишь для удобства разработки приложений, не претендующих на гибкую настройку параметров видеоформатов и кодеков, которые неизбежно приходится учитывать непосредственно при работе с C API FFmpeg.
Чтобы не заниматься "склеиванием" кусков, нужно, используя тот же C API FFmpeg, читать видеокадры из исходного файла и записывать желаемые в отдельный файл. Очень вероятно, что для этой операции и промежуточные декодирование с кодированием не потребуются. Читаем из входного потока AVPacket и без перекодирования записываем в выходной поток.

Комментариев нет:

Отправить комментарий