avconv на декількох потоках


9

Чи можна запускати завдання на декількох процесорах або потоках, щоб пришвидшити avconv?
Чи є якась функція, якщо не цікаво, чому?

Відповіді:


11

Ви користуєтесь опцією -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 важливих пунктів:

  1. Цей параметр матиме ефект лише в тому випадку, якщо обраний кодек підтримує багатопотоковість
  2. Можна встановити кількість потоків для окремих потоків, а не просто намагатися налаштувати глобальну нитку

1
Виправте мене, якщо у вас є джерело протилежного, але я маю враження, що Avconv і avplay як і раніше використовують auto -threads як за замовчуванням, якщо не вказано інше. Здається, системний монітор підкріплює це.
Старійшина Гік

1
Я вважаю, що це залежить від кодека, який використовується для перекодування. Це можна було б формально перевірити, що, безумовно, зробить цікавим тестом. Інформація, яку я міг би знайти в Інтернеті, не особливо корисна. Іншим питанням буде версія FFmpeg, яка використовується, параметри потоків використовуються по-різному в старих версіях ...
andrew.46

1
Так. FFmpeg і avconv пішли в дещо різних напрямках з часу розщеплення. Подальше дослідження показує, що -threads auto є типовим для avconv, якщо ви використовуєте одну з пресетів у командному рядку.
Старійшина Гік

3

Якщо ви робите перекодування аудіо багатьох файлів, погляньте на використання 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
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.