Конвертация видео-файлов в AVI под Ubuntu — MJPG -> XVID, 3GP/FLV(H264) -> XVID — с помощью mencoder и ffmpeg

Фотоаппараты обычно снимают видео в формате MJPG (MJPEG), который занимает слишком много места, посколько это на самом деле не видео, а набор JPG-файлов.
Смартфоны обычно снимают видео в формате 3GP (кодек h264), который тоже занимает много места…
Желательно такие видео-файлы сразу сконвертировать.
Я это делатю под Ubuntu пакетом – запускаю скрипт (sh), который получает список файлов и поочереди конвертирует их в любимый мной кодек xvid (и avi-контейнер).

1) MJPG -> XVID с помощью Mencoder
MJPEG пишут фотоаппараты (например Canon), там звук 11 кГц (и моно).
Скрипт такой:

#!/bin/bash
# with multiple arguments i.e.: ls *.{avi,AVI} | xargs avi_to_avi_q4.sh
N=$#;
echo "Converting $N files:"
for ((i=0; i<=(N-1); i++))
do
filename1=${1%.*}
filename2=${filename1}_xvid_q4.avi
echo "converting" $1 "to" $filename2 "... ..."
mencoder "$1" -ovc xvid -oac mp3lame -srate 11000 -xvidencopts fixed_quant=4 -o $filename2
shift 1
done

Главная строка здесь:
mencoder оригинал.avi -ovc xvid -oac mp3lame -srate 11000 -xvidencopts fixed_quant=4 -o результат.avi

2) 3GP (H264) -> XVID  или FLV (H264 / MPEG-4 AVC) -> XVID с помощью FFMpeg
Смартфоны/телефоны на Android снимают в контейнер 3gp с кодеком H.264… :

#!/bin/bash
# with multiple arguments i.e.: ls *.{avi,AVI} | xargs 3gp_to_avi_q4.sh
N=$#;
echo "Converting $N files:"
for ((i=0; i<=(N-1); i++))
do
filename1=${1%.*}
filename2=~/путь/${filename1}_xvid_q4.avi
echo "converting" $1 "to" $filename2 "... ..."
ffmpeg -i $1 -f avi -vcodec mpeg4 -vtag xvid -acodec libmp3lame -qscale 4 $filename2
shift 1
done

Главная строка в скрипте – это:
ffmpeg -i оригинал.3gp -f avi -vcodec mpeg4 -vtag xvid -acodec -acodec libmp3lame -qscale 4 результат.avi

Квантайзер Q (уровень качества) ставлю обычно 4.. Нормально?

Leave a Reply