Skip to content

Instantly share code, notes, and snippets.

@if0rest
Last active February 3, 2025 07:35
Show Gist options
  • Save if0rest/30b8d58f9de2b5ba736ef7fd3cbd456e to your computer and use it in GitHub Desktop.
Save if0rest/30b8d58f9de2b5ba736ef7fd3cbd456e to your computer and use it in GitHub Desktop.
DeepSeek обучает азам FFmpeg

❓ Знакома ли тебе библиотека "ffmpeg"? Мне нужно узнать несколько команд по ее использованию.

🔊 Да, я знаком с библиотекой FFmpeg — это мощный инструмент для работы с мультимедиа, который позволяет кодировать, декодировать, конвертировать, изменять и обрабатывать аудио и видео файлы. Вот несколько полезных команд, которые могут тебе пригодиться:


1. Конвертация видео в другой формат

ffmpeg -i input.mp4 output.avi

Здесь input.mp4 — исходный файл, а output.avi — файл в новом формате.


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

ffmpeg -i input.mp4 -q:a 0 -map a output.mp3

Эта команда извлекает аудио из видео и сохраняет его в формате MP3.


3. Обрезка видео

ffmpeg -i input.mp4 -ss 00:01:00 -to 00:02:00 -c copy output.mp4

Обрезает видео с 1-й по 2-ю минуту. Параметр -c copy позволяет сохранить оригинальное качество.


4. Изменение разрешения видео

ffmpeg -i input.mp4 -vf scale=1280:720 output.mp4

Изменяет разрешение видео до 1280x720 пикселей.


5. Создание GIF из видео

ffmpeg -i input.mp4 -vf "fps=10,scale=320:-1" output.gif

Создает GIF из видео с частотой 10 кадров в секунду и шириной 320 пикселей.


6. Наложение водяного знака

ffmpeg -i input.mp4 -i watermark.png -filter_complex "overlay=10:10" output.mp4

Накладывает изображение watermark.png на видео в позиции (10, 10).


7. Извлечение кадров из видео

ffmpeg -i input.mp4 -r 1 -f image2 output_%03d.png

Извлекает 1 кадр в секунду и сохраняет их в формате PNG.


8. Склеивание видео

Создайте файл list.txt с именами файлов:

file 'video1.mp4'
file 'video2.mp4'

Затем выполните команду:

ffmpeg -f concat -i list.txt -c copy output.mp4

9. Сжатие видео

ffmpeg -i input.mp4 -vcodec libx264 -crf 28 output.mp4

Сжимает видео с использованием кодеков H.264. Параметр -crf регулирует качество (чем меньше значение, тем выше качество).


10. Изменение битрейта аудио

ffmpeg -i input.mp4 -b:a 128k output.mp4

Устанавливает битрейт аудио на 128 кбит/с.


❓ Перечисли все ключи для работы с ffmpeg с пояснением их назначения.

🔊 FFmpeg — это мощный инструмент с огромным количеством ключей (опций), которые позволяют гибко управлять процессом обработки мультимедиа. Вот основные ключи с пояснениями их назначения:


Основные ключи

  1. -i <input_file>
    Указывает входной файл (видео, аудио или изображение).
    ffmpeg -i input.mp4

  2. -c[:stream_specifier] <codec>
    Указывает кодек для кодирования или копирования потоков.
    ffmpeg -i input.mp4 -c:v libx264 output.mp4 (кодирует видео с использованием H.264)

  3. -c:v <video_codec>
    Указывает видеокодек.
    ffmpeg -i input.mp4 -c:v libx265 output.mp4 (кодирует видео с использованием H.265)

  4. -c:a <audio_codec>
    Указывает аудиокодек.
    ffmpeg -i input.mp4 -c:a aac output.mp4 (кодирует аудио с использованием AAC)

  5. -c:s <subtitle_codec>
    Указывает кодек для субтитров.
    ffmpeg -i input.mkv -c:s mov_text output.mp4 (кодирует субтитры в формат MOV_TEXT)

  6. -f <format>
    Указывает формат выходного файла.
    ffmpeg -i input.mp4 -f avi output.avi

  7. -y
    Перезаписывает выходной файл без запроса подтверждения.
    ffmpeg -i input.mp4 -y output.mp4

  8. -n
    Запрещает перезапись выходного файла, если он уже существует.

  9. -hide_banner
    Скрывает информацию о версии FFmpeg и лицензии при запуске.


