Видеофайл слишком большой? Используйте FFmpeg, чтобы сжать его без потерь!
Видеофайл слишком большой? Используйте FFmpeg, чтобы сжать его без потерь!

Если мы часто снимаем видео, то столкнемся с дилеммой: видеофайлы слишком велики и требуют много места для хранения. Если вы напрямую используете инструмент сжатия видео для сжатия битрейта, вы будете беспокоиться о потере качества видео. Что делать?

В настоящее время мы можем использовать функцию кодирования hevc ffmpeg для достижения сжатия без потерь!

Что такое FFmpeg?

FFmpeg — известная в отрасли программа обработки изображений и видео с открытым исходным кодом. Он широко используется во многих программах для редактирования видео и обработки изображений, а также в программах для вещания, таких как OBS.

Что такое кодирование HEVC?

Среди форматов MP4, которые мы обычно используем, обычно используется формат кодирования H.264. Он был официально выпущен в 2003 году и широко используется в различных случаях.

Десять лет спустя, в 2013 году, была официально выпущена кодировка HEVC. HEVC — это аббревиатура высокоэффективного видеокодирования, также известная как H.265. По сравнению с H.264 он имеет более высокую степень сжатия. При одинаковом качестве изображения формат кодирования HEVC может сэкономить от 25% до 50% дискового пространства. Поэтому для видеофайлов, размер которых зачастую составляет несколько ГБ, для архивирования и хранения целесообразнее использовать кодировку HEVC.

Каковы недостатки формата кодирования HEVC?

По сравнению с H.264, формат кодирования HEVC требует больше аппаратных ресурсов в процессе кодирования и декодирования. Грубо говоря, скорость ниже. Поэтому, если на вашем компьютере нет хорошей видеокарты с поддержкой аппаратного ускорения формата HEVC, ваше видео будет сжиматься с очень медленной скоростью, и при воспроизведении могут возникнуть задержки.

А поскольку формат HEVC не так популярен, как H.264, история которого насчитывает почти 20 лет, некоторые программы воспроизведения не могут его воспроизвести. Но в ближайшем будущем эта проблема перестанет быть проблемой.

Тогда приступим!

Установить FFmpeg

первый,мы открываемFFmpegофициальный сайтhttps://ffmpeg.org Затем нажмите кнопку «Загрузить», чтобы перейти на страницу загрузки и загрузить соответствующую версию. Затем установите его на свой компьютер. Windows также необходимо добавить каталог установки в переменные среды.

Использование FFmpeg

FFmpeg — это программа, имеющая только интерфейс командной строки, поэтому запускать ее нужно в консоли вашего компьютера.

Советы по Windows

В Windows нажмите Win+R на клавиатуре, а затем введите cmd, чтобы открыть интерфейс командной строки.

Посмотреть справочный интерфейс FFmpeg

Введем в консоли следующую команду:

Язык кода:javascript
копировать
ffmpeg -h

Затем ffmpeg выведет справочную информацию. Поскольку информация на английском языке, чтобы ее прочитать, потребуется немного терпения. Вот два справочных сообщения, связанных с нашими целями:

Это информация о кодере и декодере, а затем мы можем ввести следующий код, чтобы просмотреть параметры кодера и декодера соответственно:

Язык кода:javascript
копировать
ffmpeg -decoders
Язык кода:javascript
копировать
ffmpeg -encoders
Язык кода:javascript
копировать
ffmpeg -codecs

Мы обнаружим, что выводится куча информации, которая нас ослепляет. Да, FFmpeg очень мощный и поддерживает множество кодеков.

Начнем сжимать!

Для сжатия мы используем библиотеку libx265 FFmpeg, для чего требуется всего несколько простых шагов:

По соображениям безопасности мы сначала копируем видео, которое нужно сжать, в новую папку, чтобы предотвратить потерю данных из-за неправильной эксплуатации. Затем откройте консоль в новой папке (под Windows для входа в соответствующую папку нужно использовать команду cd).

Затем мы создаем новую папку в папке с названием «Вывод». Видео, которое мы выведем позже, будет храниться в этой папке.

На данный момент папка должна выглядеть так:

Далее давайте изучим, как использовать ffmpeg для сжатия видео.

Самый простой пример

Мы можем использовать следующий формат команды для выводаВизуально без потерьвидео:

Язык кода:javascript
копировать
ffmpeg -i Введите имя файла -c:v libx265 -x265-params crf=18 имя выходного/выходного файла.mp4

Для файла на рисунке выше команда выглядит следующим образом:

Язык кода:javascript
копировать
ffmpeg -i demo.mp4 -c:v libx265 -x265-params crf=18 output/demo_1.mp4

Затем, после периода ожидания, мы видим результаты!

Слева — исходное видео, справа — сжатое видео. Мы видим, что это экономит 29,6% места! Более того, после моего тестирования визуально качество изображения двух видеороликов практически одинаковое.

Для более продвинутого сжатия

Здесь мы объясним значение вышеуказанных настроек параметров. crf — константа Rate аббревиатура фактора,Чем меньше его значение, тем выше качество изображения и тем больше места оно занимает.Его варианты:0~51,По умолчанию — 28. Когда crf ниже 20.,Это может обеспечить отсутствие визуальных потерь.

также,FFmpeg также предоставляет нам некоторые предустановленные параметры. Мы можем быстро установить параметры, используемые при кодировании x265, с помощью предустановленной опции.

Параметры предустановок расположены в порядке от быстрой до медленной скорости кодирования следующим образом:

  • ultrafast
  • superfast
  • veryfast
  • faster
  • fast
  • medium
  • slow
  • slower
  • veryslow
  • placebo

Чем медленнее скорость кодирования, тем лучше эффект сжатия и качество изображения. Параметр по умолчанию для предустановленной опции — средний.

