Привет,Я Кодер Файги,Спасибо, что прочитали эту статью,Добро пожаловать в тройное соединение в один клик。В этой статье подробно объясняется использование команды ffmpeg с практической точки зрения. Он полон полезной информации. Рекомендуется собирать его и часто читать, когда вам нужно его использовать. Если у вас есть какие-либо вопросы или потребности, пожалуйста, оставьте сообщение ~ ~ ~。
ffmpeg — очень быстрый конвертер видео и аудио, который также может захватывать живые источники аудио/видео. Он также может конвертировать произвольные частоты дискретизации и динамически изменять размер видео с использованием высококачественных многофазных фильтров. Он совместим с тремя операционными системами: Windows, Linux и Mac (проще говоря, можно использовать все три операционные системы). Адрес загрузки ffmpeg: адрес загрузки ffmpeg. О процессе установки сказать особо нечего.,Просто следуйте подсказкам и продолжайте нажимать «Далее».。Здесь необходимо объяснить одну вещь:ffmpegПосле установки лучшеPATHСредняя конфигурацияffmpegпеременные среды。После настройки в командной строкевходитьffmpeg
Появятся следующие результаты:
Скорость передачи данных: относится к количеству битов, передаваемых в секунду, единица измерения — бит/с. Частота кадров: относится к количеству кадров изображения, обновляемых в секунду, что также можно понимать как количество раз, которое графический процессор может обновлять в секунду. Единица измерения — fps (кадров в секунду) или «Герц (Гц)».
Общий формат, используемый командами ffmpegКак показано ниже:
ffmpeg [ global_options ] {[ input_file_options ] -i входить Адрес файла} ... {[ output_file_options ] адрес выходного файла} ...
ffmpeg
:выражатьКоманда для вызова программы ffmpeg. Если переменная среды не настроена, вам необходимо указать абсолютный путь к ffmpeg.exe.,Как показано нижеD:\\develop\\ffmpeg-4.3.2-2021-02-20-full_build\\bin\\ffmpeg.exe
global_options
:Используется для указания глобальных операций.параметр,например -y параметр,Необязательныйпараметр。input_file_options
:используется для указаниявходить Операции с файламипараметр,например:-f concat
Параметры и т. д. -i
: Укажите адрес файла вхождения,нуждатьсяпараметр。output_file_options
: Необязательный параметр, используемый для указания параметров работы выходного файла.
Если вы хотите умело использовать команду ffmpeg, вам необходимо освоить некоторые общие параметры команды ffmpeg.
Общие Параметр относится к параметрам команды, используемым как для аудио, так и для видео. | Параметры| эффект | эффектобъем | Пример | |--|--|--|--| | -f |Принудительное использование формата входного или выходного файла. Обычно формат входного файла определяется автоматически, и формат угадывается на основе расширения выходного файла, поэтому в большинстве случаев этот параметр не требуется. |Глобальный | | | -i Адрес | Введите адрес файла |Ввод | | | -y |Перезаписать выходной файл, то есть, если файл output.mp4 существует, перезаписать файл без запроса |Глобальный | | | -i | Укажите адрес входного файла. Если следовать ffmpeg, то можно писать. xxx.mp4, иначе нужно писать полный путь | Введите || | -n | Не перезаписывайте выходной файл, т. е. если указанный выходной файл уже существует, немедленно выйдите из программы. | Глобальный|| | -stream_loop номер | Устанавливает количество циклов входного потока. цикл 0 Указывает на отсутствие петли, петли -1 Представляет бесконечный цикл. | Введите || | -c[: stream_specifier ]| кодек |Ввод/выход,за поток | -c copy (Выходной поток вызывается в соответствии с кодировкой входного потока) | | -codec[: stream_specifier ]| кодек, выбирает кодировщик (при использовании перед выходными файлами) или декодер (при использовании перед входными файлами) для одного или нескольких потоков. |Ввод/выход,за поток |ffmpeg -i входить -map 0 -c:v libx264 -c:a Копировать вывод (использовать libx264 Кодируйте все видеопотоки и копируйте все аудиопотоки. )| | -t| продолжительность |Ввод/выход, если он используется в качестве опции входить, ограничивает чтение данных из файлов вхождения продолжительностью. При использовании в качестве опции вывода (перед выходurl) прекращает запись вывода после того, как его продолжительность достигает продолжительности. продолжительность должна быть продолжительность |-t 20 (длится 20 секунд) | | -fs limit_size| Относится к предельному размеру файла, измеряемому в байтах. После превышения лимита дальнейшие блоки байтов записываться не будут. Размер выходного файла немного больше запрошенного размера файла. |Вывод || | -сс местоположение | При использовании в качестве опции входить ищет местоположение в файле вхождения, в основном используется для вырезки. видео |Ввод/выход |-ss 15 (начиная с 15 секунды)| | -сс местоположение | При использовании в качестве опции входить ищет местоположение в файле вхождения, в основном используется для вырезки. видео |Ввод/выход |-ss 15 (начиная с 15 секунды)| | -dn| В качестве опции входить предотвращает фильтрацию, автоматический выбор или сопоставление всех потоков файлов для любого выхода|Ввод/выход |-ss 15 (начиная с 15 секунды)| | -frames[: stream_specifier ]Частота кадров| То есть генерировать видео с указанным количеством кадров|вывод || | -filter[: stream_specifier ] filtergraph ( output,per-stream )| Создает граф фильтра, указанный в filtergraph, и использует его для фильтрации потока. Граф фильтра соответствует потоку. filtergraph описание и должен иметь один вход и один выход одного и того же типа потока. |выход ||
Параметры видео относится к командному эффекту только для видео. | Параметры| эффект | эффектобъем | Пример | |--|--|--|--| |-Количество кадров |Установить количество видеокадров для вывода | | | |-r fps | Установите частоту кадров (значение Гц, дробь или аббревиатура), поскольку опция входить игнорирует продолжительность видеофайла и вместо этого генерирует временные метки, предполагая постоянную частоту кадров в секунду. В качестве выходного варианта копируйте или удаляйте кадры вхождения для достижения постоянной выходной частоты кадров в секунду. | входить/выход | -r 30 (30 кадров/секунду) | |-s размер |Установите размер рамки, формат «ширина и высота» | входить/выход,за поток | | |-vn В качестве опции «Вход» блокируется фильтрация, автоматический выбор или сопоставление всех видеопотоков файла, а в качестве опции «Выход», которая автоматически выбирает или сопоставляет любой видеопоток, можно использовать для извлечения файлов из Извлекать | аудио | входить/выход | |
параметры звука относятся к параметру команды только для звука.
параметр | эффект | эффектобъем | Пример |
---|---|---|---|
-номер фрейма | Установите количество аудиокадров для вывода | выход | |
-ar частота | Установить частоту дискретизации звука,длявыходпоток,По умолчанию установлена частота соответствующего потока вхождения. Для вхождения потока,Эта опция имеет смысл только для аудиограбберов и необработанных демультиплексоров. | входить/выход | -ar 24000 (захват звука с частотой 24000 Гц) |
-aq q | Установить качество звука (только для кодека эффектов, VBR) | выход | |
-AC-канал | Установить номер аудиоряда. Для выходных потоков по умолчанию установлено количество вхождений аудиоряда. | входить/выход,за поток | -ac 2 (количество каналов установлено на 2) |
-an | Как вариант входа,Предотвращает фильтрацию, автоматический выбор или сопоставление всех аудиопотоков файлов с любым выходом.,Как выходной вариант,Отключить запись звука,т. е. автоматический выбор или отображение любого аудиопотока | входить/выход | |
-acodecкодек | Настроить аудиокодек | входить/выход | -acodec aac (кодирование звука использует aac) |
-объемный процент | Установите громкость в процентах | входить/выход | -объем 150 (150% объема) |
-map file:stream | настраиватьвходить/выходпотоккартографирование | входить/выход |
Закончил разговор о параметре команды ffmpeg.,Тогда давайте потренируемся。Пример Все видео и аудио вD:\\ffmpeg_test
в каталоге。
Видео в формате WebM — это формат видео, поддерживаемый всеми браузерами. После того, как интерфейс записывает видео, он передает видео в формате WebM на сервер. Обычно нам необходимо преобразовать видео в формате WebM в видео в формате mp4. формат.
ffmpeg -y -i D:\\ffmpeg_test\\1.webm -r 30 D:\\ffmpeg_test\\1.mp4
Вот конвертировать видео 1.webm в видео 1.mp4 со скоростью 30 кадров в секунду. Укажите здесь абсолютный путь к 1.mp4. Если он не указан, сгенерированный видеофайл попадет в каталог выполнения текущей команды ffmpeg. Результат работы:
Если загруженное видео относительно большое или пользователь записывает видео по сегментам, внешний интерфейс передает несколько сегментов видео на внутренний сервер. В это время требуется операция объединения видео. Операция объединения видео с помощью команды ffmpeg разделена на два этапа.
ffmpeg -f concat -safe 0 -y -i D:\\ffmpeg_test\\filelist.txt -c copy -strict -2 D:\\ffmpeg_test\\concated.mp4
Объяснение команд:Вот предыдущийfilelist.txtзаписано1.mp4и2.mp4дваиндивидуальныйобъединение видео Сейичииндивидуальныйназванныйconcated.mp4видео。-f concat
:обозначение Операциядаоперация слияния -safe 0
:используется, чтобы избежать операцийвходитьпотокиз Проблема с разрешениями -c copy
:используется для указаниявыходвидеопотокивходитьвидеопотокизкодирование Формат Будьте последовательны -strict -2
:используется, чтобы избежатьopus in MP4 support is experimental
этот вопрос。Подробно ОКссылкаиспользоватьffmpegруководитьобъединение видео Сколько временииндивидуальный Запись проблемы Operation not permitted Результат работы:
После того, как исходное видео готово, пользователю может не понравиться видео и ему придется вырезать плохие видеоклипы. Его рабочие команды также очень просты. Это значит обрезать исходное видео concated.mp4 начиная с 15-й секунды и разрезать его на новый видеоклип.mp4 продолжительностью 25 секунд.
ffmpeg -ss 15 -t 25 -i D:\\ffmpeg_test\\concated.mp4 -c:v libx264 -c:a aac -strict experimental D:\\ffmpeg_test\\clip.mp4
параметрпредставлять:-ss 15
:С первого15Начните обрезать видео за считанные секунды。-t 25
:обозначение После резкивидео Продолжительность25Второй。-c:v libx264
:обозначениевидеоизкодирование Форматдляlibx264Формат。-c:a aac
:обозначение Аудиоизкодирование ФорматдляaacФормат。-strict experimental
: Безопасное обращение. Rerзwytrat работы:
Теперь, когда видео, которым доволен пользователь, вырезано, пользователь может приступить к процессу озвучивания. Перед дублированием нам сначала нужно отделить звук исходного видео от оригинального видео. Операция извлечения аудио относительно проста. Его команда:
ffmpeg -y -i D:\\ffmpeg_test\\concated.mp4 -vn D:\\ffmpeg_test\\output.wav
Вот исходный звук из видео concated.mp4. Имя исходного звука — output.wav. здесь -vn Указывает, что формат кодирования выходного аудио соответствует аудиоформату видео. Rerзwytrat работы:
После разделения звука исходного видео пользователи могут одновременно воспроизводить исходный звук и записывать дубляж. В это время пользователь может захотеть отрегулировать громкость звука. Операция регулировки громкости также очень проста. Следующее — отрегулируйте громкость звука до 80 % от исходной громкости.
ffmpeg -y -i D:\\ffmpeg_test\\output.wav -af "volume=0.8" D:\\ffmpeg_test\\output_80.wav
или
ffmpeg -y -i D:\\ffmpeg_test\\output.wav -vol 80 D:\\ffmpeg_test\\output_80.wav
Здесь необходимо отметить, что если это первый метод-af "объем = значение"
volumeизчисловое значениенеобходимо разделить на100послеизценить。и-vol числовое значение
числовое значение Передайте напрямуюпроцент。Результат работы:
После завершения перезаписи мы хотим объединить исходный звук и звук дубляжа в один звук. Здесь нам нужно синхронизировать звуковые дорожки. Его команда:
ffmpeg -y -i D:\\ffmpeg_test\\org_video_sound_input.wav -i D:\\ffmpeg_test\\org_voice_input.wav -filter_complex amix=inputs=2:duration=longest D:\\ffmpeg_test\\org_voice_output.wav
Вот аудиоorg_video_sound_input.wavиorg_voice_input.wavОбъединить аудио в одно аудиоorg_voice_output.wav。его ядроиз Заказпараметрда:-filter_complex amix=inputs=2:duration=longest
:здесьиспользовать-filter_complex
обозначениесложныйизграф фильтра,amix=inputs=2:duration=longest
использоватьamixфильтробозначениевходить Аудиоизколичествода2индивидуальный,Длительность — это продолжительность самого длинного аудио. Результат работы:
После завершения перезаписи, но обычно продолжительность звука перезаписи не равна продолжительности исходного звука. В это время необходимо заполнить пустой звук на время без дубляжа. Операция заполнения пустого аудио немного сложна. Идея его работы разделена на три этапа.
Чтобы создать пустой звук той же продолжительности, что и исходный звук, введите следующую команду: Предполагается, что продолжительность исходного звука составляет 20 секунд, поэтому генерируется пустой звук продолжительностью 20 секунд.
Чтобы заполнить пустой звук в начале звука перезаписи (например, если пользователь перезаписывает со 2-й секунды исходного звука, то первые 2 секунды звука перезаписи должны быть заполнены пустым звуком), команда:
ffmpeg -y -i D:\\ffmpeg_test\\silence.wav -i D:\\ffmpeg_test\\org_voice_input.wav -filter_complex "aevalsrc=0:d=2 [s1];[s1][1:a]concat=n=2:v=0:a=1[aout]" -c:v copy -map [aout] D:\\ffmpeg_test\\org_voice_output_silence.wav
Среди них: D:\ffmpeg_test\silence.wav Это пустой звук, созданный на первом этапе, D:\ffmpeg_test\org_voice_input.wav. да Закадровый голос пользователяиз Аудио。d=2
:используется для указанияда Заполните пробелыизточка,Примерно0Второйприезжать2Второй这段时长Заполните пробелы。-c:v copy
:Аудиоизкодирование Форматпостоянный。4. Поместите звук дублирования, который заполняет пустой звук, на ту же дорожку, что и пустой звук, созданный на первом этапе, чтобы получить звук дублирования с той же длительностью, что и исходный звук. Порядок такой же, как и в предыдущем разделе 6, поэтому я не буду здесь вдаваться в подробности.
ffmpeg -y -i D:\\ffmpeg_test\\org_voice_output_silence.wav -i D:\\ffmpeg_test\\silence.wav -filter_complex amix=inputs=2:duration=longest D:\\ffmpeg_test\\org_voice_output_result.wav
Результат работы:
Комбинирование видео и аудио заключается в объединении ранее созданного звука с дубляжом и оригинального видео. Его команда:
ffmpeg -y -i D:\\ffmpeg_test\\user_video.avi -i D:\\ffmpeg_test\\org_voice_output_result.wav -c:v copy -c:a aac -strict experimental D:\\ffmpeg_test\\user_video_target.avi
Видео входа: user_video.mp4, аудио: org_voice_output_result.wav. выходное видео: org_voice_output_result.avi -c:v copy
:обозначениевыходвидеоиз Формативходитьвидеоиз Формат Будьте последовательны。-c:a aac
: Формат аудиокодирования указанного выходного видео — формат aac. Rerзwytrat работы:
Жаль, что сгенерированное видео формата avi нельзя воспроизвести прямо в браузере. Поэтому нам необходимо конвертировать видео формата avi в видео формата mp4. Команда преобразования:
ffmpeg -y -i D:\\ffmpeg_test\\user_video_target.avi -c:v libx264 -crf 19 -preset slow -c:a aac -b:a 192k -ac 2 D:\\ffmpeg_test\\user_video_target.mp4
Вот видео входа: user_video_target.avi.,выходвидеода:user_video_target.mp4。-c:v libx264
:обозначениевидеоизкодирование Форматдаlibx264Формат。-c:a aac
:обозначение Аудиоизкодирование ФорматдаaacФормат。-b:a 192k
: указывает, что битрейт видео составляет 192 кбит. Rerзwytrat работы:
В этой статье подробно рассматривается использование ffmpeg с практической точки зрения. Я думаю, что это будет большим подспорьем для читателей.
ffmpeg Часто используемые команды итог: (avi в MP4, MP4 в ts, сжатие видео, удаление звука из видео, объединение аудио и видео) Официальная документация ffmpeg
Я Кодер Файги, еще раз спасибо за прочтение этой статьи。