Привет,Я Кодер Файги,Спасибо, что прочитали эту статью,Добро пожаловать в тройное соединение в один клик。В этой статье подробно объясняется использование команды 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
Я Кодер Файги, еще раз спасибо за прочтение этой статьи。