Как создать фильм из 5 000 файлов PNG?

Приправление карри является преобразованием, которое может быть применено к функциям, чтобы позволить им брать ту меньше аргумента, чем ранее.

, Например, в F# можно определить функциональный thus:-

let f x y z = x + y + z

, Здесь функционируют, f берет параметры x, y и z и суммирует их вместе Возвраты so:-

f 1 2 3

6.

Из нашего определения мы можем, может поэтому определить функцию карри для f:-

let curry f = fun x -> f x

, Где 'забава x-> f x' является функцией лямбды equivilent к x => f (x) в C#. Эта функция вводит функцию, которую Вы хотите приправить карри, и возвращает функцию, которая берет отдельный аргумент и возвращает указанную функцию с первым набором аргумента к входному параметру.

Используя наш предыдущий пример мы можем получить карри f thus:-

let curryf = curry f

, Мы можем тогда сделать following:-

let f1 = curryf 1

, Который предоставляет нам функцию f1, который является equivilent к f1 y z = 1 + y + z. Это означает, что мы можем сделать following:-

f1 2 3

, Который возвращается 6.

Этот процесс часто путается с 'частичным функциональным приложением', которое может быть определенным thus:-

let papply f x = f x

, Хотя мы можем расширить его больше чем до одного параметра, т.е..:-

let papply2 f x y = f x y
let papply3 f x y z = f x y z
etc.

А частичное приложение возьмет функцию и параметр (параметры) и возвратит функцию, которая требует одного или нескольких меньшего количества параметров, и поскольку предыдущие два шоу в качестве примера реализованы непосредственно в стандартном определении функции F#, таким образом, мы могли достигнуть предыдущего thus:-

let f1 = f 1
f1 2 3

результата, Который возвратит результат 6.

В conclusion:-

различие между приправлением карри и частичным функциональным приложением является that:-

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

let f x y z = x + y + z
let curryf = curry f
let f1 = curryf 1
let f2 = curryf 2
f1 2 3
6
f2 1 3
6

Частичное функциональное приложение является более прямым - оно берет функцию и один или несколько аргументов и возвращает функцию с первым n набором аргументов к n определенным аргументам. Example:-

let f x y z = x + y + z
let f1 = f 1
let f2 = f 2
f1 2 3
6
f2 1 3
6
8
задан Joel Coehoorn 30 April 2012 в 13:32
поделиться

4 ответа

если вы работаете в Windows, вы также можете заглянуть в virtualdub. http://www.virtualdub.org/

он может создавать AVI из BMP, PNG и т. Д.

11
ответ дан 5 December 2019 в 05:34
поделиться

FFMPEG может создавать файл фильма из серии файлов изображений, эта ссылка на их руководство показывает пример:

http://ffmpeg.org/ffmpeg-doc.html # SEC5

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

Если я не неправильно истолковал ваш вопрос, сделайте может быть осуществима простая реализация кодека фильмов на основе YUV. Я знаю, что HuffYUV может быть не слишком сложным.

10
ответ дан 5 December 2019 в 05:34
поделиться

Две вещи:

  • Вы не собираетесь самостоятельно писать правильный видеокодер. Не случайно. Таким образом, вы можете либо повторно использовать существующий кодировщик, либо вообще не использовать кодировщик.
  • Никакой видеоформат не будет иметь дело с прозрачностью. Либо вы зададите всем изображениям фон, либо вы не сможете использовать существующий формат видео.

На ум приходит несколько решений:

Вам не важен размер, но вы заботятся о качестве. Первое, что я хотел бы спросить себя: неужели вы действительно ​​не заботитесь о размере? Большинство видеоформатов (особенно H.264) дадут вам отличное качество при существенно меньшем размере файла (например, 10x). Вы почти не заметите разницы. Да, ваш контент в HD, но HD-контент на ТВ или Blu-ray также сжимается (с использованием H.264 или VC-1), и этого достаточно для всех остальных. Так что я бы серьезно рассмотрел это как вариант, поскольку он значительно упрощает остальное.

Если хотите, вы всегда можете прибегнуть к формату видео без потерь, например HuffYUV . Это, по крайней мере, даст вам некоторое сжатие при сокращении размера ваших видеоданных вдвое (или более).

Как я уже сказал, используя закодированный видеоформат, вы теряете прозрачность. Если вы хотите сохранить прозрачность и по-прежнему не заботитесь о размере файла, почему бы не сохранить PNG и не отображать их как очень быстрое слайд-шоу в вашем приложении? Если ваша единственная проблема с этим - требования к памяти для одновременной загрузки всех PNG в память ... не делайте этого. Прочтите на пару кадров вперед (фиксированное количество или насколько позволяет память), и как только вы отобразите кадр, удалите его из памяти и прочтите новый кадр вперед. Таким образом вы получите идеальное качество и постоянные требования к памяти. Единственная проблема заключается в том, что ваш диск и процессор должны поддерживать скорость чтения 30 PNG в секунду (или какой у вас частота кадров).

Кроме того, если 5000 отдельных файлов изображений станут слишком громоздкими для обработки , вы можете обернуть их все в пользовательский формат файла. На ум приходит ZIP-файл как простой переносимый формат, или вы можете создать свой собственный.

Единственная проблема заключается в том, что ваш диск и процессор должны быть в состоянии поддерживать скорость чтения 30 PNG в секунду (или независимо от вашей частоты кадров).

Кроме того, если 5000 отдельных файлов изображений станут слишком громоздкими для обработки , вы можете обернуть их все в какой-либо пользовательский формат файла. На ум приходит ZIP-файл как простой переносимый формат, или вы можете создать свой собственный.

Единственная проблема заключается в том, что ваш диск и процессор должны быть в состоянии поддерживать скорость чтения 30 PNG в секунду (или независимо от вашей частоты кадров).

Кроме того, если 5000 отдельных файлов изображений станут слишком громоздкими для обработки , вы можете обернуть их все в какой-либо пользовательский формат файла. На ум приходит ZIP-файл как простой переносимый формат, или вы можете создать свой собственный.

6
ответ дан 5 December 2019 в 05:34
поделиться

Вы можете делать все, что хотите, с помощью mencoder:

Вот ссылка на эту документацию: Кодирование из нескольких файлов входных изображений (JPEG, PNG, TGA и т. Д.)

О прозрачности: я не думаю, что есть видеокодек, поддерживающий прозрачность, так что вам здесь не повезло ...

2
ответ дан 5 December 2019 в 05:34
поделиться
Другие вопросы по тегам:

Похожие вопросы: