vvorth 22.11.2010 08:27
Скрипты на bash — Кодирование видео в mp4 для мобильных устройств.
Бывают видео, которые можно смотреть вечно.И просто записать их себе на телефон, уменьшив разрешение, бывает недостаточно - сенсорные нокии по умолчанию растягивают любое видео во весь широкоформатный экран(5530XM в частности), и лезть в меню чтобы переключить соотношение сторон просто лень.
Поэтому наваял такую функцию в .bashrc(можно и в отдельный файл вынести) чтобы автоматически выяснять в какое разрешение нужно изменить размер кадра и где, и на сколько залить оставшееся чёрным, чтобы разрешение видео соотвествовало соотношению сторон экрана, а разрешение полезного кадра оставалось с оригинальным соотношением сторон.
Собственно создаёт в текущей директории файл с именем, совпадающем с входным файлом, только расширение(не меняется!) добавляется в конце.
Хардкодить старался по минимуму, переменных всего 4(2 битрейта и окончательное разрешение) и 2 множителя(соотношение сторон 16 и 9), и изменив их можно использовать для других разрешений, соотношений.
Не стал добавлять замороченность с ключами, ведь телефоны меняются не часто, и обычно используются одни и те же параметры.
точно, есть же basename - совсем забыл!! а оригинаьлно расширение я как информацию решил оставить, изначально я туда разрешение ещё писал, но решил что излишество.
Только сейчас в ридере увидел что вчера был тоже скрипт для видео =.)))
Опоздал маленько :)
| grep ID_AUDIO_BITRATE | head -1 | awk -F= '{print $2}'`/1
поменять на
| grep ID_VIDEO_WIDTH | cut -f2 -d'='
| grep ID_AUDIO_BITRATE | head -1 | awk -F= '{print $2}'`/1
поменять на
| grep ID_VIDEO_WIDTH | cut -f2 -d'='
На счет заливки недостающей части черными полосами как-то раньше не задумывался.
Благо телефон адекватно реагирует на видео разного разрешения.
Спасибо за наводку.
Кстати расширение файла я меняю так:
FILENAME=`basename "$*"`
OUTPUTFILENAME=`echo "$FILENAME" | sed -e 's/\(.*\)\(\..*$\)/\1\.mp4/'`