Настройте аудиоинструмент с открытым исходным кодом FFmpeg в Linux/Mac/Windows, чтобы легко выполнять перекодирование видео, микширование звука и другие операции — Космическая станция Yuyue
Настройте аудиоинструмент с открытым исходным кодом FFmpeg в Linux/Mac/Windows, чтобы легко выполнять перекодирование видео, микширование звука и другие операции — Космическая станция Yuyue

Автор: Свернуть

блог:https://www.mintimate.cn Облачное сообщество Tencent:https://cloud.tencent.com/developer/user/7704194

Блог Минимум, просто чтобы поделиться с вами

Введение в FFmpeg

«FF» в слове «FFmpeg» означает «Быстрая перемотка вперед», а «mpeg» относится к «Группе экспертов по движущимся изображениям». Этот проект в основном используется для обработки изображений и звука и в настоящее время широко используется в программном обеспечении для видео и видео. обработка видео.

Использование FFmepg позволяет легко (включая, помимо прочего): перекодирование видео, извлечение аудио, а также объединение субтитров и видео. Я часто использую его для перекодирования оригинального диска с фильмом в H264 MP4 и добавления жестких субтитров для воспроизведения по телевизору (*≧ω≦)

🎥Перекодирование видео

Используя FFmpeg, вы можете легко перекодировать файлы формата MP4 в формат Mov или другие видеоформаты. Удобно хранить видео на разных платформах.

🎙Извлечение аудио

Иногда у нас есть еще один MV (музыкальное видео), но мы хотим преобразовать его в чистый аудиоформат и поместить в наш MP3. На данный момент мы можем использовать FFmpeg для извлечения аудио, например:

Язык кода:javascript
копировать
# Извлеките аудио из Minitimate.mov в аудио из Minitimate.acc.
ffmpeg -i Mintimate.mov -vn -y -acodec copy Mintimate.aac
# Извлеките аудио из Minimize.mp4 в аудио Minimize.mp3.
ffmpeg -i Mintimate.mov -vn -y -acodec copy Mintimate.mp3

📽Запись в реальном времени с экрана На обычном веб-сайте прямая трансляция может иметь адрес воспроизведения m3u8, который является видеопотоком CDN. Мы можем использовать FFmpeg для записи этого видеопотока:

Язык кода:javascript
копировать
ffmpeg -i https://Вот адрес прямой трансляции/Mintimate.m3u8 -c:v copy -c:a copy -bsf:a aac_adtstoasc Output.mp4

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

Примечания к этой статье

Потому что FFmepg очень универсален.,И в разных сценариях есть конкретные параметры。В одной статье невозможно одновременно подробно объяснить настройку и использование.。Поэтому в этой статье в основном объясняется, как настроить FFmepg в Linux/Mac/Windows. 🔗Ссылки по теме:

Зачем использовать FFmpeg

Возьмите «Личи»,

  1. Я загрузил оригинальный диск с фильмом, разрешение очень высокое, но если я захочу посмотреть его на телевизоре или проекторе, оно не сможет соответствовать файлу субтитров. Теперь вы можете использовать FFmpeg для перекодирования файла и одновременного добавления субтитров. время.
  2. Устройство не поддерживает формат mkv, а только формат h264 mp4? В настоящее время вы можете использовать FFmpeg для перекодирования mkv в mp4.

Видеоурок

Если видео окажется для вас полезным, вы можете проголосовать за него~

Если невозможно играть,Ссылка на видео:Научитесь устанавливать и настраивать инструмент перекодирования — «FFmpeg» в системах Windows/Mac/Linux за 10 минут.

помещение

Одно устройство с Mac/Linux/Windows. (Теоретически можно использовать и Raspberry Pi, но производительности может не хватить...)

Настройка FFmpeg в Linux

