Самый быстрый способ преобразовать большую сумму FLACs к MP3s

Сначала необходимо захватить понятие структурного программирования. Я начал программировать в ОСНОВНОМ с очень хорошей книгой, которая запустилась с объяснения структурного программирования, понятия циклов, решений, и так далее прежде, чем идти в первое "привет мир".

После этого, было легко переключиться на Ассемблер, Паскаля, Oberon, C, жемчуг и удар (все процедурные).

Если Вы планируете стать SysAdmin (иначе системный программист) - Python, жемчуг, удар в порядке. Немного понимания C не будет вредить, также.

2
21.06.2013, 08:39
3 ответа

В зависимости от структуры каталогов (действительно ли данные являются плоскими?) Вы могли ударить многих pacpl параллельно. Это делает разумное задание при сохранении тегов при преобразовании.

Это не использует GPU, но с некоторым распараллеливанием необходимо смочь использовать несколько ядер (диск мог бы стать узким местом).

3
27.01.2020, 21:57
  • 1
    находки плоское значение один каталог? Нет, это все вкладывается в нескольких каталогах. Я хотел бы смочь сохранить те каталоги или написать сценарий каталогов, в которые они помещаются от regexes на тегах. –  switz 21.06.2013, 02:00
  • 2
    @switz - это - то, под чем я подразумевал плоский, yah. Так w/pacpl Вы должен быть в порядке. –  tink 21.06.2013, 02:06

Хорошо, таким образом, это - на самом деле несколько проблем.

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

Вот очень простой пример в zsh:

for f in *flac; do
    sox $f ${f%%.flac}.mp3 & 
done

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

Теперь, сохранение отмечает, другая вещь, я, вероятно, запустил бы с SoX и видел бы, может ли это помочь Вам. В противном случае я использовал бы metaflac для дампа данных в небольшой сценарий, который установит мои теги MP3 (моя любимая программа для этого является eyeD3). Они должны быть "переведены" собой, поскольку FLAC отмечает (которые являются на самом деле просто комментариями Vorbis) к тегам ID3.

Что-то вроде этого:

for f in *flac; do
    eyeD3 -a $(metaflac --show-tag-name=ARTIST $f) ${f%%.flac}.mp3
done

Это - конечно, всего один тег, и т.д., это только для демонстрации. Вы могли объединить оба отрывка, конечно.

Однако я не могу помочь Вам с оптимизацией проблемы быть решенными GPU. Я не вполне вижу, как это помогло бы многому, поскольку GPU оптимизированы для векторного вычисления.

2
27.01.2020, 21:57
  • 1
    Если бы Вы хотите обработать много объектов через несколько ядер, чем я рекомендовал бы использование xargs -P n где n является количеством ядер в Вашей системе. Исчерпывание 1 000 с параллельных процессов с амперсандом замедлит все. Лучше к ls *.flac |xargs -P 8 -I{} nice my_command {}. –  PP. 21.06.2013, 14:28
  • 2
    @PP. Честно говоря, я не абсолютно уверен, что более важная задача под рукой. Я предположил, что параллельная оптимизация является менее важной вещью, сохранение тегов, кажется, более важно для меня. –  polemon 22.06.2013, 07:56

Я не использовал этот инструмент, но он походит на то, что Вы ищете. Это назвало flac2all. Конкретно этот маркер:

  • Обнаружение ЦП/ядра, для автоматического выбора # потоков.

Использование

flac2all.py with "-h" to get an overview, like so:

Usage: 
flac2all [convert type] [input dir] <options>
where 'convert type' is one of:
         [mp3]: convert file to mp3
         [vorbis]: convert file to ogg vorbis
         [flac]: convert file to flac
         [aacplusnero]: (NO TAGGING SUPPORT) convert file to aacplus using the proprietery (but excellent) Nero AAC encoder.

Options:
  -h, --help            show this help message and exit
  -c, --copy            Copy non flac files across (default=False)
  -v OGGENCOPTS, --vorbis-options=OGGENCOPTS
                        Colon delimited options to pass to oggenc,for example:
                        'quality=5:resample 32000:downmix:bitrate_average=96'.
                        Any oggenc long option (one with two '--' in front)
                        can be specified in the above format.
  -l LAMEOPTS, --lame-options=LAMEOPTS
                        Options to pass to lame, for example:
                        '-preset extreme:q 0:h:-abr'. Any lame option can be
                        specified here, if you want a short option (e.g. -h),
                        then just do 'h'. If you want a long option (e.g. '--
                        abr'), then you need a dash: '-abr'
  -a AACPLUSOPTS, --aacplus-options=AACPLUSOPTS
                        AACplus options, currently only bitrate supported.
                        e.g: " -a 64 "
  -o DIR, --outdir=DIR  Set custom output directory (default='./')
  -f, --force           Force overwrite of existing files (by default we skip)
  -t THREADS, --threads=THREADS
                        How many threads to run in parallel (default:
                        autodetect [found 2 cpu(s)] )
  -n, --nodirs          Don't create Directories, put everything together

Демонстрационное видео

Существует даже видео на YouTube, демонстрирующем это насыщающий 16 базовых систем, названных: flac2all, насыщающий 16 машин ЦП (двойной четырехъядерный + HT).

0
27.01.2020, 21:57

Теги

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