Редактирование видео с помощью Python или командной строки - PullRequest
3 голосов
/ 28 января 2011

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

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

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

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

Что лучшеподход, чтобы сделать это на компьютере с Linux.

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

Ответы [ 4 ]

0 голосов
/ 24 января 2013

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

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

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

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

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

0 голосов
/ 29 января 2011

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

0 голосов
/ 01 февраля 2011

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

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

0 голосов
/ 28 января 2011

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

...