Частичный перепост статьи с Хабра.
ffmpeg — это кроссплатформенная open-source библиотека для обработки видео- и аудиофайлов.
1. Получение информации о видеофайле
ffmpeg -i video.avi
или
ffprobe video.avi
Так же ffprobe поддерживает несколько форматов для вывода информации ini, json, xml
ffprobe -v 0 video.avi -print_format json -show_format ffprobe -v 0 video.avi -print_format xml -show_format ffprobe -v 0 video.avi -print_format ini -show_format
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.
Как вариант — вырезать один кадр из видео для создания, например, превью на сайте или в админке.
На последнем проекте использовал такую команду:
ffmpeg -ss 00:00:02
-i "file.flv" -f image2 -vframes 1 "file_out.jpg"
Вырезает первый кадр второй секунды из файла file.flv
и сохранить её в файле file_out.jpg
.
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.avi -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
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. Повернуть видео на 90°
ffmpeg -vf transpose=1 -i file.avi file1.avi
Опции transpose: 0 — против часовой стрелки и зеркально; 1 — по часовой стрелке; 2 — против часовой стрелки; 3 — по часовой стрелке и зеркально
21. Склейка 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
22. Захват видео с экрана:
ffmpeg -f x11grab -s cif -r 25 -i :0.0+10,20 /tmp/out.mpg
здесь -s cif — размер, 0.0 — экран, 10,20 — это смещение относительно верхнего левого угла экрана