Tuesday, October 21, 2014

Создание локального репозитория Ubuntu 10.04

Постепенный перевод предприятия на GNU/Linux порождает необходимость соответствующих изменений в инфраструктуре. Сегодня мы решаем проблему глобального обновления клиентских машин путем создания локального репозитория. Процесс изначально документировался как памятка на будущее, потому заранее прошу прощенья за возможные несуразности в тексте. Итак.
Для начала следует определиться, посредством чего лучше сделать это. Интернеты выделяют двух фаворитов rsync и debmirror. Выбрал последний, ввиду его большей гибкости.


1. Получение ключей

Для создания зеркала репозитория необходимо получить ключ «Ubuntu Archive Automatic Signing Key ». Для этого в терминале от суперюзера вводим:
gpg --no-default-keyring --keyring trustedkeys.gpg --recv-keys 437D05B5

2. Подготовка пространства

Создаем папку для репозитория:
sudo mkdir /path/to/repository
Важно! Потрудитесь проследить за наличием свободного места в указанном пути. Даже две архитектуры i386 и amd64 займут приличное его количество.

3. Получение пакетов

Зеркалирование проходит в три этапа:

1. Загрузка индекстых файлов;
2. Удаление неизвестных файлов (отключается опцией --nocleanup ниже);
3. Построение списка по индексным архивам и проверка на наличие в локальном репозитории.Для реализации вышеперечисленного создадим файл repo_update.sh со следующим содержанием.


#!/bin/sh
#Это конфигурация нашего репозитория. В зависимости от параметров, указанных
#здесь, мы получим нужное нам его содержимое.

#Опция cleanup. Включена по умолчанию. После закачки пакетов удаляет ранние
#версии. Для отключения опции необходим параметр --nocleanup
clean=--nocleanup
#Опция source. Закачивает исходные коды пакетов. Если вы не пользуетесь
#исходными кодами для изучения и модификации приложений ( что свойственно для
#бинарных дистрибутивов), смело ставьте опцию --no-source
src=--source

#Host. Имя сервера, откуда мы берем пакеты.
servername=mirror.yandex.ru

#Root. Корневая директория на выбранном нами сервере.
rdir=/ubuntu

#Имя релиза Ubuntu. Настройки для 10.04 версии.
release=lucid,lucid-backports,lucid-proposed,lucid-security,lucid-updates

#Секции.
section=main,restricted,universe,multiverse

#Протокол синхронизации. Debmirror поддерживает следующие способы: http,
#hftp, ftp, rsync
sync_protocol=rsync

#Архитектура. Если используются исключительно 32 или 64х битные системы.
#Одну из архитектур можно убрать. Также если используются иные архитектуры,
#их следует добавить.
arch=i386,amd64

#Местоположение репозитория. Указывайте локальную папку, созданную. в п 2.
path=/path/to/repository

debmirror --progress --verbose $clean $src --md5sums --host=$servername --root=$rdir \
--dist=$release -s=$section --method=$sync_protocol -a=$arch $path

Теперь поместим его в директорию /usr/local/bin и сделаем исполняемым.
chmod +x repo_update.sh
sudo cp repo_update.sh /usr/local/bin/


Далее запустим получившийся скрипт и дождемся завершения процесса. Процесс достаточно долгий. Время выполнения сильно зависит от ширины вашего интернет-канала.
sudo /usr/local/bin/repo_update.sh
Внимание! Размер скачиваемого переваливает за десятки гигабайт, а казеный интернет редко бывает безлимитным. Более того, debmirror чувствителен к стабильности соединения, 120 секунд простоя и все придется начинать сначала.

4. Настройка web-сервера

Дабы не совершать лишних плясок с бубном выберем протокол http, как традиционный метод предоставления доступа к репозиторию. Выбор web-сервера остается за Вами. Из фаворитов ngnix, apache и lighttpd, выбрал последний ввиду отсутствия опыта работы с оным (приятное с полезным, да). Итак.

Установка сервера.

