Я вижу, что есть -threads <count>
параметр командной строки в ffmpeg. Каково значение этого параметра по умолчанию?
Сколько потоков использует ffmpeg по умолчанию?
5 ответов
Это зависит от используемого кодека, версии ffmpeg и количества ядер процессора. Иногда это просто один поток на ядро. Иногда это сложнее, как:
с libx264 это ядра x 1.5 для фреймовых потоков и ядра x 1 для слайсовых потоков.
по состоянию на 2014 год, он использует оптимальное число.
вы можете проверить это на многоядерном компьютере, изучив загрузку процессора (Linux:top
, Windows: диспетчер задач) с различными параметрами для ffmpeg:
-threads 0
(оптимальный);-threads 1
(однопоточный);-threads 2
(2 потока, например, для Intel Core 2 Duo);none (по умолчанию, также оптимальный.)
2015 редактировать: на 12-ядерном процессоре некоторые команды ffmpeg имеют Linux top
показывает не более 200% cpu (только 2 ядра), независимо от того, какое число дано -threads
. Таким образом, значение по умолчанию все еще может быть оптимальным в смысле "так хорошо, как этот двоичный файл ffmpeg может получить", но не оптимальным в смысле "полного использования моего процессора leet."
в 2015 году на Ubuntu 14.04 с ffmpeg 0.8.10-6, он использовал 1 ядро на 4 ядра системы.
htop
показал это; только одно ядро было использовано, и я получил коэффициент конверсии 16 кадров в секунду для видео FullHD.
используя -threads 4
сделал все мои ядра процессора идут на 100%, и я получил коэффициент конверсии 47 кадров в секунду.
я использовал следующую команду:
$ ffmpeg -i foo.mp4 -y -target pal-dvd -aspect 16:9 dvd-out.mpg
Если вы включили резьбы, назначили 1,5 х Количество ядер.
играя с некоторыми преобразования в CentOS 6.5 VM (Ryzen 1700 8c / 16t-vm назначен 12 из 16 ядер) делает некоторые стандартные def (480p) фильмы сетчатой следующее:
вариант потока / конверсионный курс (ФПС @ 60 секс) (нет / по умолчанию) / 130fps -потоки 1/70fps -нити 2/120 кадров в секунду -потоки 4/185fps -нити 6/228fps -нити 8/204fps - темы 10 / 181fps
интересная часть была загрузка процессора (с помощью htop, чтобы посмотреть его). Используя вариант никак-резьб заведенный вверх на ряде 130fps с распределением нагрузки по всем ядрам на низком уровне нагрузки. Используя 1 нить сделал именно это, загрузил одно ядро на 100%. Использование чего - либо еще привело к другой ситуации с распределенной нагрузкой.
Как вы можете видеть, есть также Точка уменьшения отдачи, поэтому вам придется настроить опцию-threads для вашей конкретной машины. Для моей установки, в частности, использование-threads 6 (на 12-ядерном компьютере) привело к лучшему FPS при преобразовании видео (от h264 до x264 с другим битрейтом для принудительного преобразования) и возвращает на самом деле уменьшилось больше потоков, которые я бросил в него.
Это тоже могла быть проблема с памятью - виртуальной машине было назначено только 1 ГБ. Я могу настроить это и посмотреть, изменится ли что-нибудь. Тем не менее, это показывает, что использование опции-threads может увеличить производительность, поэтому запустите некоторые тесты на вашей конкретной машине на разных уровнях, чтобы найти свое сладкое место.
Постоянная ссылка на данную страницу: [ Скопировать ссылку | Сгенерировать QR-код ]