Настройте аудиоинструмент с открытым исходным кодом 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
Java вызывает стороннюю платформу для отправки мобильных текстовых сообщений
boy illustration
Практическое руководство по серверной части: как использовать Node.js для разработки интерфейса RESTful API (Node.js + Express + Sequelize + MySQL)
boy illustration
Введение в параметры конфигурации большого экрана мониторинга Grafana (2)
boy illustration
В статье «Научно-популярная статья» подробно объясняется протокол NTP: анализ точной синхронизации времени.
boy illustration
Пример разработки: серверная часть Java и интерфейсная часть vue реализуют функции комментариев и ответов.
boy illustration
Nodejs реализует сжатие и распаковку файлов/каталогов.
boy illustration
SpringBootИнтегрироватьEasyExcelСложно реализоватьExcelлистимпортировать&Функция экспорта
boy illustration
Настройка среды под Mac (используйте Brew для установки go и protoc)
boy illustration
Навыки разрешения конфликтов в Git
boy illustration
Распределенная система журналов: развертывание Plumelog и доступ к системе
boy illustration
Артефакт, который делает код элегантным и лаконичным: программирование на Java8 Stream
boy illustration
Spring Boot(06): Spring Boot в сочетании с MySQL создает минималистскую и эффективную систему управления данными.
boy illustration
Как использовать ArrayPool
boy illustration
Интегрируйте iText в Spring Boot для реализации замены контента на основе шаблонов PDF.
boy illustration
Redis реализует очередь задержки на основе zset
boy illustration
Получить текущий пакет jar. path_java получает файл jar.
boy illustration
Краткое обсуждение высокопроизводительного шлюза Apache ShenYu
boy illustration
Если вы этого не понимаете, то на собеседовании даже не осмелитесь сказать, что знакомы с Redis.
boy illustration
elasticsearch медленный запрос, устранение неполадок записи, запрос с подстановочными знаками
boy illustration
По какому стандарту взимается плата за обслуживание программного обеспечения?
boy illustration
IP-адрес Получить
boy illustration
【Java】Решено: org.springframework.web.HttpRequestMethodNotSupportedException
boy illustration
Native js отправляет запрос на публикацию_javascript отправляет запрос на публикацию
boy illustration
.net PDF в Word_pdf в Word
boy illustration
[Пул потоков] Как Springboot использует пул потоков
boy illustration
Подробное объяснение в одной статье: Как работают пулы потоков
boy illustration
Серия SpringCloud (6) | Поговорим о балансировке нагрузки
boy illustration
IDEA Maven может упаковать все импортное полностью красное решение — универсальное решение.
boy illustration
Последний выпуск 2023 года, самое полное руководство по обучению Spring Boot во всей сети (с интеллект-картой).
boy illustration
[Решено — Практическая работа] SaTokenException: запрос не может быть получен в контексте, отличном от Интернета. Решение проблем — Практическая работа.