Обработка большого количества файлов - любая библиотека или утилита, чтобы помочь? - PullRequest
0 голосов
/ 21 августа 2009

Я бы хотел обработать большое количество файлов - например, транскодирование видео, например YouTube, где вам нужно преобразовать все в формат FLV или обработку изображений, где вы создаете большие пальцы из больших файлов RAW.

Есть ли какая-либо служба или библиотека, которая может помочь в такой обработке? Я имею в виду не фактическое транскодирование, а организацию, запуск задач, их мониторинг и обработку ошибок.

В идеале на Windows, но Linux также может быть хорошо.

Обновление: я бы хотел, чтобы утилита / lib выполняла такие задачи на более высоком уровне. Отправлять несколько процессов, обрабатывать и сообщать о любых сбоях и т. Д.

Итак, в случае транскодирования мне бы хотелось, чтобы такая библиотека / утилита получала список файлов для транскодирования, а затем обрабатывала бы запуск транскодирования в нескольких потоках / процессах. Вы сможете определить, что делать при успешном завершении задания. И вы также сможете сделать это в случае сбоя.

Ответы [ 2 ]

0 голосов
/ 21 августа 2009

Если бы я собирался это сделать, я бы создал .NET-программу для просмотра каталога для входящих файлов, а затем на основе их типа файла запускает что-то вроде http://ffmpeg.org/ для преобразования видео в выходной каталог или для изображений используется что-то вроде ImageMagick .

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

0 голосов
/ 21 августа 2009

Командные оболочки (командная строка в Windows, sh / bash / csh и т. Д. В Unix) и языки сценариев могут тривиально выполнять одинаковые операции для всех файлов, соответствующих некоторому шаблону.

Например, в Windows 2000 или более поздней версии:

for %f in (*.jpg) do ... (например, вызовите imagemagick's convert для создания эскиза)

Чтобы получить справку for, в командной строке выполните for /?

Если вы хотите использовать параллелизм, например, раскрутите шесть одновременно, чтобы использовать все шесть ядер вашего процессора, затем вы можете использовать программу unix 'make', которая также доступна в Windows. Вы должны создать Makefile, указывающий, что вы хотите сделать, и выполнить make с помощью переключателя - jobs

Альтернативой подходу make для параллелизма является использование языка сценариев. Многие языки сценариев легко поддерживают запуск нескольких дочерних процессов, например Python Popen () .

...