sudo apt-get install lighttpd
Здесь все просто. Если Вы не планируете использовать в качестве www директории отличную от умолчания, то сервер в настройке не нуждается. Все, что сам нужно сделать, это создать символьную ссылку в директории /var/www
ln -s /path/to/repository /var/www/ubuntu

Проверим доступность репозитория из браузера: http:///ubuntu/

5. Настройка клиентов

Здесь мы применим маленькую хитрость. Дабы не вносить изменений в /etc/apt/sources.list (мало ли что случится). Добавим в файл /etc/hosts пару строчек.
ru.archive.ubuntu.com
security.ubuntu.com
Примечание. При наличии DNS сервера можно все это прописать в нем, а на сервере репозитория прописать истинные адреса вышеупомянутых имен.

6. Автоматизация

А теперь самое сладкое. Заставим все это крутиться самостоятельно.

6.1 Серверная часть

В пункте #3 мы создавали скрипт, при помощи которого получали пакеты. Настроим его автозапуск средствами демона cron.
sudo crontab -e

В который добавим заветную строчку:

0 0 * * * /usr/local/bin/repo_update.sh
Теперь ежедневно в 0:00 наш скрипт будет делать за нас всю рутинную работу.

6.2 Клиентская часть

На клиентах создадим скрипт system_upd.sh в директории /usr/local/bin следующего содержания:
#!/bin/sh
apt-get -y update && apt-get -y upgrade && apt-get -y clean

Не забудем сделать его исполняемым.
sudo chmod +x /usr/local/bin/system_upd.sh

После чего открываем cron:
sudo crontab -e

И добавляем строчку:
40 17 * * * /usr/local/bin/system_upd.sh

Теперь каждый день в 17:40 система будет опрашивать наш репозиторий на предмет наличия обновлений и обновляться, если таковые будут найдены.

Внимание! При работе с crontab следует не забывать, что после строчек с заданиями обязательно должна быть пустая строка, которая обозначается знаком '#'.

Готовим Debian к переводу часов 26 октября 2014 года

Приближается 26 октября 2014 года — день, когда в 2 часа ночи в большинстве регионов России в очередной (и как снова обещано в последний) раз часы буду переведены на час назад. Кроме того, в некоторых регионах происходит смена часового пояса. Ознакомиться подробно где и что меняется можно в Федеральном законе от 21.07.2014 № 248-ФЗ «О внесении изменений в Федеральный закон „Об исчислении времени“.

В этом посте я хочу акцентироваться на вопросе приведения в актуальное состояние данных о часовых поясах в Debian.

Debian для хранения информации обо всех часовых поясах, существующих в мире, использует базу timezone database (короткое название tzdata). Эта база содержит полные данные обо всех изменениях часовых поясов, которые происходили в мире по тем или иным причинам, что позволяет вести точные расчеты локального времени на любой момент, начиная с 1 января 1970 года. В частности, актуальная версия tzdata позволяет получить точное локальное время как в период времени до вступления в силу Федерального закона №248-ФЗ, так и после (начиная с 2 часов ночи 26 октября 2014 года). В Debian база tzdata распространяется в виде одноименного пакета.