Вывод видео без визуальных потерь с максимальным эффектом сжатия

Язык кода:javascript
копировать
ffmpeg -i Введите имя файла -c:v libx265 -x265-params crf=18:preset=placebo имя выходного/выходного файла.mp4

Для видео выше мы можем использовать следующую команду сжатия:

Язык кода:javascript
копировать
ffmpeg -i demo.mp4 -c:v libx265 -x265-params crf=18:preset=placebo output/demo_2.mp4

Сравнение размеров до и после сжатия выглядит следующим образом:

Хотя на этот раз размер уменьшен всего на 13,1%, при просмотре видео невооруженным глазом очевидно, что качество видео ничем не отличается от исходного видео.

Рассчитанное таким образом видео размером 1 ГБ может сэкономить 131 МБ пространства при использовании сжатия без потерь высочайшего качества! Все равно очень впечатляет!

Пакетное сжатие видео

Поскольку описанный выше метод может сжимать видео только одно за другим,Для этого я просто написалpythonСкриптДля завершения функции автоматического сжатия всех видео в папке。

После установки Python и ffmpeg на ваш компьютер,Вы можете запустить этоСкрипт。Затем,существоватьСкриптМестосуществоватьизпапка Создано подinputпапки иoutputпапка。и сжатьвидеоместосуществоватьinputпапка Вниз。бегатьpythonСкриптпосле,начну сжимать видео,Выходные файлы помещаются в выходную папку.

СкриптЯ загрузил его на GitHub:https://github.com/fslongjin/Utility-gadgets/tree/main/cv/batch_transcode2HEVC

Заключение

FFmpeg очень мощный и выходит далеко за рамки сжатия видео. Его функции еще предстоит изучить. Заинтересованные студенты могут проверить официальные документы и учебные пособия на официальном сайте FFmpeg, чтобы получить больше знаний ~

ПерепечаткаПожалуйста, укажитеисточникhttps://longjin666.cn/?p=1443

boy illustration
Неразрушающее увеличение изображений одним щелчком мыши, чтобы сделать их более четкими артефактами искусственного интеллекта, включая руководства по установке и использованию.
boy illustration
Копикодер: этот инструмент отлично работает с Cursor, Bolt и V0! Предоставьте более качественные подсказки для разработки интерфейса (создание навигационного веб-сайта с использованием искусственного интеллекта).
boy illustration
Новый бесплатный RooCline превосходит Cline v3.1? ! Быстрее, умнее и лучше вилка Cline! (Независимое программирование AI, порог 0)
boy illustration
Разработав более 10 проектов с помощью Cursor, я собрал 10 примеров и 60 подсказок.
boy illustration
Я потратил 72 часа на изучение курсорных агентов, и вот неоспоримые факты, которыми я должен поделиться!
boy illustration
Идеальная интеграция Cursor и DeepSeek API
boy illustration
DeepSeek V3 снижает затраты на обучение больших моделей
boy illustration
Артефакт, увеличивающий количество очков: на основе улучшения характеристик препятствия малым целям Yolov8 (SEAM, MultiSEAM).
boy illustration
DeepSeek V3 раскручивался уже три дня. Сегодня я попробовал самопровозглашенную модель «ChatGPT».
boy illustration
Open Devin — инженер-программист искусственного интеллекта с открытым исходным кодом, который меньше программирует и больше создает.
boy illustration
Эксклюзивное оригинальное улучшение YOLOv8: собственная разработка SPPF | SPPF сочетается с воспринимаемой большой сверткой ядра UniRepLK, а свертка с большим ядром + без расширения улучшает восприимчивое поле
boy illustration
Популярное и подробное объяснение DeepSeek-V3: от его появления до преимуществ и сравнения с GPT-4o.
boy illustration
9 основных словесных инструкций по доработке академических работ с помощью ChatGPT, эффективных и практичных, которые стоит собрать
boy illustration
Вызовите deepseek в vscode для реализации программирования с помощью искусственного интеллекта.
boy illustration
Познакомьтесь с принципами сверточных нейронных сетей (CNN) в одной статье (суперподробно)
boy illustration
50,3 тыс. звезд! Immich: автономное решение для резервного копирования фотографий и видео, которое экономит деньги и избавляет от беспокойства.
boy illustration
Cloud Native|Практика: установка Dashbaord для K8s, графика неплохая
boy illustration
Краткий обзор статьи — использование синтетических данных при обучении больших моделей и оптимизации производительности
boy illustration
MiniPerplx: новая поисковая система искусственного интеллекта с открытым исходным кодом, спонсируемая xAI и Vercel.
boy illustration
Конструкция сервиса Synology Drive сочетает проникновение в интрасеть и синхронизацию папок заметок Obsidian в облаке.
boy illustration
Центр конфигурации————Накос
boy illustration
Начинаем с нуля при разработке в облаке Copilot: начать разработку с минимальным использованием кода стало проще
boy illustration
[Серия Docker] Docker создает мультиплатформенные образы: практика архитектуры Arm64
boy illustration
Обновление новых возможностей coze | Я использовал coze для создания апплета помощника по исправлению домашних заданий по математике
boy illustration
Советы по развертыванию Nginx: практическое создание статических веб-сайтов на облачных серверах
boy illustration
Feiniu fnos использует Docker для развертывания личного блокнота Notepad
boy illustration
Сверточная нейронная сеть VGG реализует классификацию изображений Cifar10 — практический опыт Pytorch
boy illustration
Начало работы с EdgeonePages — новым недорогим решением для хостинга веб-сайтов
boy illustration
[Зона легкого облачного игрового сервера] Управление игровыми архивами
boy illustration
Развертывание SpringCloud-проекта на базе Docker и Docker-Compose