Примеры ffmpeg

Posted by

-> утилита для кодирования видео, это набор свободных библиотек, позволяющий кодировать видео в различные форматы. Flash поддерживает чтение видео в стандартах H.263 (FLV) и H.264 (MP4, MOV и т.д.). Рассмотрим, как с помощью кодировать видео в эти форматы:

 * ffmpeg — утилита командной строки для конвертирования формата

видеофайла. С её помощью можно также захватывать видео в реальном

времени с TV-карты;

 * ffserver — HTTP (RTSP в настоящее время разрабатывается) потоковый

сервер для видео/радиовещания;

 * ffplay — простой медиаплеер, основанный на SDL и библиотеках FFmpeg;

 * libavcodec — библиотека, в которой содержатся все аудио/видеокодеки.

Большинство кодеков были разработаны «с нуля» для обеспечения

наилучшей производительности;

 * libavformat — библиотека мультиплексирования и демультиплексирования

в медиаконтейнер;

 * libavutil — вспомогательная библиотека, содержащая стандартные,

общие подпрограммы для различных компонентов ffmpeg. Включает в себя:

adler32, crc, md5, sha1, lzo-декомпрессор, Base64-кодер/декодер,

des-шифратор/дешифратор rc4-шифратор/дешифратор и

aes-шифратор/дешифратор;

 * libpostproc — библиотека, содержащая стандартные подпрограммы

обработки видео;

* libswscale — библиотека, предназначенная для масштабирования видео.

 * libavfilter — является заменой vhook, которая позволяет изменять

видеопоток между энкодером и декодером на лету.

  — это преобразование информации из одного формата в другой.

 

1) снимем CD диск (т.е. преобразуем с нашего диска 9 дорожку)

mplayer -fs cdda://9 -ao -pcm:file=track9.wav

 

2) снимем DVD диск (т.е. преобразуем с нашего диска 9 дорожку)

mplayer dvd://9 -ao -pcm:file=track9.wav

 

3) перекодируем во FLAC

flack track9.wav -> в этоге у меня получился файл, размер которого при стандартной степени сжатия составит около половины WAV

 

уровни сжатия: -0 (быстрое сжатие) -8 (максимальное сжатие) -q10 (максимальное сжатие)

 

3) утилитой lame

lame -h -V 6 track9.wav track9.mp3 -> создастся Mp3 с переменным битрейком. Доступны уровни от 0 до 9: чем меньше число, тем больше файл и лучше качество.

 

4) Постоянный битрейк, или CBR не всегда отдает этим битам должное, вот почему лучше использовать постоянный битрейк. При этом простые участки, например, с тишиной, записываются на минимальной (низком) битрейке, а при сложном звучании соответственно подрастает.

Алгоритмы сжатия с потерей данных [lossy] приводят к необратимым потерям информации. (пример: mp3,jpeg,ogg)

Полностью сберечь всю информацию можно, применяя алгоритмы сжатия без потерь [lostless]. (пример: zip,png — в музыке: FLAC (Free Lossless Audio Codec = свободный аудиокодек для сжатия без потери данных))

 

5) получение информации о файлах

ffmpeg -i green.avi

 

(Пример: )

keiz@mobikulum:~/test_avi$ ffmpeg -i MVI_4466.AVI

 

FFmpeg version r11872+debian_0.svn20080206-18, Copyright (c) 2000-2008 Fabrice Bellard, et al.

configuration: —enable-gpl —enable-libfaad —enable-pp —enable-swscaler —enable-x11grab —prefix=/usr —enable-libgsm —enable-libtheora —enable-libvorbis —enable-pthreads —disable-strip —enable-libdc1394 —enable-shared —disable-static

libavutil version: 49.6.0

libavcodec version: 51.50.0

libavformat version: 52.7.0

libavdevice version: 52.0.0

built on Jul 2 2009 03:48:11, gcc: 4.3.2

Input #0, avi, from ‘MVI_4466.AVI’:

Duration: 00:00:32.0, start: 0.000000, bitrate: 14590 kb/s

Stream #0.0: Video: mjpeg, yuvj422p, 640×480 [PAR 0:1 DAR 0:1], 30.00 tb(r)

Stream #0.1: Audio: pcm_s16le, 44100 Hz, mono, 705 kb/s

Must supply at least one output file

:)

 

Смотреть желательно со строки [Stream] -> здесь приводятся сведения о видео- и аудио-потоках, содержащихся в исследуемых файлах.

 

