Сегодня я провел несколько тестов на своем локальном компьютере, чтобы проверить загрузку процессора с несколькими процессами ffmpeg.Я нашел следующую команду в Интернете, и пока она работает прилично, она кодирует в flv, уменьшает размеры файлов без заметной разницы в качестве.Я почти ничего не знаю о ffmpeg, так что, возможно, команда - полная хрень (пожалуйста, дайте мне знать, если это так).Одна проблема в том, что он не поддерживает потоки в ffmpeg, но я думаю, что это может быть кодеком.
ffmpeg -i explanation-ace-2-3.mp4 -ab 96k -ar 22050 -qscale 6 output3.flv
Я использовал top -b -d 0.5
с интервалом в полсекунды для измерения загрузки процессора и сделал grep Cpu
для получения соответствующей информации.Файлы имели размер около 150 МБ и были закодированы той же командой ffmpeg.Я позволил процессу немного запуститься перед запуском нового, и вот мои результаты:
1 FFMPEG | **0.84mbs/sec**
- 306.31 secs - 5:06
Cpu(s): 23.6%us, 2.9%sy, 73.6%id
Cpu(s): 23.7%us, 2.4%sy, 73.9%id
Cpu(s): 23.6%us, 1.9%sy, 74.5%id
2 FFMPEG | 1.6 mbs/sec
- 319.25 secs - 5:18
- 319.04 secs - 5:18
Cpu(s): 45.9%us, 4.4%sy, 49.8%id
Cpu(s): 45.0%us, 5.7%sy, 49.3%id
Cpu(s): 42.9%us, 8.3%sy, 48.8%id
3 FFMPEGs | **2.23 mbs/sec**
- 344.72 secs - 5:44
- 342.12 secs - 5:42
- 340.39 secs - 5:40
Cpu(s): 68.8%us, 7.3%sy, 23.9%id
Cpu(s): 70.9%us, 6.9%sy, 22.2%id
Cpu(s): 66.0%us, 9.9%sy, 24.1%id
4 FFMPEGs | **2.69 mbs/sec**
- 379.36 secs - 6.32
- 379.70 secs - 6.33
- 380.89 secs - 6.35
- 378.14 secs - 6.30
Cpu(s): 88.2%us, 11.8%sy, 0.0%id
Cpu(s): 87.7%us, 12.3%sy, 0.0%id
Cpu(s): 89.7%us, 10.3%sy, 0.0%id
5 FFMPEGs | **2.61 mbs/sec**
- 459.79 secs - 7.66
- 469.03 secs - 7.82
- 448.15 secs - 7.47
- 458.62 secs - 7.64
- 489.47 secs - 8.16
Cpu(s): 93.1%us, 6.4%sy, 0.0%id
Cpu(s): 88.7%us, 11.3%sy, 0.0%id
Cpu(s): 92.2%us, 7.8%sy, 0.0%id
Основываясь на данных, конвертирование видео по одному является грубым при использовании ресурсов, также процессы ffmpeg довольно стабильныМинус пара шипов.4 экземпляра ffmpeg, по крайней мере для моей машины, кажутся наиболее эффективными.
Кажется, у меня возникают проблемы при запуске двух процессов ffmpeg параллельно, используя Thread
или fork
, используя системную команду.1014 * У кого-нибудь есть мысли по этому поводу?Особенно, как запустить два процесса ffmpeg, используя скрипт Ruby?