Установить FFmpeg в Linux очень просто, двумя способами:

  • Установка пакета: используйте инструмент пакета программного обеспечения, входящий в состав дистрибутива Linux (apt-get、ням и т. д.), чтобы быстро установить на склад предварительно скомпилированную версию FFmpeg.
  • Ручная настройка:приезжатьFFmpegОфициальный сайт проекта,Загрузите предварительно скомпилированную версию FFmpeg или исходный код FFmpeg, скомпилируйте ее и настройте в переменных среды.
  • Компиляция и установка. Компиляция и установка FFmpeg особенно сложны, главным образом потому, что существует слишком много внешних вспомогательных библиотек, которые можно настраивать (гораздо больше, чем компиляция PHP и Nginx), поэтому в этой статье они не будут представлены.

Первые два метода имеют свои плюсы и минусы, и вы можете выбирать в соответствии со своими потребностями.

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

Установка пакета

Сначала определите версию дистрибутива, на которой основан ваш Linux.,Большинство людей основаны наCentosилиDebian,Просто откройте терминал и попробуйте:

Если вы войдетеapt-get,Выяснилосьapt-get: command not found。Так Можно использоватьyumпытаться。Наоборот。

После этого вводите в терминале:

Язык кода:javascript
копировать
# For Debian
sudo apt install ffmpeg
# For Centos
sudo yum install ffmpeg

Обычно вас спросят, устанавливать ли:

Далее, после завершения «кодирования», устанавливается FFmpeg:

В случае неудачи появится следующее приглашение:

Как правило, это связано с тем, что ваш apt-get/yum не обновлялся в течение длительного времени или вы изменили его источник, а конфигурация не обновилась. Просто запустите:

Язык кода:javascript
копировать
# For Debian
apt update
# For Centos
yum update

Затем запустите команду установки FFmpeg.

Ручная настройка

Поскольку параметры процесса компиляции на разных устройствах Linux различаются, в этой статье не описываются методы компиляции и установки. Здесь вы можете скачать предварительно скомпилированную версию FFmpeg и настроить ее в переменных среды.

первый,ВходитьОфициальная предварительно скомпилированная версия FFmpeg для Linuxвнутри страницы,Загрузите FFmpeg, соответствующий архитектуре системы:

яLinuxУстройствоx64оборудование,Так что выбирайтеamd64Версия。Внутри терминала,Создать папку FFmpeg,и скачать Разархивироватьэтот файл:

Язык кода:javascript
копировать
# СкачатьFFmpeg
wget "https://johnvansickle.com/ffmpeg/releases/ffmpeg-release-amd64-static.tar.xz"
# Разархивировать
tar -xf ffmpeg-release-amd64-static.tar.xz 

Tips:Руководство по использованию команды tar После этого настраиваем переменные среды:

Если вы используете Баш,Так,Конфигурация~/.bashrcэтот файл

Если вы используете ZSH,Так Конфигурация~/.zhsrcэтот файл Большинство пользователей Linux используют bash, поэтому давайте продемонстрируем:

Язык кода:javascript
копировать
# Отредактируйте переменные среды ~/.bashrc.
vim ~/.bashrc

После входа,в соответствии сiВходитьредактироватьмодель,Добавлено в конце статьи:

Язык кода:javascript
копировать
# FFmpeg
export PATH=$PATH:「Path」

После этого перезагрузите файл конфигурации:

Язык кода:javascript
копировать
source ~/.bashrc

Вот и все:

2022.04.23возобновлять:Раньше я был редактором./etc/bashrcэтот файл,На самом деле это глобальная переменная среды (в случае Bash).,Если подумать, было бы лучше продемонстрировать переменные пользовательской среды.……Итак, теперь учебник изменен на редактирование~/.bashrc。Видеоурок Внутри или редактировать/etc/bashrc,Вы можете сами решить, какой из них настроить.

Настройка FFmpeg на macOS