Эти сведения необходимо для правильной оценки кодируемой информации. Порой имеющиеся файлы можно оставить как есть или перенести в другой формат. Это должно войти в привычку.

 

6) Если хотим просматривать своё видео в формате PAL (PAL

Основной телевизионный стандарт в Европе (Россия, Франция — SECAM). Используется также в Великобритании, Австралии и Южной Африке. Название происходит от «Phase Alternate Line». Стандарт PAL использует метод добавления цвета к телевизионному сигналу черного и белого цвета. Создает на экране 625 строк с частотой 25 кадров в секунду.)

 

ffmpeg -i my_vid.avi -target pal-vcd anoncer_pal.mpg

ffmpeg -i my_vid.avi -target dv anoncer_dv.mpg

 

7) Формат FLV предназначен для потокового видео, однако существует

возможность использовать его и для локального хранения и

воспроизведения видео.

сконвертируем AVI-файл в FLV-формат

ffmpeg -i uploaded_file.avi output_file.flv

 

-b bitrate -> битрейт, параметр определяющий качество, по умолчанию 200кбит/с

-t duration -> продолжительность проигрывания

-ss start_pos -> смещение от начала исходного видеофрагмента (можно задать как количество секунд, так и время в формате ЧЧ:ММ:СС.Д)

 

уберем первые несколько секунд ролика, которое, не несут смысловой нагрузки (пример 16секундо и зададим битрейт в 512кбит/с)

ffmpeg -i uploaded_file.avi -ss 00:00:16:0 -b 512k output_file.flv

 

8) Формат 3GP (сокращение от англ. 3rd generation (mobile) phone) — это

видеофайлы для мобильных телефонов третьего поколения. Некоторые

современные мобильные телефоны (не обязательно 3G) имеют функции записи

и просмотра аудио и видео в формате 3GP. Этот формат — упрощённая

версия ISO 14496-1 Media Format, который похож на MOV, используемый

QuickTime. 3GP сохраняет видео как MPEG-4 или H.263. Аудио сохраняется

в форматах AMR-NB или AAC-LC. Готовые видеоролики в формате имеют малый

размер по сравнению с другими форматами видео, но, к сожалению, за счет

жертвы качеством.Чтобы произвести конвертацию файла в формат 3GP, нужно проделать почти

то же самое, что и с конвертацией файла в FLV-формат, но только задать

соответствующее расширение выходного файла и дополнительные настройки

кодеков.

 

узнаем установлен ли у нас кодес aac:

ffmpeg -formats | grep aac

нужные: установить libfaac, libx264

 

ffmpeg -i input_file.avi -s qcif -vcodec h263 -acodec aac -ac 1 -ar 8000 -r 25 -ab 32 -y out_file.3gp

 

Обратное преобразование в оригинальный avi-файл:

 

ffmpeg -i input_clip.3gp -f avi -vcodec xvid -acodec mp3 -ar 22050 output_file.avi

 

9) MPEG-4 — это международный стандарт, используемый преимущественно для

сжатия цифрового аудио и видео.

 

Кодирование в H.264:

ffmpeg -i input_file.avi -vcodec h264 -threads 0 -r 25 -g 50 -b 5000k -bt 500k -acodec mp3 -ar 44100 -ab 64k out_file.mp4

 

10) вытаскиваем саундтрек из фильма или аудиодорожки

а) получаем сведения о файле

б) определяем параметры звуковой дорожки

в) узнаем формат кодирования звука в требуемом файле

 

пример, звук в нашем файле идентифицируется так:

Stream #0.1:Audio: mp3, 44100Hz, stereo, s16, 80kb/s

 

теперь извлекаем звук из видеоролика

ffmpeg -i input_file.flv -vn -acodec copy soudtrack.mp3

 

-vn -> указываем что нам не нужно обрабатывать видео

copy -> следует кодировать выходной файл тем же самым кодеком, которым он расходируется.

 

теперь извлекаем аудио из AVI в высоким качеством звуковой дорожки для записи: (если понравилась какая либо музыка будь-то в фильме или клипе)

ffmpeg -i input_file.avi -vn -acodec pcm_s16le -ar 44100 -ac 2 output_file.wav (несжатая двухканальная аудиозапись с частотой дискретизации 44100Гц и 16-битным качеством)

||

