В этой заметке я хотел бы поделиться парой полезных примеров использования ffmpeg. Если кто-то вдруг не в теме, ffmpeg — это набор библиотек с открытым исходным кодом для кодирования/декодирования аудио и видео. В моей любимой ОС FreeBSD его можно поставить из портов — /usr/ports/multimedia/ffmpeg/, как это сделать под Вашей операционкой — не знаю, но думаю, Вы без меня разберетесь :) Давайте перейдем к примерам.
1. Вырезать припев из аудио-файла.
С помощью этого приема я делаю рингтоны для своего мобильного из mp3-файлов.
ffmpeg -ss 00:01:59.0 -t 37 -i ~/mp3/Morcheeba_-_Even_Though.mp3 -acodec copy call.mp3
Я думаю, какой аргумент для чего нужен, тут понятно без описания. Самое сложное в создании рингтона — определить начало и конец отрывка песни, который мы хотим вырезать. Я для этого использую mplayer, но возможно, что подойдет и Ваш любимый проигрыватель.
2. Вырезать звук из видео-файла.
Как-то раз я скачал с YouTube видео с metal-версией темы из «Пиратов карибского моря». Кому интересно, это видео где-то здесь, точно не помню. Кстати, для скачивания видео с YouTube, я пользуюсь утилитой youtube-dl, но это тема для отдельного поста :) Мне очень захотелось сохранить музыку себе на плеер, что я и сделал следующей командой:
ffmpeg -i pirates-metal.flv -acodec copy pirates-metal.mp3
В общем случае, нужно сначала выяснить, каким кодеком сжат звук в видео-файле:
ffmpeg -i pirates-metal.flv
......
Input #0, flv, from 'pirates-metal.flv':
Duration: 00:02:53.94, start: 0.000000, bitrate: 297 kb/s
Stream #0.0: Video: flv, yuv420p, 320x238, 233 kb/s, 29.92 tbr, 1k tbn, 1k tbc
Stream #0.1: Audio: mp3, 22050 Hz, stereo, s16, 64 kb/s
At least one output file must be specified
Мне повезло, звук уже хранится в mp3, так что перекодировать его не придется (потому говорим -acodec copy), а следовательно качество не будет потеряно. Действительно, 64 kbps — качество так себе, после перекодирования звук мог получиться вообще ни на что не годным. Если звук хранится не в mp3, его можно перекодировать, сказав "-acodec libmp3lame" вместо "-acodec copy".
3. Преобразуем .flv в .avi.
А теперь мы хотим передать это видео друзьям. По почте или на флешку скопировать. Скорее всего их плеер без труда откроет .flv файл, но лучше все-таки перестраховаться:
ffmpeg -i pirates-metal.flv -acodec copy -vcodec mpeg4 pirates-metal.avi
Тут мы перекодируем видео, используя кодек mpeg4. По-моему, все предельно просто. Кстати, после перекодирования, видео-ролик занимает чуть поменьше места на диске:
ls -la pirates-metal.*
-rw-r--r-- 1 eax eax 6078844 31 май 11:50 pirates-metal.avi
-rw-r--r-- 1 eax eax 6417206 26 май 13:17 pirates-metal.flv
-rw-r--r-- 1 eax eax 1264724 31 май 11:00 pirates-metal.mp3
Можно ужать его еще сильнее, указав меньший битрейт, правда от этого может пострадать качество видео. Подробнее о вычислении битрейта можно прочитать
вот в этой замечательной статье. Еще пара интересных примеров использования ffmpeg есть
в Википедии .