Установить FFmpeg на macOS также очень просто, двумя способами:

  • Быстрая компиляция: используйте инструмент пакета программного обеспечения Homebrew, чтобы быстро установить предварительно скомпилированную версию FFmpeg в хранилище. Однако, поскольку FFmpeg не находится в официальном хранилище Homebrew, вам необходимо подключиться к GitHub, даже если вы измените исходный код Homebrew.
  • Ручная настройка:приезжатьFFmpegОфициальный сайт проекта,Загрузите предварительно скомпилированную версию FFmpeg или исходный код FFmpeg, скомпилируйте ее и настройте в переменных среды.
  • Конфигурация компиляции: загрузите исходный код FFmpeg, используйте cmake или make для компиляции и установки. Существует определенный порог и слишком много настраиваемых внешних библиотек поддержки (гораздо больше, чем компиляция PHP и Nginx), поэтому новичкам настройка не рекомендуется.

В этой статье Ручная настройка используется предварительно скомпилированная версия FFmpeg.,Предварительно скомпилированная версия в настоящее время не адаптирована для устройств с чипом M1. Пожалуйста, используйте метод быстрой компиляции!предварительно запрограммированный Версия,На данный момент поддерживает все версии macOS,Включая архитектуру ARM64 и архитектуру X86.

Быстрая компиляция (рекомендуется)

Это очень просто и я не буду вдаваться в подробности. Для пользователей, у которых установлен Homebrew, введите в терминале:

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

После долгого ожидания FFmpeg установлен:

Если у вас не установлен Homebrew, вы можете обратиться к статье:

Ручная настройка1(рекомендовать)

Я считаю, что у многих пользователей macOS нет Ручной настройка через среду. Здесь мы сосредоточимся на том, как Ручная настройка. Аналогичным образом мы загружаем предварительно скомпилированную версию FFmpeg:

Скачиваем последнюю версию:

После загрузки,Разархивируйте и переименуйтепомещатьприезжатья们熟悉的地址,нравиться:/Users/mintimate/myEnvironment/ffmpeg:

Если значок выполнения (exec) не отображается на вашем macOS, используйте Терминал для повышения разрешений:

Язык кода:javascript
копировать
chmod +x ffmpeg

После этого мы можем настроить переменные среды:

Язык кода:javascript
копировать
open ~/.zshrc

Добавьте в Венму:

Язык кода:javascript
копировать
# FFmpeg
export PATH=$PATH:/Users/mintimate/myEnvironment/ffmpeg/ffmpeg

После сохранения,Внутри терминалавходитьsource ~/.zsshrcили Перезагрузите терминал Вот и все: установка ffmpeg завершена

Скомпилировать конфигурацию (не рекомендуется)

Этот метод не подходит новичкам, поэтому кратко поясню: Загрузите исходный код и разархивируйте его:

Войдите в распакованную папку с помощью терминала:

Язык кода:javascript
копировать
./configure --enable-shared --prefix=/usr/local/ffmpeg

/usr/local/ffmpeg Адрес для компиляции и установки. После компиляции,ссылкаРучная настройка1(рекомендовать)Добавить в переменные среды。

Настройка FFmpeg в Windows

Конфигурация Windows самая простая,я们ВходитьОфициальная предварительная компиляция проекта FFmpeg для WindowsСкачать интерфейс:

这边ярекомендоватьиспользовать:Версия соглашения GPL

📖Настройте переменные среды

Например, у нас есть: ffmpeg-n4.4-4-gacb339bb88-win64-gpl-4.4.zip.

Скачиваем и разархивируем его и получаем следующие файлы:

После этого включаем переменные среды:

редактироватьPath,добавить записьприезжатьтолько Разархивироватьзакончились документыbinв папке:

🔧Используйте FFmpeg

Настроен,После сохранения Ты можешьCMDиPowershellИспользуйте в другом местеFFmpegПонятно:

Операция FFmpeg

Субтитры и выбор трека

Видео, которые мы загружаем, всегда имеют субтитры и оригинальные видеофайлы (Blu-ray, сжатый диск Blu-ray и т. д.), поэтому их необходимо объединить; вы все еще используете такие инструменты, как старая Format Factory? Фактически, FFmpeg может В каталоге файлов введите в терминале:

Язык кода:javascript
копировать
ffmpeg -y -i «Полное название видео» -vf subtitles=「Имя файла субтитров」 «Имя экспортированного видеофайла»