ffmpeg -i input_file.wmw -vn -acodec copy output_file.wma

преобразуем wma в mp3

mplayer -quiet -vo null -vc dummy -af volume-0,resample=44100:0:1 -ao pcm:waveheader:file=output.wav output.wma lame -V0 -h -b 192 —vbr-new output.wav output.mp3

 

11) удаляем аудиодорожку (ненормативная лексика) из ролика, т.е. запись остается без аудиосодержимого.

ffmpeg -i input_censored_file.flv -an -vcodec copy output_censored_file.flv

 

-an -> не обрабатываем звук

 

12) сделаем маленькое превью изображения кадра, чтобы заинтересовать посетителя и дать предварительную информацию о содержимом. (очень удобно и прикольно)

 

ffmpeg -i video_input_file.flv -an -ss 30 -vframes 1 -s 340.180 -y -f mjpeg screenshot.jpg (создаем графический файл в формате JPEG, взяв кадр на 30-й секунде)

 

анимированное превью в формате GIF (укажем количество кадров, цветов и формат выходного файла)(можно делать прикольные аватарки)

ffmpeg -i input_file.avi -an -pix_fmt rgb24 -ss 40 -vframes 64 -s 128.128 -loop_output 0 -f gif -y screenshot.gif

 

13) разложение видеоряда на кадры (глупая затея но весело)

ffmpeg -i video.mpg image%d.jpg

Поддерживаемые графические форматы: PGM, PPM, PAM, PGMYUV, JPEG, GIF, PNG, TIFF, SGI

 

14) склеивание изображений в видеоряд

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

 

15) кодирование видеоряда для Apple 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 320×180 -title X final_video.mp4

 

ffmpeg -i some_movie.avi -f mp4 -vcodec libxvid -maxrate 1000 \

-qmin 3 -qmax 5 -bufsize 4096 -g 300 -acodec libfaac \

-mbd 2 -s 320×240 -ab 128 -b 400 some_movie.mp4

 

ffmpeg -i some_movie.avi -f mp4 -vcodec xvid -maxrate 1000 \

-qmin 3 -qmax 5 -bufsize 4096 -g 300 -acodec aac \

-mbd 2 -s 320×180 -padtop 30 -padbottom 30 \

-ab 128 -b 400 some_movie.mp4

 

Hiqh Quality 640×352 – формат .flv, для публикации на сайте

for f in *.avi; do ffmpeg -y -threads 8 -i $f -s 640×352 -aspect 16:9 -r 24 -b 360k -bt 416k -vcodec libx264 -pass 1 -vpre fastfirstpass -an $f.flv && ffmpeg -y -threads 8 -i $f -s 640×352 -aspect 16:9 -r 24 -b 360k -bt 416k -vcodec libx264 -pass 2 -vpre hq -acodec libfaac -ac 2 -ar 44100 -ab 64k $f.flv; done

 

HD 720p (2mbps) – формат .flv, для публикации на сайте

for f in *.avi; do ffmpeg -y -threads 8 -i $f -s 1280×720 -aspect 16:9 -r 24 -b 1536k -bt 1792k -vcodec libx264 -pass 1 -vpre fastfirstpass -an $f.flv && ffmpeg -y -threads 8 -i $f -s 1280×720 -aspect 16:9 -r 24 -b 1536k -bt 1792k -vcodec libx264 -pass 2 -vpre hq -acodec libfaac -ac 2 -ar 44100 -ab 128k $f.flv; done

 

iPhone 480×272 – формат .mp4

for f in *.avi; do ffmpeg -y -threads 8 -i $f -s 480×272 -aspect 16:9 -r 24 -vcodec libx264 -pass 1 -b 360k -bt 416k -vpre iphone -f mp4 -an $f.mp4 && ffmpeg -y -threads 8 -i $f -s 480×272 -aspect 16:9 -r 24 -vcodec libx264 -pass 2 -b 360k -bt 416k -vpre iphone -f mp4 -acodec libfaac -ac 2 -ar 44100 -ab 64k $f.mp4; done

 

