2015-11-16 4 views
1

Я использую OpenCV с Python, но на самом деле могу переключиться на C++, поэтому, если это важно, ответьте на вопрос, рассматривая его.Как написать avi-файл с OpenCV размером более 2 ГБ?

Я пишу .avi файл (соединяющую несколько AVI файлов в один), используя

cv2.VideoWriter([filename, fourcc, fps, frameSize[, isColor]]) 

но недавно узнал, что я не могу написать .avi файл больше 2 ГБ с ним. Здесь даже упоминалось: Due to this OpenCV for video containers supports only the avi extension, its first version. A direct limitation of this is that you cannot save a video file larger than 2 GB.

Но сейчас у меня нет времени изучать новую библиотеку, например ffmpeg, мне нужно сделать это очень быстро.

Как я могу написать этот файл, используя C++ или Python со знанием OpenCV или, по крайней мере, с входной частью - с помощью

cv::Mat 

в кадрах

+2

В качестве быстрого взлома вы можете сохранить каждый кадр в виде изображения с последовательным номером и использовать какой-либо инструмент, например [VirtualDub] (http://www.virtualdub.org/), чтобы сделать видео с предпочтительным кодеком из последовательности изображений. Последовательность изображений займет много места на диске, но вам не нужно ничего узнавать. – Miki

ответ

1

Вы сами ответили на свой вопрос, но я Это не ответ, который вы хотите.

С вашей ссылки

Как вы можете видеть, что вещи могут получить очень сложны с видео. Однако OpenCV - это в основном библиотека компьютерного зрения, а не видеопоток, кодек и запись. Поэтому разработчики старались максимально упростить эту часть. Благодаря этому OpenCV для видеоконтейнеров поддерживает только расширение avi, его первую версию. Прямым ограничением этого является то, что вы не можете сохранить видеофайл размером более 2 ГБ. Кроме того, вы можете создавать и расширять только одну видеодорожку внутри контейнера. Здесь нет поддержки аудио или других треков. Тем не менее, любой видеокодек, присутствующий в вашей системе, может работать. Если вы столкнетесь с некоторыми из этих ограничений, вам нужно будет изучить более специализированные библиотеки для записи видео, такие как FFMpeg или кодеки, как HuffYUV, CorePNG и LCL.

Что говорит этот пункт является то, что разработчики OpenCV сделали выбор дизайна, который говорит, что вы не может видео записи файлов размером более 2Гб с использованием OpenCV для конкретной причине, что она является компьютерное зрение библиотека не видео инструмент.

К сожалению, если вы хотите писать видео большего размера, чем 2Gb вы собираетесь нужно научиться использовать FFMPEG или что-то подобное (это не так сложно, и имеет хорошие привязки к OpenCV)

+0

Странно то, что я только что создал несжатый avi-файл с OpenWV VideoWriter, 8 ГБ. Это немного странно (ffmpeg находит больше кадров, чем то, что будут играть Totem и VLC), но размер файла не кажется для меня проблемой. – Gauthier

1

Это ограничение было снято в OpenCV 3.0, благодаря появлению новых форматов файлов, таких как .mkv, которые поддерживают видеофайлы размером более 2 ГБ.

См. Does OpenCV 3.0 Still Has Limits On VideoWriter Size?.

ПРИМЕЧАНИЕ. Документация и примеры не были обновлены, поэтому, возможно, это следует считать экспериментальным.

Смежные вопросы