Подробное практическое объяснение использования команд ffmpeg (опыт работы на передовой),объединение видео&aviизменятьMP4&Заполните пустой звук【Если соберу, обязательно воспользуюсь.】)
Подробное практическое объяснение использования команд ffmpeg (опыт работы на передовой),объединение видео&aviизменятьMP4&Заполните пустой звук【Если соберу, обязательно воспользуюсь.】)

Привет,Я Кодер Файги,Спасибо, что прочитали эту статью,Добро пожаловать в тройное соединение в один кликВ этой статье подробно объясняется использование команды ffmpeg с практической точки зрения. Он полон полезной информации. Рекомендуется собирать его и часто читать, когда вам нужно его использовать. Если у вас есть какие-либо вопросы или потребности, пожалуйста, оставьте сообщение ~ ~ ~。

Предисловие

Введение и установка ffmpeg

ffmpeg — очень быстрый конвертер видео и аудио, который также может захватывать живые источники аудио/видео. Он также может конвертировать произвольные частоты дискретизации и динамически изменять размер видео с использованием высококачественных многофазных фильтров. Он совместим с тремя операционными системами: Windows, Linux и Mac (проще говоря, можно использовать все три операционные системы). Адрес загрузки ffmpeg: адрес загрузки ffmpeg. О процессе установки сказать особо нечего.,Просто следуйте подсказкам и продолжайте нажимать «Далее».。Здесь необходимо объяснить одну вещь:ffmpegПосле установки лучшеPATHСредняя конфигурацияffmpegпеременные среды。После настройки в командной строкевходитьffmpegПоявятся следующие результаты:

Объяснение базовой концепции

Скорость передачи данных: относится к количеству битов, передаваемых в секунду, единица измерения — бит/с. Частота кадров: относится к количеству кадров изображения, обновляемых в секунду, что также можно понимать как количество раз, которое графический процессор может обновлять в секунду. Единица измерения — fps (кадров в секунду) или «Герц (Гц)».

Общий формат, используемый командами ffmpeg

Общий формат, используемый командами ffmpegКак показано ниже:

Язык кода:javascript
копировать
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, вам необходимо освоить некоторые общие параметры команды 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 настоящий бой

Закончил разговор о параметре команды ffmpeg.,Тогда давайте сделаем это на практике。Пример Все видео и аудио вD:\\ffmpeg_testв каталоге。

1. Команда Webm в mp4

Видео в формате WebM — это формат видео, поддерживаемый всеми браузерами. После того, как интерфейс записывает видео, он передает видео в формате WebM на сервер. Обычно нам необходимо преобразовать видео в формате WebM в видео в формате mp4. формат.

Язык кода:javascript
копировать
ffmpeg -y -i  D:\\ffmpeg_test\\1.webm  -r 30  D:\\ffmpeg_test\\1.mp4

Вот конвертировать видео 1.webm в видео 1.mp4 со скоростью 30 кадров в секунду. Укажите здесь абсолютный путь к 1.mp4. Если он не указан, сгенерированный видеофайл попадет в каталог выполнения текущей команды ffmpeg. Результат работы:

2. Команда объединения видео

Если загруженное видео относительно большое или пользователь записывает видео по сегментам, внешний интерфейс передает несколько сегментов видео на внутренний сервер. В это время требуется операция объединения видео. Операция объединения видео с помощью команды ffmpeg разделена на два этапа.

  1. Сначала создайте новый файл с именем filelist.txt и запишите адреса видео, которые необходимо объединить в файл. Например, в каталоге D:\ffmpeg_test есть файлы 1.mp4 и 2.mp4, которые необходимо объединить. Форма написания следующая:
  1. Команда для объединения видео ffmpeg:
Язык кода:javascript
копировать
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 Результат работы:

3. Монтаж видео

После того, как исходное видео готово, пользователю может не понравиться видео и ему придется вырезать плохие видеоклипы. Его рабочие команды также очень просты. Это значит обрезать исходное видео concated.mp4 начиная с 15-й секунды и разрезать его на новый видеоклип.mp4 продолжительностью 25 секунд.

Язык кода:javascript
копировать
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 работы:

4. Извлечь аудио

Теперь, когда видео, которым доволен пользователь, вырезано, пользователь может приступить к процессу озвучивания. Перед дублированием нам сначала нужно отделить звук исходного видео от исходного видео. Операция извлечения аудио относительно проста. Его команда:

Язык кода:javascript
копировать
ffmpeg -y -i D:\\ffmpeg_test\\concated.mp4 -vn D:\\ffmpeg_test\\output.wav

Вот исходный звук из видео concated.mp4. Имя исходного звука — output.wav. здесь -vn Указывает, что формат кодирования выходного аудио соответствует аудиоформату видео. Rerзwytrat работы:

5. Регулировка громкости

После разделения звука исходного видео пользователи могут одновременно воспроизводить исходный звук и записывать дубляж. В это время пользователь может захотеть отрегулировать громкость звука. Операция регулировки громкости также очень проста. Следующее — отрегулируйте громкость звука до 80 % от исходной громкости.

Язык кода:javascript
копировать
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 числовое значение числовое значение Передайте напрямуюпроцент。Результат работы:

6. Звук той же дорожки

После завершения перезаписи мы хотим объединить исходный звук и звук дубляжа в один звук. Здесь нам нужно синхронизировать звуковые дорожки. Его команда:

Язык кода:javascript
копировать
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индивидуальный,Длительность — это продолжительность самого длинного аудио. Результат работы:

7. Дублирование звука для заполнения пустого звука

После завершения перезаписи, но обычно продолжительность звука перезаписи не равна продолжительности исходного звука. В это время вам необходимо заполнить пустой звук на время без дубляжа. Операция заполнения пустого аудио немного сложна. Идея его работы разделена на три этапа.

Чтобы создать пустой звук той же продолжительности, что и исходный звук, введите следующую команду: Предполагается, что продолжительность исходного звука составляет 20 секунд, поэтому генерируется пустой звук продолжительностью 20 секунд.

Чтобы заполнить пустой звук в начале звука перезаписи (например, если пользователь перезаписывает со 2-й секунды исходного звука, то первые 2 секунды звука перезаписи должны быть заполнены пустым звуком), команда:

Язык кода:javascript
копировать
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, поэтому я не буду здесь вдаваться в подробности.

Язык кода:javascript
копировать
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

Результат работы:

8. Добавить звук в видео (комбинация видео и аудио)

Комбинирование видео и аудио заключается в объединении ранее созданного звука с дубляжом и оригинального видео. Его команда:

Язык кода:javascript
копировать
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 работы:

9. avi в mp4

Жаль, что сгенерированное видео формата avi нельзя воспроизвести прямо в браузере. Поэтому нам необходимо конвертировать видео формата avi в видео формата mp4. Команда преобразования:

Язык кода:javascript
копировать
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

Я Кодер Файги, еще раз спасибо за прочтение этой статьи

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