Найти в Дзене
Андрей Яцемирский

Справочник по командам ffmpeg

Однажды мне понадобилось автоматизировать выполнение различные преобразования с видео и аудио файлами. Начальный список из нескольких команд я нашёл на хабре и скопировал к себе в записную книжку. Работая с этими командами мне часто приходилось что-то добавлять и исправлять. Но чаще всего я просто добавлял в этот список новые команды, также найдя их в интернете. Сейчас мне пришла идея, что возможно кому-то понадобится какая-нибудь команда и я решил опубликовать этот справочник. Я также планирую его пополнять. ffmpeg -i video.avi ffmpeg -f image2 -i image%d.jpg video.mpg Эта команда преобразует все картинки из текущей директории (названные image1.jpg, image2.jpg и т.д.) в видеофайл video.mpg мне больше нравится такой формат: ffmpeg -r 12 -y -i "image_%010d.png" output.mpg здесь задаётся frame rate (12) для видео, формат «image_%010d.png» означает, что картинки будут искаться в виде image_0000000001.png, image_0000000002.png и тд, то есть, в формате printf ffmpeg -i video.mpg image%d.j
Оглавление

Однажды мне понадобилось автоматизировать выполнение различные преобразования с видео и аудио файлами. Начальный список из нескольких команд я нашёл на хабре и скопировал к себе в записную книжку. Работая с этими командами мне часто приходилось что-то добавлять и исправлять. Но чаще всего я просто добавлял в этот список новые команды, также найдя их в интернете.

Сейчас мне пришла идея, что возможно кому-то понадобится какая-нибудь команда и я решил опубликовать этот справочник. Я также планирую его пополнять.

1. Получение информации о видеофайле

ffmpeg -i video.avi

2. Превратить набор картинок в видео

ffmpeg -f image2 -i image%d.jpg video.mpg

Эта команда преобразует все картинки из текущей директории (названные image1.jpg, image2.jpg и т.д.) в видеофайл video.mpg

мне больше нравится такой формат:

ffmpeg -r 12 -y -i "image_%010d.png" output.mpg

здесь задаётся frame rate (12) для видео, формат «image_%010d.png» означает, что картинки будут искаться в виде image_0000000001.png, image_0000000002.png и тд, то есть, в формате printf

3. Порезать видео на картинки

ffmpeg -i video.mpg image%d.jpg

Эта команда создаст файлы image1.jpg, image2.jpg и т.д., поддерживаются так же форматы PGM, PPM, PAM, PGMYUV, JPEG, GIF, PNG, TIFF, SGI.

4. Конвертировать видео в формат iPod/iPhone

ffmpeg -i source_video.avi input -acodec aac -ab 128kb -vcodec mpeg4 -b 1200kb -mbd 2 -flags +4mv+trell -aic 2 -cmp 2 -subcmp 2 -s 320x180 -title X final_video.mp4

Пояснения:

Источник: source_video.avi

Аудио кодек: aac

Битрейт аудио: 128kb/s

Видео кодек: mpeg4

Битрейт видео: 1200kb/s

Размер видео: 320 на 180 пикселей

Полученное видео: final_video.mp4

5. Конвертировать видео в формат PSP

ffmpeg -i source_video.avi -b 300 -s 320x240 -vcodec xvid -ab 32 -ar 24000 -acodec aac final_video.mp4

Пояснения:

Источник: source_video.avi

Аудио кодек: aac

Битрейт аудио: 32kb/s

Видео кодек: xvid

Битрейт видео: 1200kb/s

Размер видео: 320 на 180 пикселей

Полученное видео: final_video.mp4

6. Извлечь звуковую дорожку из видео и сохранить в mp3

ffmpeg -i source_video.avi -vn -ar 44100 -ac 2 -ab 192 -f mp3 sound.mp3

Пояснения:

Источник: source_video.avi

Битрейт аудио: 192kb/s

Выходной формат: mp3

Полученный аудиофайл: sound.mp3

7. Конвертировать wav в mp3

ffmpeg -i son_origine.wav -vn -ar 44100 -ac 2 -ab 192 -f mp3 son_final.mp3