Изменения, которые вносит Федеральный закон №248-ФЗ, отражены в базе tzdata, начиная с версии 2014f. По состоянию на 18 октября 2014 года в официальных репозиториях Debian для Wheezy (stable) и Squeeze (oldstable) пакет tzdata имеет более раннюю версию 2014e, в которой еще не предусмотрен перевод часов в России 26 октября 2014 года. В то же время для Jessi (testing) (Update1: с 19.10.2014 и для Wheezy (Stable) уже выложена актуальная версия 2014h. Таким образом, в Wheezy и Squueze для корректного исчисления времени после 26 октября потребуется установить пакет своими силами. Сделать это просто:

wget http://ftp.ru.debian.org/debian/pool/main/t/tzdata/tzdata_2014h-2_all.deb 
dpkg -i tzdata_2014h-2_all.deb 

После этого в системе будет установлена обновленная версия tzdata, однако для того, чтобы её начали использовать уже запущенные в системе сервисы (в частности syslog), потребуется выполнить их перезапуск.

Приведу также пример простого скрипта, который позволит проверить, что в вашей системе используется правильная база часовых поясов. Скрипт tzdata.sh выполняет проверку для Московского часового пояса:

tzcheck.sh:
#!/bin/sh
T1=$(LC_ALL=C TZ=Europe/Moscow date -d @1409067890)
if [ "$T1" != 'Tue Aug 26 19:44:50 MSK 2014' ] ; then
    echo FAIL! Wrong TZ BEFORE 26 Oct 2014!
    exit 1
fi
T2=$(LC_ALL=C TZ=Europe/Moscow date -d @1416667890)
if [ "$T2" != 'Sat Nov 22 17:51:30 MSK 2014' ] ; then
    echo FAIL! Wrong TZ AFTER 26 Oct 2014!
    exit 2
fi
echo OK


Если всё в порядке, будет выведена надпись OK.

Если у вас в системе установлена Java, то одним обновлением пакета tzdata обойтись не получится. И OpenJDK, и Sun/Oracle Java используют свои, отдельные от общесистемных, базы данных часовых поясов. Их тоже потребуется обновить.

В случае OpenJDK база представляет собой пакет tzdata-java, имеющий те же номера версий, что и пакет tzdata. Обновить его просто по аналогии:

wget http://ftp.ru.debian.org/debian/pool/main/t/tzdata/tzdata-java_2014h-2_all.deb
dpkg -i tzdata-java_2014h-2_all.deb

В случае с Java от Sun/Oracle потребуется воспользоваться специальной утилитой Java Time Zone Updater Toolскачав её с сайта Oracle. Для обновления базы часовых поясов потребуется запустить её с ключом -u

java -jar tzupdater.jar -u

Обратите внимание, что если вы когда либо ранее скачивали данную утилиту, то воспользоваться этой старой версией нельзя — она ничего не обновит. С каждым обновлением базы часовых поясов Oracle выпускает новую версию этой утилиты, для получения самой актуальной базы нужно пользоваться текущей версией.

Как и в случае с обычными сервисами, уже запущенные Java-приложения могут потребовать перезапуска для того, чтобы они начали пользоваться обновленной версией базы часовых поясов.

Ниже привожу пример кода на Java, который позволит проверить для Московского часового пояса, что с исчислением времени в Java у вас всё хорошо:

tzcheck.java:
import java.util.*;
import java.text.DateFormat;

public class tzcheck {
    public static void main(String[] args) {
        Calendar cal = Calendar.getInstance(TimeZone.getTimeZone("Europe/Moscow"));
        DateFormat df = DateFormat.getDateTimeInstance(DateFormat.FULL, DateFormat.FULL, Locale.US);
        df.setCalendar(cal);

        cal.setTimeInMillis(1409067890L * 1000L);
        if (!df.format(cal.getTime()).equals("Tuesday, August 26, 2014 7:44:50 PM MSK")) {
            System.out.println("FAIL! Wrong TZ BEFORE 26 Oct 2014!");
            System.exit(1);
        }

        cal.setTimeInMillis(1416667890L * 1000L);
        if (!df.format(cal.getTime()).equals("Saturday, November 22, 2014 5:51:30 PM MSK")) {
            System.out.println("FAIL! Wrong TZ AFTER 26 Oct 2014!");
            System.exit(2);
        }

        System.out.println("OK");
        System.exit(0);
    }
}

Компилируем и запускаем:

javac tzcheck.java
java tzcheck

Если всё в порядке, будет выведена надпись OK.

Update1: На выходных пока пост был на модерации для Wheezy выпустили штатный пакет с актуальной tzdata + вышла версия 2014h-2, ссылки в тексте поменял.
10456
105
rantal 18,3

Комментарии (22)

0
alexxxst,#
Ссылки проверяли?

wget http://ftp.ru.debian.org/debian/pool/main/t/tzdata/tzdata_2014h-1_all.deb
ОШИБКА 404: Not Found.
0
rantal,#
Спасибо, уже после публикации вышел 2014h-2. Я поправил ссылки.
+1
evg_krsk,#
Спасибо за жабу :-)

