по-быстрому пережать видос (максимально быстро из доступного дома)

Posted: 2018-07-07 in IT, Software
Метки:,

Задача — быстренько пережать видосы (видео -> h264, звук -> mp3), например, чтобы смотреть их на старой хумаксовской приставке (не умеющей mp4a / ogg в звуке), где-нибудь на даче. У «Твое ТВ» как раз такая приставка.

Волшебные ингридиенты: Fedora 28 x64, nvidia-driver-390.67, ffmpeg 4.x, доброкарта GTX 1070, проц не совсем тухлый.

Собственно магия:
ffmpeg -i input_file.avi -c:v h264_nvenc -acodec mp3 -vcodec h264_nvenc output_file.avi

И на скорости в несколько десятков раз выше скорости воспроизведения быстренько получаем наши видосы в новом формате.
Вывод будет примерно такой:

frame=13720 fps=1578 q=33.0 Lsize= 147246kB time=00:09:31.83 bitrate=2109.4kbits/s speed=65.8x

Добро-девайсина 1070 от этого даже не потеет — GPU_Util 7-12%, VideoEngine Util — 35-45%.

Если надо понизить качество (генерация превьюшек):
ffmpeg -i input_file.avi -c:v h264_nvenc -acodec libvorbis -ab 64k -vcodec h264_nvenc -b:v 100k -vf scale=240:-1 output1_gpu.avi
Тут мы делаем ширину видео 240 точек, битрейт видео режем до 100к, звук конвертим в OGG с низким битрейтом (64к на звук, аудиофилов предварительно убрать от монитора).

Для подобной конвертации на процессоре делаем так:
ffmpeg -i input1.flv -vf scale=240:-1 -acodec libvorbis -ab 64k output2_cpu.avi

Ещё интересности:
https://habr.com/en/post/262507/
https://habr.com/en/post/262563/
https://developer.nvidia.com/ffmpeg

P.S. при очень низких битрейтах аппаратный GPU-кодек можно заметно сильнее упороть видео, чем софтварный. Тут каждый сам выбирает отношение скорости, размера и качества, благо комбинаций настроек тут необъятно.

Для работы всего этого счастья надо поставить nvidia-драйвер и CUDA Toolkit. Если у вас драйвер уже стоит, и он сильно новее, чем то, то идёт с CUDA-тулкитом, то в инсталлере тулкита снимаете опции, относящиеся к драйверу, оставляете только CUDA ! Примеры и документация тоже не нужны, если только вы не пишите код для GPU.

Обсуждение закрыто.