8. Конвертировать .avi в .mpg

ffmpeg -i video_origine.avi video_finale.mpg

9. Конвертировать .mpg в .avi

ffmpeg -i video_origine.mpg video_finale.avi

10. Конвертировать .avi в .gif (без сжатия)

ffmpeg -i video_origine.avi gif_anime.gif

То же самое, но с вырезкой нужного фрагмента

ffmpeg -ss 00:01:18 -i sv.s03e01.mp4 -vframes 100 sss2.gif

11. Добавить звук к видео

ffmpeg -i son.wav -i video_origine.avi video_finale.mpg

12. Конвертировать .avi в .flv

ffmpeg -i video_origine.avi -ab 56 -ar 44100 -b 200 -r 15 -s 320x240 -f flv video_finale.flv

13. Конвертировать .avi в .dv

ffmpeg -i video_origine.avi -s pal -r pal -aspect 4:3 -ar 48000 -ac 2 video_finale.dv

или

ffmpeg -i video_origine.avi -target pal-dv video_finale.dv

14. Конвертировать .avi в mpeg для DVD-плееров

ffmpeg -i source_video.avi -target pal-dvd -ps 2000000000 -aspect 16:9 finale_video.mpeg

Пояснения:

Выходной формат: pal-dvd

Максимальный размер для выходного файла: 2000000000 (2 Gb)

Широкоэкранный формат: 16:9

15. Сжать .avi в DivX

ffmpeg -i video_origine.avi -s 320x240 -vcodec msmpeg4v2 video_finale.avi

16. Сжать OGG Theora в mpeg DVD

ffmpeg -i film_sortie_cinelerra.ogm -s 720x576 -vcodec mpeg2video -acodec mp3 film_termin.mpg

17. Сжать .avi в SVCD mpeg2

Формат NTSC:

ffmpeg -i video_origine.avi -target ntsc-svcd video_finale.mpg

Формат PAL:

ffmpeg -i video_origine.avi -target pal-svcd video_finale.mpg

18. Сжать .avi в VCD mpeg2

Формат NTSC:

ffmpeg -i video_origine.avi -target ntsc-vcd video_finale.mpg

Формат PAL:

ffmpeg -i video_origine.avi -target pal-vcd video_finale.mpg

19. Многопроходное кодирование с помощью ffmpeg

ffmpeg -i fichierentree -pass 2 -passlogfile ffmpeg2pass fichiersortie-2

20. Как в видео файле переконвертировать формат аудио из ac3 в mp3

ffmpeg -i source_video.avi -acodec libmp3lame -vcodec copy output_video.avi

21. Как вырезать один кадр из видео

ffmpeg -ss 00:00:02 -i "file.flv" -f image2 -vframes 1 "file_out.jpg"

Команда -ss проматывает на нужную секунду,

Команда -vframes 1 выдирает первый кадр из этой секунды

22. Повернуть видео на 90 градусов

ffmpeg -vf transpose=1 -i file.avi file1.avi

Опции transpose:

0 — против часовой стрелки и зеркально;

1 — по часовой стрелке;

2 — против часовой стрелки;

3 — по часовой стрелке и зеркально

23. Склейка 2х и более видео в один.

Если ролики в одинаковых форматах с одинаковыми параметрами:

ffmpeg -i "concat:input1.mpg|input2.mpg|input3.mpg" -c copy output.mpg

Если разные:

ffmpeg -i input1.mp4 -i input2.webm -filter_complex '[0:0] [0:1] [1:0] [1:1] concat=n=2:v=1:a=1 [v] [a]' -map '[v]' -map '[a]' <encoding options> output.mkv

24. Правильное превращение набора картинок в видео c аудио.

ffmpeg -r a -i "image_%%03d.jpg" -t b -i "audio.mp3" -y -r c "output.mp4"

a — frame rate, количество изображений в секунду. Если это значение < 1, то нужно обязательно указывать -r c, чтобы выходное видео получилось корректным и воспринималось всеми стандартными плеерами.

b — продолжительность звучания аудио. В моем случае указывается продолжительность видео, чтобы аудио не вылезло за границы. Узнать продолжительность можно с помощью ffprobe, а в данном случае она равна n / a, где n — количество входных изображений.