А в Wheezy уже приехал штатный пакет.
0
Slipeer,#
Я бы добавил ещё одно замечание в статью:
Существует много ПО использующего не системную, а собственную java машину. Обновление tzdata-java в системе на неё не повлияет.
Проще всего:
  1. Вычислить какие java машины у Вас используются в системе. Например просмотреть список процессов java
    ps aux | grep java
    

    В выводе будет видно где установлена используемая java машина.
  2. Для каждой обнаруженной java машины в системе запустить
    <полный путь к обнаруженному java> -jar tzupdater.jar -u
    


А то может быть сюрприз ;)
Часто собственными java «страдают» вендоры всяческих бизнес приложений.
–2
crmMaster,#
Хранишь время не в UTC — страдай! Давно уже известно.
0
Slipeer,#
При чём тут это?
Время помимо хранения должно ещё:
  1. Отображаться пользователю
  2. Корректно преобразовываться в UTC из пользовательского ввода
0
crmMaster,#
Конкретно к посту это не имеет отношения, т.к. про хранение в ней ни слова.
Это больше эмоциональное высказывание в честь очередной смены часового пояса.
+2
SkazochNik,#
Зачем проверять текущее время? Если оно неправильно сейчас, то сервер пора выбрасывать. Делал такую проверку правил перевода часов на своем SLES:

STR=`/usr/sbin/zdump -v /etc/localtime|grep 2014`

if [ -z "$STR" ];
    then
    echo "Timezone is out of date. Need update."
    else
    echo "Timezone is already updated, exiting."
    exit;
fi


Когда снова придется проверять нужно ли обновление, я поменяю одну очевидную циферку, а не две магических.

CAELinux: дистрибутив Linux для инженеров


image

На Хабре о дистрибутиве CAELinux практически не писали (упоминали лишь раз), и совершенно напрасно. Это — специализированный дистрибутив для инженеров, с большим количеством предустановленного ПО для разного рода технических задач.

При этом CAELinux долгое время не обновлялся, более двух лет, и, наконец, вышла версия CAELinux 2013 (видимо, разработчики планировали выпустить обновленный дистрибутив немного раньше). Теперь новый стабильный релиз ОС Computer Aided Engineering (или САЕ) доступен для скачивания.

Стоит отметить, что CAELinux основан на 64-битной версии Xubuntu 12.04 LTS (которая, в свою очередь, является производной Ubuntu). Среди ПО, представляемого вместе с дистрибутивом, есть CAD-программы, различные 3D-инструменты анализа гидродинамики, 3D-инструменты работы с сигналами и их анализом. Есть инструментарий математического моделирования, работы с 3D анимацией и все прочее.

ПО поделено на разделы, среди которых стоит выделить раздел электроники. Здесь есть приложения, позволяющие работать с Arduino, проектировать печатные платы, использовать 3D печать (PyCAM, Dxf2Gcode и GcodeTools, LibreCAD, SagСАD, FreeCAD и OpenSCAD).

Стоит также выделить следующее ПО:

  • Пакет для моделирования и анализа протекания термодинамических процессов SALOME_MECA 2013.1;
  • Системы 2D и 3D проектирования (САПР) и технологической подготовки производства: Salome, Freecad и OpenSCAD (3D CAD), LibreCad, SagCad (2D CAD), PyCAM, GCAM, dxf2gcode, OpenSCAM, CURA (3D-печать)
  • Системы пре- и постобработки данных: Paraview 3.10.2, Discretizer, EnGrid 1.4, Helyx-OS, Elmer GUI, Netgen, Tetgen, CGX, GMSH v2.5, Salome v.6., Meshlab;
  • Пакеты по вычислительной гидродинамике OpenFOAM 2.1.1Gerris и Code-Saturne 3.0;
  • Системы симуляции физических процессов: Elmer v6.2Calculix 2.6, Impact, MBDyn, DynELA, FEniCS;
  • Пакеты для научных расчётов: OpenModelica, GNU Octave (+ QtOctave GUI ), R & RKWard, Scilab, wxMaxima, SciPy, LaTeX.







