Семь удивительных чудес с помощью программы FFmpeg
FFmpeg — многофункциональное, кросс-платформенное решение для записи, конвертации и воспроизведения аудио и видео. Программа умеет очень многое, но при этом распространяется под свободной лицензией GPL. Специалисты сайта Linuxaria приводят семь самых полезных и интересных случаев использования FFmpeg.
Конвертация аудио
Получить запись в MP3 из файла WAV проще простого:
ffmpeg -i my_audio.wav my_audio.mp3
Конвертация видео
Создать Flash-ролик из видео в формате MPEG можно следующим образом:
ffmpeg -i my_video.mpeg -s 500×500 my_video.flv
С помощью опции -s можно изменить размер кадра.
Извлечение изображений из видео
Иногда требуется извлечь из видеопотока определенный кадр. Сделать это можно и с помощью FFmpeg:
ffmpeg -i test.mpg image%d.jpg
Весь ролик test.mpg будет разобран на кадры image1.jpg, image2.jpg и т.д. по 25 кадров на каждую секунду видео. Но что делать, если нужно всего несколько кадров и не всего ролика, а только нескольких секунд? На помощь приходят опции -r (число кадров в секунду), -ss (временное смещение) и -t (продолжительность).
ffmpeg -i test.mpg -r 25 -ss 00:00:10 -t 00:00:05 images%05d.png
С десятой по пятнадцатую секунду ролика test.mpg будут сниматься отдельные кадры и сохраняться в файлах images00001.png, images00002 и т.д., по 25 кадров в секунду.
Извлечение аудиодорожки
Извлечь аудиодорожку в формате MP3 из видео в формате AVI не просто, а очень просто.
ffmpeg -i video.avi -vn audio.mp3
Запись происходящего на экране (скринкаст)
Вы шевелите мышь, открываете и закрываете окна и все это записывается в MPEG. Фантастика? Реальность!
ffmpeg -f x11grab -r 25 -s wxga -i :0.0 /tmp/outputFile.mpg
Видео из изображений
Мы уже умеем извлекать отдельные кадры из видео. Теперь научимся создавать видео из отдельных кадров:
ffmpeg -f image2 -i img%d.jpg /tmp/a.mpg
Запись видео с вебкамеры
Захватим видео с вебкамеры и сохраним в MPEG-файле с размером кадра 320x240:
ffmpeg -f video4linux2 -s 320x240 -i /dev/video0 out.mpg
А теперь то же самое, но еще и со звуком:
ffmpeg -f oss -i /dev/dsp -f video4linux2 -s 320x240 -i /dev/video0 out.mpg
Заключение
Разумеется, на этом чудеса FFmpeg не заканчиваются. FFmpeg позволяет, например, создавать сервера с потоковым вещанием. Полный список чудес можно узнать из официальной документации FFmpeg.
Комментарии
pomodor
8 марта, 2011 - 11:45
А еще FFmpeg просто обожают разработчики принципиально новых видеоплееров под Android. Берем FFmpeg, пишем кривой гуй, объявляем программу бесплатной и ждем пока народ бесплатно отловит все баги, объявляем программу платной. Profit! Половина платных видеоплееров паразитирует на FFmpeg и это еще одно, восьмое, чудо. ;)
Laestrygon
8 марта, 2011 - 13:28
И не только на Android. Под виндой такого добра тоже хватает. Правда, оно частенько распространяется бесплатно.
Чингачгук
11 сентября, 2011 - 15:41
А вот как быть с ошибкой "bind(port 8090): Invalid argument" при запуске ffserver ?
pomodor
12 сентября, 2011 - 00:51
Тут у одного юзера сходная проблема образовалась. Говорит, что просидел бессонную ночь и теперь предлагает патч.
Чингачгук
24 сентября, 2011 - 16:03
и куда ж этот патч пихать??
pomodor
24 сентября, 2011 - 22:19
Самому "пихать" ничего никуда не нужно. Этим занимается программа patch. Если опыта сборки из исходников нет, то поищите готовые сторонние сборки свежих версий под ваш дистрибутив.
Чингачгук
28 сентября, 2011 - 16:39
да нет, из исходников соберу без проблем. Но нет познаний в Си. Надо, так понимаю, просто скомпилировать этот патч? Или воткнуть куда-то в исходники, а потом запускать ./compile?
Чингачгук
8 октября, 2011 - 18:04
все, победил)
Комментировать