Команда для разблокировки: На самом деле, -y не требуется, просто чтобы в каталоге не было видео с тем же именем, что и у экспортированного видеофайла, что приведет к сбою, поэтому -y означает: перезаписать; например

Язык кода:javascript
копировать
ffmpeg -y -i 1.mkv -vf subtitles=1.ass out.mp4

кроме того,Если это файл типа MKV со встроенными несколькими звуковыми дорожками и несколькими субтитрами.,я们Можно использоватьmapИзвлекать。Приведите пример,Мой файл фильма:

Язык кода:javascript
копировать
ffmpeg -i Отель.Трансильвания.4.Трансформания.2022.Китайские и английские субтитры.mkv

Можно обнаружить, что имеется несколько звуковых дорожек и субтитров:

Если я хочу извлечь видеодорожку и аудиодорожку отдельно, просто:

Язык кода:javascript
копировать
ffmpeg -i Отель.Трансильвания.4.Трансформания.2022.Китайские и английские субтитры.mkv -map 0:0 -map 0:1  OutPut.mkv

Видеовыход таким образом имеет только 1-ю и 2-ю дорожки (видеодорожка и аудиодорожка по умолчанию):

Благодаря этому мы можем извлечь субтитры по умолчанию и преобразовать их в файлы mp4:

Язык кода:javascript
копировать
# Способ 1: подходит для субтитров субрипового типа.
ffmpeg -i Отель.Трансильвания.4.Трансформания.2022.Китайские и английские субтитры.mkv -filter_complex "[0:v:0]subtitles=Отель.Трансильвания.4.Трансформания.2022.Китайские и английские субтитры.mkv:si=2[v]" -map "[v]" -map 0:1  Hotel.mp4
# Способ 2: применим к субтитрам типа hdmv_pgs_subtitle.
ffmpeg -i HotelTransylvania.mkv -filter_complex "[0:v][0:s]overlay[v]" -map "[v]" -map 0:a:0 out.mp4

в:

В методе 1,-filter_complex "[0:v:0]subtitles=Отель.Трансильвания.4.Трансформания.2022.Китайские и английские субтитры.mkv:si=2[v]" -map "[v]"Представляет собой перехват и слияниеОтель.Трансильвания.4.Трансформания.2022.Китайские и английские субтитры.mkvВидеодорожка внутри видеофайлаисубтитры2орбита как параметр[v]отслеживать,и смешивает рендеринг последующих звуковых дорожек.

Метод 2ши

Конвертировать формат видео

Язык кода:javascript
копировать
ffmpeg -i input.ogv -vcodec h264 out.mp4
ffmpeg -i input.ogv -vcodec mpeg4 out.mp4
ffmpeg -i input.ogv -vcodec libxvid out.mp4
ffmpeg -i input.mp4 -vcodec wmv1 out.wmv
ffmpeg -i input.mp4 -vcodec wmv2 out.wmv

За i следует имя входного файла. За параметром -vcodec следует формат кодировки, лучше всего использовать h264, но он не установлен по умолчанию в системах Windows. Если вы хотите вставить видео в формате ppt, выбор wmv1 или wmv2 в принципе надежен.

Если вы хотите сохранить качество исходного видеофайла, используйте параметр -qscale 0:

Язык кода:javascript
копировать
ffmpeg -i input.webm -qscale 0 output.mp4

Конвертировать формат видеои добавить субтитры

Из-за загрузки h264 mp4 очень хорош с точки зрения сжатия и качества, если вы хотите добавить субтитры и при этом хотите качество, выберите h264;

Язык кода:javascript
копировать
ffmpeg -y -i «Полное название видео» -vf subtitles=「Имя файла субтитров」 -vcodec h264 «Экспортированный видеофайл».mp4

Или вот этот, с самым высоким crf, но очень высоким разрешением:

Язык кода:javascript
копировать
ffmpeg -y -i filename.mkv -vf subtitles='filename.mkv' -disposition:s default+forced -c:v libx264 -c:a libmp3lame -crf 27 -preset ultrafast filename.mp4 

Подвести итог

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

Наконец, если вы считаете, что статья полезна, вы можете:

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