Скачать можно здесь. Дистрибутив выложен в виде LiveDVD/LiveUSB, с размером в 3,8 ГБ.

Via caelinux + opennet

Linux для профессионалов: видео-монтаж (и немножко композинг)

 tutorial

Привет коллеги. Думаю, пришло время продолжить начатый некогда цикл «Linux для профессионалов». Сегодня я бы хотел рассказать о монтаже видео на примере ролика, который мы сняли прошлым летом для нашей пражской затеи с электронным GPS аудио-путеводителем.

Собственно ролик (если быть точным, то это демонстрационный мини-фильм).



Весь цикл постобработки и монтажа выполнен с использованием программного обеспечения под управлением ОС Linux.

По-правде говоря, есть один нюанс. Я для подготовки титров сперва использовал AI, запущенный под Wine. Связано это было отчасти с тем, что я, будучи скован врененными рамками, не уделил должное внимание поиску native альтернатив. В действительности, как оказалось, такая альтернатива, вполне лежащая на поверхности, существует. Ниже расскажу подробнее.

Итак, по-порядку.

Вдаваться в съемочный процесс, полагаю, особого смысла нет. Единственное, наверное, стоит сказать, что снимали мы на Canon EOS 600D со стандартной прошивкой, для записи звука использовали проводной микрофон-петличку подключенную непосредственно к камере.



Надо отметить, что я несколько волновался по поводу качества звука, потому как визуального монитора в стандартной прошивке нет, равно как прямого выхода для наушников. Более того, при прослушивании тестового звука на площадке были заметны, как нам показалось, перегрузки. Поэтому мы решили уменьшить чуть уровень. Как выяснилось позднее — напрасно. В файлах звук был заметно ниже среднего уровня. А тот файл, что мы записали в начале, демонстрировал вполне нормальный уровень звука без перегрузок.

Вообще говоря, если вы намереваетесь снимать профессиональное видео на любую Canon DSLR, я бы рекомендовал использовать Magic lantern. В нашем случае я откровенно упустил этот момент, отчасти, будучи занят изобразительными и организационными задачами и желанием успеть все снять в солнечную погоду.

В итоге, после двух дней съемок мы сгоревшие под палящим солнцем, но, в целом, довольные результатом, получили 10GB HD материалов в качестве 1080p сжатые кодеком H.264.


Подготовка материала



Если вам когда-либо доводилось работать с футаджем HD 1080p, вы, должно быть, знаете, насколько неповоротлива бывает монтажка, если только железо не обеспечивает обработку нескольких потоков H.264 одновременно. Поэтому для того, чтобы облегчить процесс, стоит предварительно переконверитровать весь материал в какой-нибудь более удобоваримый кодек и снизить разрешение, с тем, чтобы позднее «подменить» файлы на оригинальные и «посчитать» фильм в окончательном варианте.

Я решил, что оптимальнее всего будет сконвертировать в старый-добрый DV50 widescreen, покуда сей кодек не предусматирвает межкадровой интерполяции и хорошо себя зарекомендовал в работе с Kdenlive. Последнюю я давно использую для монтажа и считаю его лучшим профессиональным Open Source монтажным инструментом.

В общем недолго думая я зарядил конвертацию:

#/bin/bash
if [   $# -lt 2  ]; then
 echo "Video HD > PAL converter."
 echo "Usage: $0 <target directory> l"
 echo "c -- convert, l -- file list"
else
 mkdir "$1/PAL"
 ls "$1" | grep -E .MOV | while read file; 
 do
  if [ "$2" == "c" ]; then  
   avconv -i "$1/$file" -target pal-dv50 -aspect 16:9 -threads 0 "PAL/$file"
  fi
  if [ "$2" == "l" ]; then  
   echo "$1/PAL/$file"
  fi
 done
fi


Kdenlive не имеет свойственных Adоbе продуктам ограничений на кодеки. Все, для чего у вас в системе установлены кодеки, будет подгружаться и проигрываться. Но справедливости ради, нужно отметить, что всевозможные не предназначенные для нелинейной обработки форматы кодирования могут привести к падению монтажки. Что же является большим плюсом — Kdenlive умеет самостоятельно сохранять и восстанавливать проект после падения. Однако, при любом раскладе, хорошей практикой будет периодическое нажимание кнопки «save» после каждого ключевого этапа. Впрочем, очевидно, это само собой разумеющийся совет.

Небольшое отступление, имеющее свой целью продемонстрировать, насколько более гибкий подход обеспечивает использование Open Source продуктов выполненных в соответствии с POSIX стандартами.

Некоторое время назад в сообществе ru_filmmaker коллега задал вопрос: как превратить 720p 25 fps с полукадрами в 1080p 50 fps без полуполей. Мол, по недосмотру сняли часть не в том качестве. Что делать теперь — не очень понятно. Ситуация усугублялась еще, насколько я понимаю, необходимостью обработать некотрое количество такого материала. Как пишет сам автор, выяснилось, никаких стандартных способов делать это силами продуктов Adоbе нет. Во всяком случае сколько бы то ни было прямолинейный способ сделать это отсутствовал. Причина этого понятна, есть стандартные задачи. В рамках стандартных задач инструментарий предоставляет решения встроенные в монолитный интерфейс. Такой подход предполагает недюжие профитические умения у разработчиков. Ведь действительно, тебе нужно предполагать все способы использования твоего инструментария, чтобы «закрыть» все гипотетически возможные нюансы. Другое дело POSIX. Не связанный напрямую набор инструментов дает возможность решать практически любые задачи.

Я было сперва решил предложить простой bash скипт, который разбивает видео на кадры, потом с помощью ImageMagic делит каждый кадр на полуполя, сохраняет и собирает итоговый ролик. Однако быстро обнаружил, что эта задача решается одной строкой с помощью ffmpeg, о чем и проинформировал автора вопроса там же.

Или вот еще. Вы, к примеру в курсе, что Kdenlive хранит монтажный лист в XML и позволяет «рендерить» фильм из командной строки? Любой пытливый экспериментаторский ум тут же рождает массу идей по поводу того, как это можно использовать :)


Итак, видео у нас готово. Надо монтировать.


Монтаж



Как я уже написал выше, для монтажа я использую Kdenlive. Я в свое время, попробовал множество разных инструментов, и могу сказать, что, по моему мнению, Kdenlive на сегодняшний день — лучший. Есть еще претендующий на сопоставимый уровень OpenShot. Но пока он ни по уровню исполнения ни по интерфейсу не дотягивает до Kdenlive даже близко. Kdenlive же — можно сказать, признанный стандарт. И, судя по уровню обсуждений на форуме сайта проекта, делают его ребята «съевшие не одну собаку» в производстве видео.

Поскольку задача обучения использованию инструментария выходит за рамки задач настоящей серии публикаций, описывать весь процесс монтажа я не стану. Он прост и в целом для любого человека, владеющего навыками работы с любом другим монтажным продуктом (FinalCut, Adobe Premiere, Avid), никаких особых сложностей не представляет. На мой субъективный взгляд, интерфейсно Kdenlive наиболее схож с Final Cut.

Моменты, на которые я бы хотел обратить внимание:
а) В новой версии Kdenlive появилась возможность загружать не только секвенции с альфа-каналом но и прозрачные (32 bit) AVI, сохраненные без компрессии. Что я успешно использовал для создания титров (об этом ниже)
б) После подмены клипов на оригинальные (об этом так же будет рассказано ниже), фрагменты, в которых была изменена скорость проигрывания, по какой-то причине сжимаются. Решается это изменением параметров на оригинальные и обратно.



Звук



Для обработки звука я использую отлично зарекомендовавшую себя Audacity. Там есть в принципе все, что нужно звукоинженеру + большое количество дополнительных фильтров написанных сторонними разработчиками.

В нашем ролике присутствует пара «ветреных» кадров. Соответственно, я решил немного подправить частотные характеристика звука в этих фрагментах, с тем, чтобы, по-возможности, маскировать шум ветра и выделить голос. + чуть обработал весь звук компрессором, чтобы добиться б/м приемлемого звучания на маленьких колонках и встроенных в карманные смартфоны динамиках.


Пост-обработка видео



После съемок выяснилось, что чувствительная кожа нашей актрисы на солнце стала совсем оранжевой и местами покрылась, простите за подробности, весьма заметными прыщиками, которые я решил подретушировать. Этот этап оказался самым кропотливым.

Будучи персонажем пытливым, я решил, что я не буду отступать от выбранной парадигмы и попробую решить эту задачу средствами имеющегося для Linux ПО. В общем провозившись день с изучением всех возможных новинок и поняв, что в этом аспекте ничего принципиально с 2007-го года не поменялось, я решил, что единственный способ, который мне остается, это воспользоваться AE запущенным под Wine.

Надо отметить, что Open Source композинг в Linux по-прежнему остается камнем преткновения. Т.е. нет, есть конечно Nuke. Nuke, к слову, настолько великолепный инструмент, что многие его ставят на голову выше вообще всего ПО для кино-видео композинга, существующего на сегодняшний день. И я эту точку зрения безоговорочно разделяю. Но! Nuke — проприетарный и коммерческий продукт. Увы. Так что этот вариант я оставил покамест также.

Еще есть Встроенный в Blender node композитор. Он великолепен во всем. Кроме отсутствовавшего на тот момент трекинга. В последней версиитрекинг наконец-то появился. Но прошлой осенью его там еще не было в помине. Стало понятно, что выход один — AE под Wine.

После ознакомления с базой Wine выяснилось, что лучше всего себя ведет версия 6.5. А у меня как-раз осталась с давних времен CD от Adobe AE 6. Покопавшись в сети я обнаружил, что Адоб имеет открытый FTP со старыми экземплярами ПО, чем я и воспользовался.

Долго ли, коротко ли, но дело заспорилось.


AE запущенный в окружении Mate (ex Gnome)

Однако, после некоторых упражнений выяснилось, что АЕ по каким-то причинам время от времени, таки, падает во время рендера. Место сбоя было все время разным, что навело меня на мысль о том, что дело тут не в исходниках и не в таймлайне. В общем, покопавшись в Сети я нашел-таки причину и поспешил поделиться с посетителями winehq, теперь вот делюсь и с уважаемыми читателями этой статьи:

Советы:
1. чтобы избавится от настырных падений нужно сделать следующее: нажать Shift key + выделить Edit -> Preferences… там появится подраздел «Secret». В открывшемся окне вписать волшебное значение «20» и закрыть окно. После этого все будет работать как часы :)
2. по умолчанию AE использует только 2ГБ (при любом объеме установленной у вас памяти), чтобы выделить больше, надо в boot.ini прописать команды /PAE и /3GB


Оригинал, к слову, уже почил в «в конденсате Энштейна-Бозе». Впрочем, нашелся еще пруф на Creative Cow.

Далее все было элементарно. Я «сдул пыль» со старого софта. Все заработало и удивительным образом резво. Я нарисовал статику в InkSkape, после чего экспортировал все в EPS. Втянул в AE и сделал анимацию. Результирующее видео посчитал без компрессии в 32bit AVI с альфаканалом.

Тут надо сделать некоторое отступление. Дело в том, что я, как уже было сказано выше, торопился выложить видео на сайт, и не удосужился исследовать вопрос достаточно досконально. Однако, спустя какое-то время, а если быть точным, то непосредственно перед новым годом, читая ленту новостей DigiLinux я наткнулся на очередную заметку про Synfig. Поскольку мультипликационная анимация всегда находилась несколько на периферии моих профессиональных интересов, я никогда особо не обращал внимание на этот проект. Т.е. я знал, что он есть и, если судить про скриншотам и частоте появления заметок о нем тут и там, это какой-то вполне себе популярный продукт. Но… и тут меня осенила мысль. А что если попробовать это дело в качестве композера для титров.

