FFmpeg: бесплатный видеоконвертер из командной строки

В этом видео я покажу, как сжать видео без потери качества и уменьшить размер видеофайла в 100 раз. Мы разберем, что такое FFmpeg, чем этот бесплатный видео конвертер лучше привычных программ (например, HandBrake) и как пользоваться командной строкой для обработки видео.

*https://www.youtube.com/watch?v=AoV4tmf4x-c
**https://300.ya.ru/summary

таймкоды

00:00:00 Введение

  • Приветствие и поздравление с Новым годом.
  • Объяснение темы видео: конвертация видео с помощью командной строки.
  • Упоминание о полезности и простоте процесса.

00:00:51 Примеры использования

  • Примеры ситуаций, когда конвертация видео полезна: отправка большого файла через VPN, проблемы с воспроизведением аудиофайлов.
  • Сравнение с программами для конвертации, такими как Handbreak.

00:01:50 Преимущества командной строки

  • Недостатки бесплатных программ для конвертации: возможность перехода на платные версии или прекращение поддержки.
  • Преимущества работы с командной строкой: полный контроль над процессом и простота использования.

00:02:41 Установка FFmpeg

  • Инструкция по скачиванию и установке FFmpeg для Windows.
  • Создание постоянной папки для утилит и настройка переменных среды.

00:04:36 Настройка переменных среды

  • Изменение системных переменных среды для корректной работы FFmpeg.
  • Проверка правильности настройки путём ввода команды.

00:05:35 Конвертация MXF в MP4

  • Объяснение процесса конвертации: экспорт видео в широком формате, затем конвертация в MP4.
  • Использование команды ffmpeg для конвертации.

00:06:30 Параметры конвертации

  • Настройка видеокодека libx264 и параметра CRF constant rate factor.
  • Объяснение работы CRF и его влияния на качество видео.

00:08:23 Завершение конвертации

  • Установка значения CRF на 23 для идеального соотношения качества и объёма.
  • Процесс конвертации занимает около 4 минут 37 секунд.
  • Битрейт устанавливается на уровне около мегабита.

00:09:14 Размер файла и качество

  • При разрешении 1080p размер файла составил 63 МБ.
  • При перекодировании в других программах размер был 221 и 153 МБ.
  • Исходный файл был размером 12 ГБ.
  • На глаз практически невозможно заметить ухудшение качества.

00:10:11 Команды для обработки видео

  • В командной строке можно указать фрагмент видео с помощью команд SS и TO.
  • Пресет определяет скорость обработки: slow — медленно, fast — быстро.
  • Выбор кодека H264 в 95% случаев.
  • Возможность выбора количества проходов и битрейта.

00:11:11 Дополнительные настройки

  • Фреймрейт можно оставить автоматическим.
  • Скорость видео и тон видео зависят от типа контента.
  • Профиль и уровень качества зависят от мощности оборудования.

00:12:08 Изменение разрешения и скейлинг

  • Разрешение 1080p означает 920×1080 пикселей.
  • Скейлинг важен при уменьшении разрешения.
  • Бикубическая интерполяция — золотая середина.

00:13:02 Настройки аудио

  • Выбор кодека, количества каналов и качества.
  • Битрейт лучше ставить не меньше 192 кбит/с.
  • Частоту дискретизации лучше не менять.
  • Фильтры, например, шумоподавление, лучше не использовать вслепую.

00:14:01 Эксперименты с параметрами

  • Увеличение цветности до 8 может привести к браку.
  • Увеличение скейлинга улучшает качество.
  • CRF может помочь уменьшить объём файла.

00:15:12 Заключение

  • Поверхностный взгляд на конвертацию видео с помощью командной строки.
  • Множество параметров и команд для углублённого изучения.
  • Возможность создания собственных скриптов для автоматизации процесса.
  • Поздравление с Новым годом и призыв оставаться на канале.

В этом видео

