Кодирование видео с помощью ffmpeg

Уж сколько статей на эту тему написано - каждый хочет свою :)

К сожалению, поддержка мультимедиа в Debian оставляет желать лучшего, поэтому Christian Marillat открыл ресурс http://www.debian-multimedia.org/ , где выложены свежие версии необходимых пакетов.
Для конвертации видео и возможности дальнейшего комфортного просмотра на телефоне Sony Ericsson K800i порежем файл на части:

#!/bin/sh

LENGTH=600 # длительность части в секундах

for i in `seq 0 18` # здесь 18 - последний кусок. Подбирается экспериментально или рассчитывается из длительности ролика
do
	let "SEEK = $i * $LENGTH"
	PART=`printf "%02d" $i`
	ffmpeg -ss $SEEK -t $LENGTH -threads 4 -i input_file.mkv -vcodec mpeg4 -s 320x240 -acodec libfaac -ab 32k -ar 22100 -ac 1 -r 15 "$PART"output_file.mp4
done

Если результат нужен в формате 3gp (3rd generation (mobile) phone, видео: битрейт неограничен, кодек h.263, максимальная частота кадров- 15к/с, размер картинки 128х96 или 176х144, аудио: максимальный битрейт 12.2 кбит/с, кодек AMR-NB (очень редко AMR-WB до 23,86кбит/с с 16кГц), частота дискретизации 8кГц, моно) - используем следующую команду:

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

Обработка же видео для Sony PlayStation Portable (PSP) имеет некоторое отличие. В простейшем варианте можно использовать

ffmpeg -i input_file.avi -f psp -s 368x208 -aspect 16:9 -vcodec mpeg4 -b 500k -acodec libfaac -ab 96k -ac 2 output_file.MP4

Однако, разработчики ffmpeg рекомендуют использовать дополнительные опции:

ffmpeg -i input_file.avi -acodec libfaac -ab 128kb -ac 2 -ar 48000 -vcodec libx264 -level 21 -b 640kb -coder 1 -f psp -flags +loop -trellis 2 -partitions +parti4x4+parti8x8+partp4x4+partp8x8+partb8x8 -g 250 -s 480x272 output_file.mp4

Для набора *.vob вырезаем первые 1:46:30 (длительность интересующей части) для конвертирования в один .avi

cat VTS_01_1.VOB VTS_01_2.VOB VTS_01_3.VOB VTS_01_4.VOB VTS_01_5.VOB | ffmpeg -i - -threads 4 -t "1:46:30" -f avi -vcodec mpeg4 -b 1650k -g 300 -bf 2 -acodec libmp3lame -ab 128k uotput_file.avi

Битрейт для видео подбиралсяиз рассчёта желаемого размера результата к длительности фильма.

( categories: )