c — frame rate результирующего видео.

обратите внимание, что в Win системах во всяком случае, входные изображения нужно указывать с двойным процентом. Если аудио не нужно, то соответственно уберите -t b -i «audio.mp3».

25. Как увеличить громкость видео файла

ffmpeg -i video_in.mp4 -vcodec copy -strict -2 -af "volume=10" video_out.mp4

-i video_in.mp4 -vcodec copy - указываем входной файл и то, что мы не хотим его переконвертировать, а просто делаем "копию"

-strict -2 - этот параметр необходимо указывать только в случае, когда возникает такая ошибка: The encoder 'aac' is experimental but experimental codecs are not enabled, add '-strict -2' if you want to use it.

-af "volume=10" video_out.mp4 - этим параметром мы как раз указываем значение громкости, которое хотим получить на выходе и имя выходного файла. 10dB - этого значения обычно вполне достаточно для увеличения громкости. Если установить это значение равным больше 10dB, то в получившемся видео файле, звук будет воспроизводится с искажениями.

26. Как убрать одну аудио дорожку из файла (файлов)

ffmpeg.exe -i haul.avi -map 0:0 -map 0:2 -vcodec copy -acodec copy haul1.avi

-map 0:0 -map 0:2 - добавляемые из исходника дорожки

список дорожек в файле можно посмотреть командой ffmpeg -i haul.avi

То же самое, но из всех mkv файлов в папке с копированием результата в подпапку 1:

for %i in (*.mkv) do ffmpeg -i "%i" -map 0:0 -map 0:2 -vcodec copy -acodec copy "1\%i"

27. Как перекодировать видео для Youtube

ffmpeg.exe -i MVI_3842.MOV -g 15 -profile:v high -flags +cgop -movflags +faststart ostrov.mp4

28. Команда перекодирования mp3 в wav 8 бит 8 КГц

ffmpeg -i ul.mp3 -acodec pcm_u8 -ar 8000 -ac 1 audio1.8bit.wav

29. Как захватить видео с веб камеры или другого видео источника.

29.1. Этой командой смотрим список устройств, доступных для работы:

ffmpeg.exe -list_devices true -f dshow -i duмтсmmy

29.2. Просмотр список форматов для выбранного источника видео

ffmpeg.exe -f dshow -list_options true -i video="WebCam"

29.3. Запись видео

ffmpeg.exe -f dshow -s 640x480 -r 5 -i video="WebCam" out.mp4

30. Как рипнуть DVD-видео диск

прежде чем мы продолжим, нам нужно выяснить, какие потоки содержатся в исходном видео:

ffmpeg -i "concat:VTS_02_0.VOB|VTS_02_1.VOB|VTS_02_2.VOB|VTS_02_3.VOB" -c copy /dev/null

В этом случае я хочу сохранить потоки 0:1 (видео), 0:3 (аудио 5.1) и 0:4 (стерео аудио). Но на самом деле я хочу, чтобы стереодорожка шла перед звуком 5.1, поэтому я использую следующую команду для создания моего промежуточного файла:

ffmpeg -i "concat:VTS_02_0.VOB|VTS_02_1.VOB|VTS_02_2.VOB|VTS_02_3.VOB" -map 0:1 -map 0:4 -map 0:3 -f mpeg -c copy /tmp/intermediate.mpeg

31. Стабилизация всех файлов mp4 в папке

следующий код нужно вставить в отдельный bat-файл

mkdir 1
for %%i in (*.mp4) do (
ffmpeg -i "%%i" -vf vidstabdetect=shakiness=6:accuracy=15 -f null -
ffmpeg -i "%%i" -vf vidstabtransform=smoothing=12:zoom=5 "1\%%i"
del /Q transforms.trf
)

32. Собрать аудиокнигу из кучи файлов mp3 в один файл

следующий код нужно вставить в отдельный bat-файл

(for %%i in (*.mp3) do @echo file '%%i') > mylist.txt
ffmpeg -f concat -safe 0 -i mylist.txt -c copy output.mp3