Ключи для обработки видео

  1. -vf <filter_graph>
    Применяет видеографический фильтр.
    ffmpeg -i input.mp4 -vf "scale=640:360" output.mp4 (изменяет разрешение видео)

  2. -ss <time>
    Указывает начальную точку для обрезки или обработки.
    ffmpeg -i input.mp4 -ss 00:01:00 -to 00:02:00 output.mp4 (обрезает видео с 1-й по 2-ю минуту)

  3. -to <time>
    Указывает конечную точку для обрезки или обработки.

  4. -t <duration>
    Указывает продолжительность обработки.
    ffmpeg -i input.mp4 -t 10 output.mp4 (обрабатывает только первые 10 секунд)

  5. -r <fps>
    Устанавливает частоту кадров (FPS).
    ffmpeg -i input.mp4 -r 30 output.mp4 (устанавливает FPS на 30)

  6. -aspect <ratio>
    Устанавливает соотношение сторон видео.
    ffmpeg -i input.mp4 -aspect 16:9 output.mp4

  7. -s <width>x<height>
    Устанавливает разрешение видео.
    ffmpeg -i input.mp4 -s 1280x720 output.mp4

  8. -b:v <bitrate>
    Устанавливает битрейт видео.
    ffmpeg -i input.mp4 -b:v 1M output.mp4 (1 Мбит/с)

  9. -crf <value>
    Устанавливает качество видео (для кодеков H.264/H.265). Чем меньше значение, тем выше качество.
    ffmpeg -i input.mp4 -crf 23 output.mp4

  10. -preset <speed>
    Устанавливает скорость кодирования (от ultrafast до veryslow).
    `ffm


❓ Как с помошью ffmpeg добавить в существующий видеофайл дополнительную аудиодорожку и субтитры?

🔊 Чтобы добавить дополнительную аудиодорожку и субтитры в существующий видеофайл с помощью FFmpeg, можно использовать следующую команду:

ffmpeg -i input.mp4 -i audio.mp3 -i subtitles.srt -map 0:v -map 1:a -map 0:a -map 2 -c:v copy -c:a copy -c:s mov_text output.mp4

Разберем команду:

  1. -i input.mp4
    Основной видеофайл, в который добавляются аудио и субтитры.

  2. -i audio.mp3
    Дополнительная аудиодорожка, которую нужно добавить.

  3. -i subtitles.srt
    Файл субтитров, который нужно добавить.

  4. -map 0:v
    Выбирает видео из первого входного файла (input.mp4).

  5. -map 1:a
    Выбирает аудио из второго входного файла (audio.mp3).

  6. -map 0:a
    Выбирает аудио из первого входного файла (input.mp4), чтобы сохранить оригинальную аудиодорожку.

  7. -map 2
    Выбирает субтитры из третьего входного файла (subtitles.srt).

  8. -c:v copy
    Копирует видео без перекодирования.

  9. -c:a copy
    Копирует аудио без перекодирования.

  10. -c:s mov_text
    Указывает кодек для субтитров (подходит для MP4).

  11. output.mp4
    Имя выходного файла.

Пример:

Если у вас есть файл video.mp4, аудио music.mp3 и субтитры subtitles.srt, команда будет выглядеть так:

ffmpeg -i video.mp4 -i music.mp3 -i subtitles.srt -map 0:v -map 1:a -map 0:a -map 2 -c:v copy -c:a copy -c:s mov_text output.mp4

Примечания:

  • Если вы хотите перекодировать аудио или видео, замените -c:a copy или -c:v copy на нужный кодек (например, -c:a aac для аудио AAC).
  • Если субтитры в формате .ass или .ssa, используйте -c:s ass вместо -c:s mov_text.
  • Если вы хотите удалить оригинальную аудиодорожку, уберите -map 0:a.

Если что-то непонятно или нужно уточнить, дайте знать! 😊

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment