|
|
||
|
|
Содержание подраздела:
Конвертер видео для nokia под linux.Как сделать видео воспроизводимым на nokia 770, 800, 810?
Понадобилось мне пережать flv большого размера в avi 400x240.
Перелопатив кучу ссылок в гугле, яху, яндексе, рамблере и т.д. я сумел нати только парочку достаточно кривых описаний А нужно мне от скрипта было следующее:
mencoder Исходный_файл.flv -idx -noodml -ofps 20 -vf scale=-2:240,crop=400:240 -ovc lavc \ -ffourcc XVID -lavcopts vcodec=mpeg4:vbitrate=384:vmax_b_frames=0:vhq -sws 9 -oac mp3lame \ -lameopts cbr:mode=0:br=96 -af resample=22050 -srate 22050 -o Итоговый_файл.avi; Т.к. у меня kubuntu (тоже что и ubuntu, xubuntu), то мне пришлось поставить себе lame и mencoder. Mplayer у меня уже был. (ну и sed естественно тоже.) И уже на основе этой самой строки написал следующий bash скрипт для конвертации видео именно под nokia (770,800,810 и т.д.):
#!/bin/bash
#=====================================
#
# Edit by Ben-Ja http://www.net4me.ru
# On Sat 21 Jun 2008 03:26:20 AM MSD
#
#=====================================
# Скрипт перекодировки любого видео (avi, flv, etc) в формат avi 400x240 для nokia 770 800 810 и т.д.
# Скрипт написан для себя "на коленке за полчаса" и не претендует на образец правильности и оптимизации.
# Зависимости:
# 1. apt-get install lame mencoder mplayer
# 2. apt-get install sed (Если у вас его нет)
# Небольшой конфиг:
# Для перекодирования целой директории, мы должны задать расширение исходных файлов
FORMAT=".flv";
# Конец конфига
REC="-r"; # параметр рекурсивности.
if [ -f "$1" ] && [ "$2" ] # Проверка существования файла и введенных параметров
then
# конвертируем файл $1 в $2
mencoder $1 -idx -noodml -ofps 20 -vf scale=-2:240,crop=400:240 -ovc lavc -ffourcc \
XVID -lavcopts vcodec=mpeg4:vbitrate=384:vmax_b_frames=0:vhq -sws 9 -oac mp3lame -lameopts \
cbr:mode=0:br=96 -af resample=22050 -srate 22050 -o $2;
wait; # Ждем завершения процесса кодирования
exit 0;
elif [ -d "$1" ] && [ "$2" ] && [[ $2 -eq $REC ]] # Если надо перекодировать все файлы в каталоге и всех его подкаталогах:
then
# конвертируем все файлы с заданым расширением
# в дирректории $1 и всех вложеных в неё директориях.
# Мы не можем юзать for i in $1 из-за вероятных пробелов в именах файлов.
find $1 \( -type f -and -name "*$FORMAT" \) -print0 | while read -d '' FILE;
do
mencoder $FILE -idx -noodml -ofps 20 -vf scale=-2:240,crop=400:240 -ovc lavc -ffourcc \
XVID -lavcopts vcodec=mpeg4:vbitrate=384:vmax_b_frames=0:vhq -sws 9 -oac mp3lame -lameopts \
cbr:mode=0:br=96 -af resample=22050 -srate 22050 -o $1$(echo -n $FILE |sed s/$FORMAT/.avi/g);
wait;
done
exit 0;
elif [ -d "$1" ] # Если надо перекодировать все файлы в каталоге
then
# кодим целую дирректорию $1
# Мы не можем юзать for i in $1 из-за вероятных пробелов в именах файлов.
echo "не рекурсивно одна директория";
echo "этот параметр еще не дописан.";
echo "если вы придумали вариант как это сделать не громоздко и лаконично, то просьба описать пример на net4me.livejournal.com";
exit 0;
else
# help
echo;
echo Use:;
echo 1. $0 ./file_from ./file_to;
echo 2. $0 path_to_directory;
echo 3. $0 path_to_directory -r for recursive;
echo for example:;
echo 1. $0 ./hack.flv ./not_hack.avi;
echo 2. $0 ./youtube/ or ./;
echo 3. $0 ~/flv_video/ -r;
exit 66;
fi
exit 0;
# end
Результаты: на входе фильм 1,4G ray.avi [XVID] 640x352 24bpp 25.000 fps 1129.9 kbps (137.9 kbyte/s) на выходе фильм 514M Ray.avi [XVID] 400x240 24bpp 20.000 fps 384.2 kbps (46.9 kbyte/s) На моей nokia 810 пережатый фильм идет "на ура" и места под него вполне хватает т.к. весит фильм почти в три раза меньше своего большого брата. В данном скрипте не хватает конвертации файлов в одной заданной директории. Т.к. Было уже поздно (точнее рано) и хотелось спать. И если честно, то меня вполне устраивает как этот скрипт работает на данный момент. Была идея изменять названия файлов убирая пробелы, потом пережимать, потом изменять на старые названия... Но это не оптимально. Если у вас возникнет желание дописать недостающую часть - милости прошу в эту тему для обсуждения конвертации видео для нокиа. Буду рад выслушать любые пожелания и комментарии. P.S. Низачто бы не сел писать эту статью, если бы нашел хоть что-то вменяемое на эту тему. При одиночной конвертации пробелы мешаются. Но это не так страшно как при рекурсивной обработке. Ben-Ja for net4me |