В общем, не долго думая, я поставил Synfig, и, что вы думаете… Так все и оказалось. Synfig оказался вполне приемлемым для такого рода затеи. Ура! задача решена. Я как раз планировал сделать upgrade ролика, приделать финальный «пэкшот», подкрутить цвета и выложить наконец ролик на сервер напрямую в хорошем качестве, минуя рекомпрессию Vimeo и за одно избавившись от зависимости от Flash и назойливых логотипов поверх картинки. Так что находка оказалась как нельзя кстати.

В общем, я поковырялся, и сделал-таки титры в Synfig.

Все же надо отметить, что задача эта оказалась не из легких. После AE интерфейс Synfig весьма непривычен. И все, что касается работы с ключевыми кадрами и с нелинейными таймингами, на мой взгляд, оставляет все еще желать. Но, тем не менее, в рамках поставленной задачи решение было найдено. На выходе я получил обычную секвенцию PNG c альфаканалом, которую без труда сконвертировал в те же 32-битные авишки с помщью ffmpeg.

Примечание:
Если вы медиа-дизайнер работающий в Linux, то наверняка, так же как и я, используете InkScape для векторной графики. В новой версии Synfig появился долгожданный импорт SVG. Однако, как показала практика, работает он странным образом. Т.е. все скомбинированные объекты «разваливаются» при экспорте на части. Решение: используйте вместо этого плагин для InkScape. Он сохраняет в оригинальный Synfig sif формат.


После того, как я «подриховал» прыщики и подготовил новые титры, оставалось только собрать финальный вариант.


Монтаж ролика Electronic Tour Guide в Kdenlive

В начале статьи я упомянул, что я использовал пересчитанные фрагменты. Так вот, я было уже приготовился к каким-то неполадкам после замены, но процедура обратной замены оказалась на удивление простой. Как и многие современные Open Source приложения, Kdenlive сохраняет монтаж в структурированный XML файл. Т.е это банальный текстовый файл удобный для просмотра, анализа и «парсинга» сторонними приложениями. Так что я просто открыл сохраненный монтаж в текстовом редакторе pluma и по шаблону заменил все пути на ведущие к HD исходникам.

После загрузки я поменял формат кадра и единственное, что обнаружил — это проблема с изменением размеров, упомянутая выше. После исправления размера оставалось только «посчитать» видео с разными кодеками и выложить ролик на сервер.


Это мы в процессе :)




Cъемки эпической киноленты про наш пражский GPS аудио-гид


Пражский GPS путеводитель, продолжение съемок


Съемочная команда



Юля Беленькова турист-рассказчица
Евгений Епифанцев оператор
Юрий Яковлев ассистент и фотограф
Дмитрий Шальнов копирайтер, режиссер и монтажер эпической киноленты :)

Специальная благодарность: Михаилу Спивакову за редактуру перевода, а так же Алине Казакевич за участие в предварительных съемках. 



Список использованного и упомянутого Open Source программного обеспечения



  • Kdenlive — видео-монтаж
  • FFmpeg — полнофункциональны консольный инструмент для обработки видео.
  • Audacity — редактирование и обработка звука
  • Wine — Windows API транслятор и набор библиотек, позволяющий запускать Win приложения в POSIX совместимых операционных системах (таких как Linux, Mac OSX, & BSD) в native режиме.
  • Blender — профессиональный инструмент для композинга и работы с 3D графикой
  • Synfig — инструмент для создания двумерной векторной анимации
  • InkScape — инструмент для работы с векторной графикой
  • SIF exporter — плагин для сохранения SIF файлов из InkScape.
  • Magic Lantern — альтернативная прошивка с расширенным набором видео-возможностей и открытым исходным кодом, предназначенная для запуска на камерах Canon EOS.



Полезные ссылки





P.S. Ролик добавленный в статью — это Vimeo, покуда Хабра, увы, не поддерживает добавление html5 video напрямую. Так что качество компрессии тут заметно хуже. Если хотите посмотреть оригинал — он на сайте проекта Electronic Tour Guide.