Перегрев процессора с помощью HandBrakeCLI - PullRequest
0 голосов
/ 29 февраля 2020

Я недавно начал использовать HandBrake для обработки некоторых загруженных видео, чтобы сделать их легче. Я создал небольшую python GUI программу для автоматизации обработки, используя версию CLI. Что я делаю, так это генерирую команду в соответствии с видео и выполняю ее с помощью os.system. Примерно так:

import os

def process(args):
    #some algorithm to generate cmd using args
    cmd = "handbrakecli -i raw_video.mp4 -o video.mp4 -O -e x264" #example command
    os.system(cmd)
    os.remove("raw_video.mp4")

Код отлично работает , но проблема заключается в чрезмерном использовании моего процессора. Обычно это занимает 100% загрузки процессора в течение значительного периода времени. Я использую программу CoreTemp для отслеживания температуры моего процессора и, как правило, она достигает 78 ° C.

Я пытался использовать BES (Battle Encoder Shirase), сохраняя команду cmd в пакетный файл с именем exe c .bat и делает os.system("BES_1.7.7\BES.exe -J -m exec.exe 20"), но это просто ничего не делает.

Скорость вообще не важна . Даже если это займет больше времени, я просто хочу использовать меньше своего процессора, что-то около 50% было бы здорово. Есть идеи, как мне это сделать?

1 Ответ

1 голос
/ 29 февраля 2020

В Handbrake вы можете передавать расширенные параметры, чтобы использовать только определенное количество потоков ЦП.

Вы можете использовать threads, просмотреть документацию CLI Handbrake

При использовании threads вы можете указать любое количество процессоров для использования. По умолчанию auto.

Параметр -x обозначает Расширенные настройки в GUI Ручного тормоза, где threads будет go.

. Ручной тормоз для использования только одного потока CPU для расширенной настройки:

 -x threads=1

Вы также можете использовать veryslow для настройки --encoder-preset, чтобы помочь загрузке процессора.

--encoder-preset=veryslow

Я на самом деле предпочитаю использовать пресет --encoder-preset=veryslow, так как я вижу общее лучшее качество в кодировке.

И то и другое вместе:

--encoder-preset=veryslow -x threads=1

Отформатировано с помощью переменной cmd:

cmd = "handbrakecli -i raw_video.mp4 -o video.mp4 -O -e x264 --encoder-preset=veryslow -x threads=1" #example command

Посмотрите, поможет ли это.

...