Редактирование видео с помощью python или командной строки

Мне нужно выполнить следующие операции в моем проекте python+django:

  • объединение видео с одинаковым размером и битрейтом
  • объединение видео и изображений (для обработки изображений я буду использовать PIL: запись текста в существующее изображение)
  • исчезновение переходов между видео

Я уже знаю некоторые библиотеки редактирования видео для Python: MLT framework (слишком сложный для моих нужд), pygame и pymedia (не включает все функции, которые мне нужны), привязки gstreamer (ужасная документация).

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

Как лучше всего сделать это на машине с Linux.

РЕДАКТИРОВАТЬ: в конце концов я решил работать с расплавом (командная строка mlt)


person reese    schedule 28.01.2011    source источник


Ответы (4)


http://avisynth.org/mediawiki/Main_Page — это язык сценариев для видео.

person Martin Beckett    schedule 28.01.2011
comment
Привет, спасибо, но я забыл упомянуть, что мне это нужно на сервере Linux. Или, если вы имеете в виду эту версию avisynth, avisynth3.unite-video.com/download.html то это еще не годится. - person reese; 28.01.2011
comment
Извините, мне никогда не приходило в голову, что avisynth был только для Windows - person Martin Beckett; 28.01.2011

Поскольку ffmpeg доступен в GNU/Linux, я использую его с такими модулями, как pexpect или subprocess - лучшее решение....

person Community    schedule 29.01.2011
comment
Сейчас я использую ffmpeg, но довольно сложно (или невозможно?) добавлять такие эффекты, как постепенное появление и исчезновение, наложение изображений и тому подобное. Или все это возможно и легко сделать? - person reese; 29.01.2011
comment
Все верно: с помощью ffmpeg сделать постепенное появление/затухание кажется невозможным... В качестве альтернативы, возможно, вам поможет эта ссылка: michaelminn.com/linux/mmsuper8 - person ; 30.01.2011

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

Однако я не уверен, есть ли в библиотеке функции, которые сделают затухание за вас.

person mpenkov    schedule 01.02.2011
comment
Если бы он мог соединиться, не могли бы вы просто соединить исчезающее видео с вашим текущим? Или я думаю, что соединения - это просто резкие сокращения? - person Jeff; 29.03.2014
comment
Да, их присоединения в значительной степени сложны. Если вы хотите объединить два видео вместе, вам придется самостоятельно реализовать код, который генерирует затухающие кадры. Это всего лишь альфа-смесь, так что это не слишком сложно, но и не тривиально. - person mpenkov; 29.03.2014

Какой кодек вы используете?

Существует два способа сжатия видео: с потерями и без потерь. Их легко отличить. В зависимости от их длины видеофайлы с потерями находятся в диапазоне мегабайт, без потерь (включая несжатые) - в диапазоне гигабайт.

Вот это упрощение. Редактирование видеофайлов сильно отличается от редактирования фильма, когда вы просто склеиваете куски пленки. Дело не только в битрейте, частоте кадров и разрешении. Большинство видеокодеков с потерями (MPEG 1-4, Ogg Theora, H.26x, VC-1 и т. д.) начинают с полного кадра, а затем записывают только изменения в движении. Когда вы смотрите видео, вы на самом деле видите статичную сцену, поверх которой слой за слоем наклеиваются изменения. Похоже, вы видите полный кадр за полным кадром, но если вы посмотрите на данные в файле, все, что вы увидите, это черный фон и зашифрованные блоки видео.

Если он несжатый или использует кодек без потерь (HuffYUV, Lagarith, FFV1 и т. д.), вы можете редактировать свой видеофайл так же, как фильм. Вам все равно придется перекодировать видео, но это не повлияет на качество видео, и вы можете вырезать, копировать и вставлять, как хотите, если разрешение и частота кадров одинаковы. Если ваше видео с потерями, вам придется перекодировать его с некоторой потерей качества видео, точно так же, как сохранять одно и то же изображение в формате JPEG снова и снова.

Другим вариантом может быть помещение нескольких фрагментов видео в контейнер, такой как MKV, и использование глав для перехода от фрагмента к фрагменту. Кажется, я помню, как мне говорили, что это возможно, но я никогда не пробовал, так что, возможно, это не так.

person Dave Brunker    schedule 24.01.2013