Эпизоды
Расшифровка видео
Вступление. Как бесплатно конвертировать видео
0:00
Канал TechTalk сердечно приветствует вас. Поздравляю всех с наступившим. Пока мои прогнозы
0:06
сбываются — это будет весёлый год. Первый ролик в этом году я решил посвятить теме видео, тем
0:13
самым как бы настраивая по меньшей мере себя на то, что этот год будет творческим. Пожелайте мне
0:20
закончить наконец фильм, который лежит у меня уже года четыре. Итак, сегодня мы разберемся с тем,
0:27
как с помощью командной строки переконвертировать видео: изменить формат, уменьшить объём,
0:34
изменить разрешение и тому подобное. Поверьте мне, это очень полезное и весьма простое действие,
0:40
а именно работа с командной строкой и набором утилит FFmpeg, сэкономит вам кучу времени.
0:52
Даже тем, кто думает, что ему это не нужно, я советую всё-таки это видео посмотреть.
0:57
Существуют банальные ситуации. Например, вы сняли видео на телефон, оно весит гигабайт,
1:04
и вам нужно его отправить другу, а вы сидите на мобильном интернете под VPN, поскольку обходите
1:10
«белые списки», а скорость там не айс. Или вам прислали аудиофайл в непонятном формате,
1:17
и ваш плеер его не открывает. Всё это решается буквально за минуту, если знать, куда тыкать.
Почему командная строка лучше программ (Сравнение с HandBrake)
1:25
Вот такую шпаргалку, например, я нашёл — тут всё удобно и подробно расписано, но для неискушенного
1:32
пользователя всё это представляется сущим адом. Кажется, что разобраться в этом невозможно,
1:38
поэтому большинство людей пользуются программами для конвертации видео,
1:42
благо что сейчас появилось какое-то количество бесплатных и даже Open Source-ных, например,
1:47
вот эта программа HandBrake. Но у всех бесплатных программ есть один существенный недостаток:
1:54
они рано или поздно становятся платными или их перестают поддерживать разработчики.
2:00
К несущественным недостаткам относится то, что, как бы они ни были сложны, они всё равно не дадут
2:06
вам того максимального контроля, который даёт командная строка при правильном её использовании.
2:12
И опять же, один раз научившись работать в командной строке, вы потом с ужасом будете
2:18
вспоминать, как крутили настройки в программах для конвертации. В принципе, всё, что я сейчас
2:23
накрутил бы в HandBrake, заменяется вот такой простой командой в командной строке. Единственное
2:30
— имя выходного файла надо подредактировать. А так — просто вставили команду, нажали Enter,
2:37
через 3 минуты получили готовый результат. А готовый результат в данном случае — это
2:43
получение из файла в формате MXF объемом 11 Гб файла в формате MP4 объёмом 100 Мб
2:51
без потери качества. То есть результатом является уменьшение объёма в 100 раз. Делается это просто,
2:58
но для этого, как и всегда бывает с командной строкой, нужно вначале
3:02
немного потанцевать с бубнами. Но в данном случае слово «немного» действительно означает немного.
Установка FFmpeg на Windows и настройка переменных среды
3:10
Для начала вам нужно скачать набор утилит FFmpeg. Ну то есть просто набираете «ffmpeg» в
3:17
Google или заглядываете в описание — там будет ссылка. Исходный код вам скачивать не нужно,
3:23
а нужно готовую сборку под вашу систему. Покажу под Windows (выбирайте вот это), под Linux и Mac
3:30
показывать не буду. Различается процесс только установкой, а рассказывать, как установить набор
3:36
утилит на Linux — это, наверное, лишнее. Поэтому для тех, кто не в «форточках», — сразу переходите
3:42
к следующему пункту, тайм-коды в описании. А те, кто в «форточках», соответственно,
3:47
находят скачанный архив, выглядит он вот так. Дальше его нужно разархивировать, положить,
3:54
в общем-то, можно в любую папку, но я вам советую создать на диске C постоянную папку
3:59
для всяких подобных утилит и прочего, что работает из командной строки, чтобы знать,
4:04
где это потом искать. Лучше не допускать пробелов в названии и всё писать латиницей. По сути, FFmpeg
4:12
теперь у нас в системе есть. Но работать он будет, только если вы находитесь в этой папке, а значит,
4:18
нам нужно прописать программу в пути, то есть в переменной среды. Набирайте в поиске «переменные
4:24
среды». Нам нужно вот это: «Изменение системных переменных среды». Для тех, кто никогда не работал
4:30
с командной строкой, это может показаться сложным, но это, наверное, единственная сложность. Тут
4:36
«Переменные среды», «Изменить», и нам нужно взять полный путь до программы ffmpeg.exe.
4:43
То есть в зависимости от того, куда вы её скачали, находите, здесь открываете папку bin и в адресе
4:51
нажимаете на свободное место — у вас появляется полный путь до этого файла. Копируйте его (то есть
4:58
Ctrl+C) и здесь «Создать» и Ctrl+V. Ну или можете написать руками — вам нужен полный путь до папки
5:06
bin. Дальше «ОК», «ОК» и «ОК». Теперь FFmpeg будет запускаться независимо от того, в какой папке
5:13
вы находитесь. Вот, если у вас появится такая тарабарщина при наборе команды -version, значит
5:20
всё правильно. Но, кстати, имейте в виду (это уже для тех, кто, наоборот, работает с командной
5:25
строкой), что в FFmpeg не работают двойные тире. У разработчиков тут своя логика. Всё, теперь у нас
5:31
всё готово. Вот файл на 11 с лишним гигабайт — это поздравление от Эмили с Новым годом.
5:38
Кстати, кто не видел — посмотрите, получилось душевно. Почему он такой большой? По опыту,
5:43
когда вы выгоняете из монтажной программы какое-то видео, если вы сразу ставите его в формате MP4 и
5:50
сразу поджимаете до нужного объёма, в динамичных сценах он может давать артефакты. А объём при
5:56
этом всё равно будет достаточно большим. Поэтому лично я выгоняю его сначала в широком формате,
6:02
а потом отдельно перегоняю в MP4. Артефакты пропадают, а объём удаётся уменьшить раза в
6:08
четыре по сравнению с тем, как если бы я перегонял его сразу в MP4. И сейчас мы, собственно,
Как пользоваться FFmpeg: пишем первую команду для конвертации
6:14
выполним второй шаг, а именно пережмём MXF в MP4. А для этого, находясь в той папке, где лежит файл
6:22
(для этого нам нужно кликнуть по адресной строке и набрать команду cmd.), так мы сразу попадём в
6:28
эту папку в командной строке. И набираем команду ffmpeg -i (то есть input) и имя входящего файла
6:36
(обращайте внимание на заглавные/прописные буквы). Дальше -c:v (то есть кодек видео),
6:43
тут надо написать просто libx264. Это значит, что кодек H.264, самый распространённый и
6:51
самый популярный на данный момент. Можете, конечно, экспериментировать с кодеками,
6:56
но на 95% H.264 покрывает все задачи. Дальше -crf, то есть Constant Rate Factor. Об этом,
7:05
пожалуй, нужно сказать два слова отдельно. Наверное, многие знают (ну или, по меньшей мере,
Что такое CRF и как сжать видео без потери качества (секреты битрейта)
7:11
догадываются), что качество видео определяется битрейтом, то есть объёмом информации,
7:18
передаваемой в секунду. Видео — это «цифра», и чем больше таких цифр описывают видео,
7:25
тем лучше качество. Но само видео при этом бывает разным. Чтобы описать рябь на воде, где в каждом
7:31
пикселе и в каждом кадре происходит изменение, нужно много цифр. Для того чтобы описать «Черный
7:38
квадрат» на белой стене, на который плавно наезжает камера, цифры практически не нужно.
7:44
Соответственно, когда вы выставляете битрейт (даже с минимальным и максимальным значением,
7:51
и неважно, в два прохода или в 10), вы всё равно не даете битрейту опуститься ниже планки в кадрах,
7:59
где попросту нечего передавать, и подняться выше планки в кадрах, где передаётся огромный объём
8:06
информации. Ну вот параметр CRF решает эту проблему. Когда вы говорите кодеку,
8:12
что вас не интересует битрейт, а вас интересует качество, оно должно быть постоянным,
8:18
независимо от того, сколько бит информации на это потребуется. Формально шкала CRF — от 0 до 50,
8:25
где 0 — это практически без сжатия (и вы получите огромный файл), а 50 — это максимальное сжатие,
8:32
при котором вы получите очень плохое качество. Но на практике рабочие значения — где-то от 18 до 28.
8:40
18 — это сравнительно большой файл с лучшим качеством, 28 — это сравнительно небольшой
8:46
с худшим качеством. Дальше решать вам. Поэтому CRF мы выставим 25. Даже нет, 23. Вообще
Результат сжатия: 11 Гб превращаем в 60 Мб
8:55
считается, что это магическое число, идеальное по соотношению «качество — объём». И теперь
9:01
имя выходного файла и Enter. Всё, процесс пошёл. Занял он 4 минуты 37 секунды для почти 9-минутного
9:10
ролика, битрейт он выбрал в районе мегабита. Это при разрешении 1080p. Файл в итоге получился на
9:18
63 Мб (при экспериментах в разных программах по перекодированию там было 221 и 153). Напомню,
9:26
что исходный файл был на 12 ГБ. На глаз увидеть, что качество ухудшилось, практически невозможно.
9:33
И тем более невозможно увидеть изменения качества по сравнению с другими пережатыми
9:38
файлами. Единственное, я бы сказал, что зря он тут выставил 126 кбит на аудио. Возможно,
9:45
это предвзятое отношение, но меньше 192 я бы не ставил. Ну и, собственно, возвращаемся к
Разбор шпаргалки команд FFmpeg для командной строки (пресеты, смена разрешения, кодеки, обработка аудио)
9:51
шпаргалке, с которой началось видео. Ссылку оставлю в описании. И теперь разберём её чуть
9:57
подробнее. Значит, у нас есть Input, то есть файл, который мы подаём. Вставляем название и видим,
10:03
как меняется строка с командами. Это Output. Вот тут, например, можно вырезать кусок из видео,
10:10
начало и конец, и опять же видите изменения в командной строке. Ну то есть на будущее можете
10:16
запомнить, что в командной строке можете написать -ss (то есть старт) и -to (то есть до) и получите
10:23
кусок с нулевой секунды до тридцатой. Ну или копируете отсюда и вставляете в командную строку.
10:28
Теперь чуть подробнее разберём другие команды, но не очень подробно, поскольку про каждую можно
10:34
снимать отдельное видео. Preset — это общая установка для компьютера, насколько кропотливо
10:40
нужно подходить к процессу. Slow (то есть медленно) — это значит, он будет напрягаться и
10:45
цифровать медленно, получив чуть лучший результат. Fast (быстро) — значит, напрягаться он будет
10:52
меньше и работать быстрее. Тут выбор кодека. В 95% случаев — H.264. Тут либо количество проходов (и
11:01
тогда вам нужно выставлять, какой будет битрейт), либо CRF. Об этом я рассказал. Buffer Size, GOP и
11:09
формат пикселя можете изучить отдельно. Особо дотошные считают, что от этого многое зависит,
11:14
но я не разделяю их взгляда. Frame rate, то есть количество кадров в секунду: можете оставлять
11:21
«авто», он оставит значение исходника, если вам по какой-то причине не нужно его изменить. Ещё раз:
11:28
все изменения, которые вы вносите здесь, добавляются в командную строку. Скорость видео,
11:34
тон видео — если у вас ярко выраженная анимация или слайд-шоу (то есть набор статических
11:40
изображений), это можно здесь указать. Во всех остальных случаях ставьте Film или Auto. Profile
11:47
и Level — это опять же про качество в зависимости от уровня вашего железа. Тоже можете почитать,
11:54
но в целом None позволит утилите самой выбирать параметры, и это вполне допустимо.
11:59
Faststart — по-моему, отживший параметр. Размер — это важно, если вам нужно изменить разрешение. Он
12:06
считается по нижней границе. 1080p — это значит разрешение 1920 на 1080, Full HD. Разрешение как
12:15
раз периодически приходится менять, и тут это делается так. Сейчас будет 720 на 480.
12:23
Формат — широкоэкранный, аспект. В принципе, здесь его не меняют, потому что он просто
12:28
изменит соотношение сторон, поломав геометрию. Но если почему-то вам это нужно, то здесь это можно
12:34
указать. И скейлинг — плюс-минус важный параметр, если вы уменьшаете видео по разрешению. То,
12:40
что мы сейчас как раз и делаем, уменьшив размер до 480p. Соответственно, Bicubic — это золотая
12:47
середина. Нижние три параметра сделают кадр резче, попытавшись проработать детали, но это
12:54
не всегда хорошо. Короче, выбирайте в зависимости от запросов и вашего личного опыта. Дальше аудио:
13:02
выбор кодека, количество каналов, и вот это важно — Quality, то есть качество. Как я уже говорил,
13:09
лучше ставить не меньше 192, то есть битрейт 192 килобита в секунду. Частоту дискретизации
13:16
лучше не менять здесь, а на монтаже. Хотя и на монтаже лучше не менять, если вы не
13:22
звукорежиссёр. Дальше тут есть всяческие фильтры, например удаление шума. Но вот тут я бы вам совсем
13:29
не советовал вслепую что-то накручивать. Добавим цветность в качестве эксперимента, но результат
13:35
с большой долей вероятности будет не идеальным. И тут всякие дополнительные параметры, это, мне
13:40
кажется, уже совсем от лукавого, поэтому я сюда даже не заглядывал. Всё, теперь копируем команду,
13:46
вставляем в командную строку, нажимаем Enter. Название выходного файла только поменяем. Ага,
13:53
есть, говорит, такой файл. Я их тут навыгонял уже в качестве эксперимента кучу. Ладно, значит,
13:59
перезаписать. Всё, процесс пошел. На выходе мы получили… достаточно большой по объему файл,
14:05
кстати, для 480p. И… да. Это, собственно, брак. Вот что получается, если накрутить цветность
14:13
до 8 вслепую. Тогда можно либо удалить вот этот параметр (но не удалите случайно вторые кавычки),
14:20
либо вот здесь убрать saturation. Так, кстати, лучше, чтобы ничего не напутать с пунктуацией.
14:26
Ну и давайте попробуем увеличить скейлинг. Опять копируем, вставляем. Поменяем имя выходного файла.
14:34
Enter. Вот. По объему идеально, 29 Мб, а вот 248 килобит в секунду на видео в 480p — мне кажется,
14:45
маловато. Хотя тут может быть магия CRF. У меня в исходном видео минуты три в конце висит просто
14:51
белый квадрат. На него он мог вообще не тратить битрейт, таким образом уменьшив общий объем. Ну,
14:58
в общем, смотрите сами. Я бы на 480p в таком случае ставил CRF в районе 15. Хотя картинка
15:05
вполне сносная для разрешения 720 на 480. Ну вот, вообще это весьма поверхностный взгляд
Итоги: ваш собственный бесплатный видео конвертер
15:15
на конвертацию видео с помощью командной строки. Углубившись в изучение темы,
15:20
вы найдёте кучу всяких параметров и команд, полезных и не очень, но даже этого поверхностного
15:27
взгляда достаточно, чтобы научиться просто и качественно конвертировать видео и аудио из
15:34
формата в формат, поджимать его, накладывать фильтры и так далее. При этом сами команды,
15:40
особенно когда вы найдёте свой «золотой стандарт», станут в общем-то однотипными, их можно просто
15:46
копировать и вставлять потом целиком, меняя просто название входного и выходного файлов.
15:52
Или можно понаписать собственные короткие скрипты. Ну, в общем, дальше уже всё в ваших руках, и это,
15:59
в отличие от внешних программ, у вас уже никто и никогда не отнимет. Дерзайте. Еще раз поздравляю
16:06
всех с Новым годом. И всё-таки не фигово год начался. Оставайтесь с нами, ставьте лайки,
16:12
подписывайтесь на канал, ну и любите друг друга, теперь это просто жизненно необходимо. И помните:
16:17
в конечном итоге всё будет хорошо. Это говорю вам я, Вова Ломов и канал TechTalk.

Поделиться: