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