Консольная программа для кодирования аудио/видео файлов, а также захвата аудио/видео потоков. Поддерживает большинство существующих форматов и кодеков.
Установка
Находим пакет ffmpeg в Центре Приложений Ubuntu или в Менеджере Пакетов Synaptic.
Или устанавливаем с помощью консоли:
sudo apt-get install ffmpeg
Установка из git
git clone git://git.videolan.org/ffmpeg cd ffmpeg ./configure --enable-gpl --enable-version3 --enable-nonfree --enable-postproc --enable-libfaac --enable-libmp3lame --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libtheora --enable-libvorbis --enable-libvpx --enable-libx264 --enable-libxvid --enable-x11grab make -j 2 sudo checkinstall --pkgname=ffmpeg --pkgversion="5:$(./version.sh)" --backup=no --deldoc=yes --fstrans=no --default cd .. rm -rf ffmpeg sudo apt-get autoremove libfaac-dev libjack-jackd2-dev libmp3lame-dev libtheora-dev libvdpau-dev libvorbis-dev libvpx-dev libxvidcore-dev libogg-dev libavfilter1 libva-tpi1
Основные ключи
| Ключ | Пример | Описание |
|---|---|---|
| -i <filename> | -i movie.avi | Путь/имя входного файла |
| -f <format> | -f mkv | Формат входного/выходного файла |
| -r <fps> | -r 23.976 | Количество кадров в секунду |
| -ss <position> | -ss 00:10:50 | Начальная позиция кодирования |
| -t <position> | -t 00:15:10 | Конечная позиция кодирования |
| -vframes <n> | -vframes 1000 | Задаем количество кадров кодирования |
| -y | -y | Разрешить перезапись выходного файла |
| -vcodec codec | -vcodec libx264 | Кодек кодирования видео |
| -acodec codec | -acodec libmp3lame | Кодек кодирования аудио |
| -vn | -vn | Не кодировать видео |
| -an | -an | Не кодировать аудио |
| -sn | -sn | Не использовать субтитры |
| -vlang code | -vlang eng | Выбираем язык видео |
| -alang code | -alang jpn | Выбираем язык аудио |
| -slang code | -slang rus | Выбираем язык субтитров |
| -sameq | -sameq | Сохранить видео в том же качестве |
| -s <size> | -s 720×400 | Размер видео кадра |
| -deinterlace | -deinterlace | Включаем деинтерляцию. |
Ключи настройки видео
Данные настройки необходимы для более точного задания характеристик выходного видео. Желательно использовать, только если вы уже знакомы с основами кодирования, иначе есть вероятность сделать выходное видео только хуже.
Продвинутые ключи настройки x264
добавить аналоги для x264
| Ключ | Описание | |
|---|---|---|
| Frame-type options | По умолчанию | |
| -g <integer> | Максимальный интервал между ключевыми кадрами | 250 |
| -bf <1-16> | Задаем количество В-фремов | 3 |
| -refs <1-16> | Задаем количество рефремов | 3 |
| -b_strategy <0-2> | Позволяет x264 адаптивно решать, где будут использоваться B-кадры, уменьшая количество B-кадров там, где это не нужно. | |
| -deblockalpha < -3 .. +3> | Задаем силу подавления блоков | 0 |
| -deblockbeta < -3 .. +3> | Задаем точность определения блоков | 0 |
| -flags -loop/+loop | Отключение/Включение фильтра подавления блочности | |
| -flags -psnr/+psnr | Отключение/Включение расчета psnr. Отключение, немного, увеличит скорость кодирования | |
| -flags2 +bpyramid | Позволяет B-кадрам быть связанными между собой, увеличивая эффективность использования 2-х или более B-кадров | |
| -flags2 -fastpskip | Быстрый пропуск определения P-кадров повышает скорость, но может вызвать небольшую блочность в местах, где есть непрерывная цветовая гамма или лёгкий градиент (тёмные сцены или небо) | |
| -bframebias < -100 .. 100> | Уровень преобладания B-кадров | 0 |
| -coder <0,1> | Включаем или отключаем использование CABAC. 0 - выключено, 1 - включено | 0 |
| Анализ (Analysis) | По умолчанию | |
| -directpred <integer> | Определяет метод нахождения векторов движения для B-кадров | 2 |
| -partitions <string> | Разрешает производить дополнительный поиск размеров макроблоков, увеличивая эффективность кодирования и качество, но уменьшая скорость. ffmpeg использует только p8x8, p4x4, b8x8, i8x8, i4x4 | |
| -me_method <epzs,hex,umh,full> | Выбираем метод оценки движения полного пикселя | hex |
| -me_range <integer> | Максимальное количество попыток (с измененными данными) нахождения оптимального варианта при поиске вектора движения макроблока | 16 |
| -subq <1-9> | Задаем сложность оценки подпикселя | 7 |
| -trellis <0,1,2> | Задаем значение трелис | 0 |
| -flags2 +mixed_refs | Включаем смешанное заимствование референсных кадров | |
| -flags2 +dct8x8 | Разрешаем умное использование преобразований 8×8 в I-кадре | |
| -flags2 -fastpskip | Задаем значение треллис квантования для повышения эффективности сжатия | |
| -flags2 +wpred | Разрешает взвешенное предсказание яркости для B-кадров, которое улучшает затухания и градиенты цвета (небо и т. п.) | |
| -cmp -chroma/+chroma | | |
| -sc_threshold <integer> | Чувствительность смены сцен Порог обнаружения смены сцены в кадре - для вставки принудительного ключевого кадра | 40 |
| -i_qfactor <float> | Коэффициент квантования для I-P кадров. | 1.40 |
| -qcomp <integer> | Уровень кривой квантования. Чем выше - тем выше битрейт, и на оборот. | 0.6 |
| -qmin <integer> | Минимальный квантизер | 10 |
| -qmax <integer> | Максимальный квантизер | 51 |
| -qdiff <integer> | Максимальный шаг квантизера | 4 |
| Rate Control | ||
| -crf <0..51> | Режим постоянного качества. Чем больше значение, там ниже качество. Разумный диапазон: 18-26 | |
| -cqp <integer> | Режим постоянного квантизера. Лучше не использовать, так как crf дает лучшее качество при том же битрейте | |
| -b <integer> | Задаем битрейт | |
| -pass <1,2,3> | Номер прохода кодирования | |
| Presets | ||
| -level <10..51> | Задаем уровень сложности AVC 1). Где 10 = 1.0, 51 = 5.1. Все уровни: 1, 1.1, 1.2, 1.3, 2, 2.1, 2.2, 3, 3.1, 3.2, 4, 4.1, 4.2, 5, 5.1 | |
| -vpre <string> | Выбираем прессет2) | |
Продвинутые ключи настройки xvid/MPEG4
| +mv4 | Разрешаем использование четырех векторов поиска движения (MPEG-4 only) |
| +aic | Advanced intra coding (h263+) |
| -cmp | Function fullpel compare function |
| -subcmp | Поиск движения с точностью до четверти пикселя |
| -qscale | Задаем статический кванталайзер |
| +chroma | Включаем хрома-оптимизацию |
| -bf <1-16> | Задаем количество В-фремов |
| -trellis <0-2> | Задаем уровень треллис квантования. Повышает сжатие |
| -mbd | Режим принятия решений о макроблоке |
Ключи настройки аудио
| Ключ | Пример | Описание | По умолчанию |
|---|---|---|---|
| -ab <bitrate> | -ab 256k | Битрейт аудио | 64kbit/s |
| -ac <channels> | -ac 6 | Количество каналов | 2 |
| -ar <freq> | -ar 41000 | Частота дискредитации | 44100Hz |
| -aq <0-100> | -aq 100 | Качество аудио |
Прессеты для x264
Прессеты хранятся в /usr/share/ffmpeg.
Можно посмотреть через консоль:
ls /usr/share/ffmpeg
Все прессеты - это текстовые файлы. Каждый из них можно просмотреть и даже изменить, а также создать новый, свой.
Вот список стандартных прессетов:
baseline faster fast ipod320 ipod640 lossless_fast lossless_max lossless_medium lossless_slower lossless_slow lossless_ultrafast main medium placebo slower slow superfast ultrafast veryfast veryslow
Применение
- Экспорт аудио, с перекодированием:
ffmpeg -i "movie.avi" -vn -acodec libmp3lame -ab 192 -f mp3 "song_out.mp3"
- Экспорт аудио, без перекодирования:
ffmpeg -i "movie.avi" -vn -acodec copy -f mp3 song_out.mp3
ffmpeg -y -i "movie.mkv" -vcodec libx264 -crf 22 -partitions +parti4x4+parti8x8+partp4x4+partp8x8+partb8x8 -me_method umh -subq 9 -trellis 2 -refs 8 -bf 6 -coder 1 -g 250 -me_range 24 -qmin 10 -qmax 51 -flags2 +bpyramid+wpred+mixed_refs+dct8x8 -threads 2 -acodec flac -aq 100 "out.avi"
- Кодирование в x264 и flac, используя прессеты:
ffmpeg -i "movie.avi" -vcodec libx264 -vpre lossless_medium -acodec flac -aq 100 -y "out.avi"
- Кодирование в xvid и mp3:
ffmpeg -i "movie.avi" -vcodec libxvid -qscale 2 -s 720x400 -acodec libmp3lame -ac 2 -ab 128k -y "out.avi"
- Кодирование в MPEG4 и mp3:
ffmpeg -i "movie.avi" -vcodec mpeg4 -mbd rd -flags +mv4+aic -trellis 2 -cmp 2 -subcmp 2 -g 300 -qscale 3 -acodec libmp3lame -ac 2 -ab 128k -y "out.avi"
- Кодирование аудио из AC3 в flac:
ffmpeg -i "intput.ac3" -vn -acodec libfaac -ac 2 -aq 100 -ar 48000 -y "out.flac"
- Склеиваем изображения в видео:
(изображения должны иметь имена 000.jpg, 001.jpg, 002.jpg …)
ffmpeg -r 15 -b 2000 -i %03d.jpg images2video.avi
Ссылки
Английское описание ключей кодирования.
Русское описание ключей кодирования.