Чи можна запускати завдання на декількох процесорах або потоках, щоб пришвидшити avconv?
Чи є якась функція, якщо не цікаво, чому?
Чи можна запускати завдання на декількох процесорах або потоках, щоб пришвидшити avconv?
Чи є якась функція, якщо не цікаво, чому?
Відповіді:
Ви користуєтесь опцією -threads від avconv. Найбезпечнішим параметром буде:
-threads auto
але ви також можете встановити там ціле число, якщо хочете трохи експериментувати. Сучасний FFmpeg (тепер це стандарт в Ubuntu) встановлює це auto
за замовчуванням, як це видно в цьому розділі чоловічої сторінки 'ffmpeg-all':
threads integer (decoding/encoding,video)
Set the number of threads to be used, in case the selected
codec implementation supports multi-threading.
Possible values:
auto, 0
automatically select the number of threads to set
Default value is auto.
Примітка 2 важливих пунктів:
Якщо ви робите перекодування аудіо багатьох файлів, погляньте на використання GNU Parallel. Він буде приймати список файлів як вхідних даних та обробляти їх паралельно залежно від кількості ядер у вашій системі. Наприклад, ось приклад bash, який буде перетворювати музику в аудіо формат opus паралельно за допомогою ffmpeg.
find ./* -depth -type f -name \*.ogg -o -name \*.flac -o -name \*.m4a -o -name \*.mp3 -o -name \*.ogg | parallel -j+0 --gnu nice -n 19 ffmpeg -i "{}" -acodec libopus "{.}.opus" -loglevel quiet