‘-i‘ – source file (в нашем случае мы используем batch-конструкцию, для перекодирования очереди .avi-файлов;

‘-threads‘ – количество ядер компьютера;

‘-vpre‘ отвечает за выбор preset;

‘-y‘ – overwrite;

‘-s‘ – размер видео;

‘-aspect‘ – соотношение сторон;

‘-vcodec‘ – кодек (взят libx254);

‘-pass 1‘, и ‘-pass 2‘ – используем 2 прохода кодирования, для получения лучшего качества;

‘-r‘ – frame rate;

‘-b‘ – video bitrate;

‘-bt‘ – максимальная bitrate чувствительность – bitrate tolerance (максимально допустимый bitrate);

‘-f‘ – формат контейнера;

‘-acodec‘ – аудио-кодек (у нас faac);

‘-an‘ – блокировка звука, для ускорения кодирования мы не кодируем аудио в pass 1;

‘-ac‘ – количество каналов звука;

‘-ar‘ – частота звука в герцах;

‘-ab‘ – audio bitrate.

 

Остается пояснить конструкцию комманды

for f in *.РАСШИРЕНИЕ_ФАЙЛОВ; do ffmpeg -i $f -pass 1 ПАРАМЕТРЫ_ДЛЯ_PASS_1 ПРОМЕЖУТОЧНЫЙ_ФАЙЛ && ffmpeg -i $f ПАРАМЕТРЫ_ДЛЯ_PASS_2 КОНЕЧНЫЙ_ФАЙЛ; done

или

для всех переменны f в *.avi файлах; использовать ffmpeg с первыми параметрами и потом ffmpeg со вторыми параметрами; завершить исполнение

 

16) кодирование видеоряда для Sone PSP

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

 

17) преобразование WAV in MP3

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

 

18) узнать количество дорожек в целой группе фильмов

$ for f in *.avi; do echo -n «$f / » ; mplayer -endpos 0 -vo null «$f» 2> /dev/null | grep «Audio stream found»|wc -l ; done

for f in *.avi ;do mencoder -alang ru -ovc copy -oac copy «$f» -o «$f.t» && mv «$f.t» «$f» ; done

 

19) избавиться от ненужных дорожек

for f in *.avi ;do mencoder -alang ru -ovc copy -oac copy «$f» -o «$f.t» && mv «$f.t» «$f» ; done

 

20) преобразование MKV видеофайлов в формат AVI

для начала нам нужно установитьв систему пакет mkvtoolnix, в него входит нужная нам утилита mkvextract

 

распаковываем mkv

mkvextract tracks input.mkv 1:temp_video.avi 2:temp_audio.ac3 2:output.srt

 

объединяем в avi

ffmpeg -i temp_audio.ac3 -i temp_video.avi -vcodec copy -acodec copy output.avi

 

! Если ffmpeg в процессе кодирования выдает ошибку и прекращает работу, делаем так:

mencoder temp_video.avi -audiofile temp_audio.ac3 -ovc copy -oac copy -o output.avi

||

mencoder input.mkv -ovc copy -oac copy -of avi -o output.avi

||

mencoder input.mkv -oac mp3lame -lameopts vbr=3 -ovc xvid -xvidencopts fixed_quant=4 -of avi -o output.avi

 

Если возникает ошибка «Too many audio packets in the buffer», то можно

попробовать двухэтапную схему:

 

Выдергиваем несжатую аудиодорожку:

mplayer input.mkv -ao pcm:fast:file=audio.wav -vc null -vo null

 

Перекодируем видео, подставив звук через «-audiofile audio.wav»:

mencoder input.mkv -ffourcc divx -ovc lavc -lavcopts vcodec=mpeg4:vhq:vbitrate=6000 \

-audiofile audio.wav -oac mp3lame -lameopts vbr=3 -o output.avi

 

Для конвертации для просмотра на КПК нужно уменьшить vbitrate до 400 и добавить

опции масштабирования «-sws 2 -vf scale=352:-3».

 

ffmpeg -i <your_input.mkv> -sameq -vcodec libx264 -ab 128k -acodec libfaac -r 23.98 <your_output.mp4>

Unknown encoder ‘libx264’

keiz@ekz:~/mkv_avi$ sudo apt-cache search libx264

libx264-85 — x264 video coding library

libx264-dev — development files for libx264

keiz@ekz:~/mkv_avi$

 

mencoder input.mkv -oac copy -ovc copy -of avi -o output.avi

 

ffmpeg -i 17.mkv -vcodec ffv1 -an 17.avi

 

 

(MKV IN AVI)

ffmpeg -i film.mkv -vcodec copy -acodec copy film.avi

 

Leave a Reply

Ваш e-mail не будет опубликован. Обязательные поля помечены *

два × три =