Подтвердить что ты не робот

Поверните последовательность изображений в видео с прозрачностью

У меня есть то, что кажется, это должна быть действительно простая проблема, но это оказалось намного сложнее, чем я ожидал. Здесь проблема:

У меня довольно большая последовательность изображений, состоящая из нумерованных кадров (выход из Maya, для чего это стоит). Изображения в настоящее время находятся в формате Targa (.tga), но я мог бы преобразовать их в PNG или другой произвольный формат, если это имеет значение. Важно то, что у них есть альфа-канал.

Что я хочу сделать, это программно превратить их в видеоклип. Формат не имеет большого значения, но он должен быть без потерь и иметь альфа-канал. Несжатое видео в контейнере Quicktime, вероятно, будет идеальным.

Моя первоначальная мысль была ffmpeg, но, потратив большую часть дня на нее, кажется, что она не получила никакой поддержки для альфа-каналов. Либо мне что-то не хватает, либо базовый libavcodec просто этого не делает.

Итак, какой правильный путь здесь? Инструмент командной строки, такой как ffmpeg, был бы приятным, но любое решение, которое запускается в Windows и может быть вызвано из script, будет в порядке.

Примечание. Наличие альфа-канала в вашем видео на самом деле не так уж и необычно, и это действительно полезно, если вы хотите собрать его поверх другого видеоклипа или неподвижного изображения. Насколько я знаю несжатое видео, кодек Quicktime Animation и кодек Sorenson Video 3 поддерживают прозрачность, и я слышал, что H.264 также работает. Все, о чем мы говорим, это 32-битная глубина цвета, и это довольно широко поддерживается; как Quicktime.mov файлы, так и файлы Windows.avi могут справиться с этим, и, вероятно, намного больше.

Quicktime Pro более чем счастлив превратить последовательность изображений в 32-битный файл .mov. Нажмите "Экспорт", измените глубину цвета на "Миллионы цветов +", выберите "Анимационный кодек", проверьте качество до 100, и там вы - без потерь сжатое видео с альфа-каналом, и оно будет воспроизводиться почти где угодно с кодека является частью Quicktime с версии 1.0. Проблема в том, что Quicktime Pro не имеет никакого интерфейса командной строки (по крайней мере, в Windows). ffmpeg поддерживает кодирование с использованием кодека Quicktime Animation (который он вызывает qtrle), но он поддерживает только бит-глубину 24 бит.

Проблема заключается не в поиске формата видео, поддерживающего альфа-канал. Быстрая анимация была бы идеальной, но даже несжатое видео должно работать. Проблема заключается в поиске инструмента, который его поддерживает.

4b9b3361

Ответ 1

Да ffmpeg, безусловно, поддерживает альфа-канал в видеофайле. Не все кодеки в ffmpeg, похоже, поддерживают альфа-ноту. Motion PNG в файле .MOV - одна хорошая комбинация для альфы.

Чтобы кодировать/импортировать изображения с альфой в видео с помощью alpha try: ffmpeg -i %d.png -vcodec png z.mov

Quicktime будет воспроизводить это.

Чтобы декодировать/экспортировать видео с альфа-изображениями с помощью alpha try: ffmpeg -i z.mov -f image2 export2\%d.png

Обратите внимание, что я экспортировал их в каталог с именем 'export2'. Не забудьте оставить там% d частей. Эти команды будут работать так же, как и в системе Windows. Пользователям Linux/Mac может потребоваться добавить кавычки и заменить некоторые\for/как обычно.

Ответ 2

Я знаю, что эта тема немного устарела, но я все равно публикую.

FFMPEG с поддержкой Quicktime Animation (RLE) или FFVHUFF/HUFFYUV.

  • ffmpeg -i yoursequence% d.png -vcodec qtrle movie_with_alpha.mov
  • ffmpeg -i yoursequence% d.png -vcodec ffvhuff movie_with_alpha.avi
  • ffmpeg -i yoursequence% d.png -vcodec huffyuv movie_with_alpha.avi

Вы получите видеофайлы с прозрачностью (альфа-канал).

Я также слышал, что вариация On2-VP6 (но не WebM-VP8) может обрабатывать альфа, но у меня нет их кодека под рукой.

Это также работает.  - ffmpeg -i yoursequence% d.png -vcodec png movie_with_alpha.mov

Ответ 3

Чтобы веб-разработчики дошли до этого вопроса и отчаянно стучали головой о стену... Возможно создание прозрачного WebM-видео но при в тот момент, когда вам может понадобиться скомпилировать ffmpeg и необходимые библиотеки из источника.

Я хотел отобразить рендер-видео Blender на веб-сайте, но сохранить прозрачность. Первым шагом было сделать вывод Blender в виде отдельных файлов PNG. После этого я потратил довольно много времени, пытаясь принудить ffmpeg преобразовать файлы PNG в одно видео. Основная команда проста:

ffmpeg -i input%04d.png output.webm

Эта команда загружает все PNG с именами файлов input0000.png через input9999.png и превращает их в видео. Прозрачность была быстро потеряна. Комбинируя через выход, я понял, что ffmpeg помогает выбрать непрозрачный формат:

Incompatible pixel format 'yuva420p' for codec 'flv', auto-selecting format 'yuv420p'

В этот момент я понял, что мне, возможно, придется перекомпилировать ffmpeg с нуля. Я боролся с несколькими другими инструментами, но в конечном итоге вернулся с ffmpeg. После компиляции libvbx и ffmpeg из самого последнего источника все сработало.

Ответ 4

Я предполагаю, что вы или другие хотели бы использовать такое видео в интерактивной флеш-ролике. Вот учебник по этому поводу, включающий ffmpeg компиляцию в несжатый avi с альфа-каналом из png.

http://away3dtutorials.blogspot.com/2011/02/ffmpeg-to-compile-jpeg-to-video-with.html

Ответ 5

Коди,

Вы можете написать свою собственную утилиту командной строки, используя Quicktime SDK для Windows, я бы рекомендовал придерживаться более высокого уровня Quicktime COM apis и только вникать в C-API, если вам действительно нужно.

-Nick