OpenCV: для файлов mp4 сохранение mov ie работает, но с неправильным кодеком - PullRequest
1 голос
/ 09 мая 2020

Я делаю видеоредактор в Python с OpenCV и тестирую различные комбинации кодеков и форматов файлов. В этом примере я сосредоточен на форматах avi и mp4. Я пробовал несколько разных четырехсимвольных кодеков (http://www.fourcc.org/codecs.php), и все они сохранили фактический mov ie, который я могу воспроизвести.

Непонятно что, когда я перезагружаю их и извлекаю код c из mov ie, оказывается, что только mov ie, сохраненный как avi, кажется, был сохранен с использованием исходный код c. Ниже у меня есть диаграмма, показывающая код c, используемый для кодирования (созданный с использованием cv2.VideoWriter_fourcc()), а затем соответствующий код c, извлеченный из видео после его последующей загрузки (извлеченный с помощью get(cv2.CAP_PROP_FOURCC)). Я также указываю размер в МБ в скобках.

Для avi (закодировано -> извлечено):

MJPG -> MJPG (3.9)
FFV1 -> FFV1 (12.3)
DIVX -> DIVX (0.7)

Для mp4:

MJPG -> mp4v (3.9)
FFV1 -> avc1 (26.1)
DIVX -> mp4v (0.7)

Так что вы можете убедитесь, что кодировка не соответствует типам файлов mp4, хотя размеры файлов примерно совпадают. Все видео выглядят примерно одинаково для avi и mp4.

Эти метаданные из загруженных фильмов не заслуживают доверия для mp4, не работает ли кодировка для mp4, поэтому выбирается значение по умолчанию или что-то еще?

1 Ответ

0 голосов
/ 11 мая 2020

Скорее всего, вы попытаетесь использовать комбинацию кода c (способ сжатия видеоконтента) и контейнера (фактический формат файла, используемый для передачи сжатого видео (и обычно звука, субтитров и т. Д.), Которые не являются совместимый.

...