Pull to refresh

Интервью с Эдвардом Херви о видеоредакторе PiTiVi

Reading time 8 min
Views 2.4K
Original author: Christian F.K. Schaller
Это четвертое интервью про opensource мультимедиа. Предыдущие беседы касались проектов Jokosher, Totem и Empathy (перевод). Мы поговорим с Эдвардом Херви (Edward Hervey), сопровождающим проект PiTiVI. Эдвард расскажет о текущем состоянии видеоредактора и планах на будущее.

Итак, расскажите для начала немного о себе и открытых проектах, в которых принимаете участие?

Меня зовут Эдвард Херви, я наполовину француз, наполовину шотландец, живущий в Барселоне, и я один из основателей Collabora Multimedia. Использую Linux и свободное ПО примерно с 1995 года. Но свой посильный вклад начал вносить с 2003, когда у меня, наконец, появилось достаточно знаний в области программирования для начала работы над PiTiVi. Уже несколько лет я работаю над мультимедиа фреймворком GStreamer, чтобы поднять редактирование видео на достойный уровень. Я также сопровождаю на протяжении ряда лет python биндинги для GStreamer, GNonLin (основные зависимости PiTiVi, отвечают за нелинейное редактирование), а также FFMpeg плагины для GStreamer.

Опишите цели PiTiVI на фоне доминирующих приложений для редактирования видео, таких как iMovie, Avid или Final Cut Pro?

PiTiVi преследует разные цели, но я бы отметил основополагающую — желание создать видеоредактор без каких-либо ограничений (в отличие от аналогов, имеющих весьма специфические ограничения в применении или поддержке). Избавиться от ограничений форматов, устройств, фильтров,… мы можем поддерживать их посредством фреймворка GStreamer. Все другие редакторы имеют жесткую привязку к своему коду, мы же с гордостью носим название свободного редактора без привязок к какой-либо запатентованной библиотеке! Это значит, что если компания делает свой собственный GStreamer плагин для определенного формата/кодека/устройства… вы свободно используете его в PiTiVi. Этот барьер преодолен благодаря выбору нашей модели разработки.

Мы не хотим получить монолитный видеоредактор, поэтому решено переписать PiTiVi на Python, и сделать проект модульным. Пользовательский интерфейс не привязан к движку, на самом деле можно использовать движок обособленно. Он спроектирован так, что вы сможете по-разному реализовать хронологическую ленту, это в большей степени зависит от ваших знаний и того, как вы расставите акценты, которые в свою очередь зависят от варианта применения в производственном процессе.

Конечная цель PiTiVi — предоставить базовые инструменты для редактирования без каких-либо ограничений. Это, к сожалению, стоит немалых усилий: надо убедиться, что все ошибки, проблемы или ограничения исправлены на должном уровне, вместо добавления хака за хаком. А это требует времени…

PiTiVI написан на Python. Первый вопрос, которым задаются многие люди, услышав это: «Как влияет использование Python на производительность мультимедийных приложений, в особенности таких ресурсоемких, как видеоредактор?»

Все просто :) Что оказывает наибольшую нагрузку на CPU при редактировании видео? Правильно, обработка мультимедиа (будь то просмотр, применение эффектов, рендеринг,...). Все это выполняется исключительно с помощью GStreamer и его плагинов (написаны на C, работают в отдельных потоках и используются в PiTiVi через Python биндинги). А что нагружает оставшуюся часть вычислительной мощи процессора? Пользовательский интерфейс. Этим заняты GTK+/X/Cairo (написаны на Cи используется в PiTiVi через Python биндинги).

Так что остается лишь логика подключения всего вместе и привлечение понятий характерных для систем нелинейного видеомонтажа (NLE). Мы хотим создавать код как можно быстрее и гибче, поэтому язык подобный Python очень удобен. Кроме того, писать на Python'е одно удовольствие :)

Для любопытствующих приведу интересный факт: при воспроизведении в PiTiVi единственная часть, реализованная на Python'е — это код, отвечающий за… отображение текущей позиции. То же самое при рендеринге. Все остальное полностью обрабатываются GStreamer, его плагинами и GTK+.

Большой объем работы проделан в GStreamer для поддержки формата контейнера MXF. Большинство людей, вероятно, никогда не слышало о таком формате, какую ценность он имеет?

С момента появления компьютерного редактирования (также называемого нелинейным редактированием), каждая программа использовала различные форматы/кодеки для работы. То, чем пользовались профессионалы и любители также отличалось, в том числе для камер, видеомагнитофонов, устройств захвата. Добавьте к этому тот факт, что большинство форматов не были документированы. Получаем различные форматы в ПО, в камере, на выходе,… полнейший беспорядок.

Некоторые из ключевых игроков на профессиональном рынке, представители SMPTE (Общество инженеров кино и телевидения) решили действовать сообща и написали спецификации нового формата контейнера, который будет полностью документирован, позволит хранить метаданные, будет записываться прямо на камеру, включать потоковое вещание и быстрый поиск… Он использует те же структурные элементы, что и ААF (формат расширенной разработки), который является открытым и используются Avid, Final Cut Pro и многими другими системами нелинейного видеомонтажа.

С добавлением поддержки MXF в GStreamer мы можем использовать в PiTiVi те же форматы, что и профессиональные NLE! Возможность непосредственной работы с распространенными форматами — главный фактор, позволяющий использовать PiTiVi в уже существующих производственных процессах.

Какие мультимедийные форматы поддерживает PiTiVI?

Все, что доступно через GStreamer плагины, установленные в вашей системе, а также некоторые форматы для быстрого редактирования видео, точного поиска, I-frame кодеки и т.д.

На каком этапе находится PiTiVI сейчас и какие планы на будущее?

За последние 6 месяцев мы сделали глубокий рефакторинг кода PiTiVi, основанный на анализе, который я выполнил прошлым летом, обобщив отклики за последние 5 лет. Помимо добавления наиболее легкореализуемых функций, мы уже справились с многослойным редактированием, созданием эскизов, обрезкой, ripple/roll режимами, появилась поддержка общего формата файла и многое другое.

Мы собираемся сделать в мае первый предварительный релиз нового pitivi. Постепенно будут добавляться новые функции в интерфейс, например, переходы, эффекты, наложение титров, slip/slide редактирование и поддержка большего числа форматов, что позволит, например, импортировать проекты из других редакторов.

Для тех, кто не знаком с терминологией, что вы подразумеваете под многослойным редактированием, созданием эскизов, обрезкой и ripple/roll режимами?

Многослойное редактирование: возможность сортировать видео не только по времени, но и на несколько параллельных слоев.
Создание эскизов: получаемая картинка отображается для каждого источника используемого в шкале Timeline, что позволит вам легче ориентироваться в хронологической ленте без необходимости поиска.
Обрезка: изменение позиции начала или конца источника.
Ripple редактирование: сокращение или увеличение одной из частей, в то время как остальные данные подстраиваются к новому размеру изменившегося клипа.
Roll редактирование: то же, что и ripple, за исключением того, что общее время в группе клипов остается неизменным.

Кто кроме вас участвует в проекте PiTiVI?

Два основных разработчика помимо меня, это Брэндон Льюис (Brandon Lewis), который начал работать с GSoC 2007 и занят пользовательским интерфейсом. Алессандро Дечина (Alessandro Decina) присоединился к нам в октябре, он помогает мне в низкоуровневой части PiTiVi и улучшает GStreamer. Оба работают в Collabora Multimedia с прошлой осени и трудятся над PiTiVi 100% времени. Пояснение для тех, кто думает о деловых причинах вовлечения столь многочисленных ресурсов в PiTiVi от Collabora Multimedia: во-первых, мы осуществляем консалтинговые работы для заказчиков в индустрии создания контента, они хотят использовать PiTiVI для выполнения конкретных задач в их производственных процессах, во-вторых, у нас есть клиенты, которые хотят использовать созданную нами инфраструктуру PiTiVi, чтобы настроить автоматическии манипуляции с видео. Например, автоматическое кадрирование, масштабирование и транскодирование.

Как будущие изменения GStreamer отразятся на возможностях PiTiVI?

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

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

Бесконечную работу предстоит выполнить в GStreamer, чтобы перенести все больше и больше библиотек в качестве плагинов. Люди часто ошибочно предполагают, что GStreamer — это библиотека кодеков, что является абсолютно неверным, GStreamer — это фреймворк, позволяющий разработчикам приложений не беспокоиться об обработке, а разработчикам библиотек не беспокоиться о приложениях, которые будут их использовать. Мы планируем перенести в GStreamer такие плагины, как gavl и подавляющее большинство отличных AviSynth фильтров (которые будут закончены этим летом в рамках Google Summer of Code). Все это, безусловно, улучшает восприятие PiTiVi пользователем.

Помимо этого, мы собираемся понизить потребление памяти и процессорного времени для ядра GStreamer и различных плагинов. Мы приглядываемся к более эффективному использованию аппаратных устройств, таких как видеокарты с технологией VDPAU, VA-API и gst-plugins-gl плагины. Это позволит GStreamer приложениям направить обработку на аппаратные устройства, оставляя больше процессорного времени для универсальной обработки.

Jokosher и PiTiVI являются приложениями для мультимедиа, используют GStreamer и написаны на Python. Естественный вопрос, сотрудничают ли эти проекты?

К сожалению, не так активно, как хотелось бы. Мы помогаем друг другу по всем фронтам (GStreamer, Python биндинги, плагины GNonLin), но когда речь заходит о пользовательском интерфейсе и основной логике у нас различные варианты использования кода и различные кодовые базы. Было бы замечательно иметь более тесную интеграцию, это позволило бы вам использовать Jokosher для редактирования аудио части видеоклипа, а для PiTiVi оставить видео.

С какими основными техническими проблемами вы столкнулись при создании видеоредактора для Linux/Unix-систем? Готова ли инфраструктура Linux для организации таких приложений? И что вы думаете о состоянии мультимедиа в Linux/Unix в целом?

Open-source мультимедиа прошла *ДОЛГИЙ* путь за последние 10 лет. Для тех, кто не помнит… мы были вынуждены использовать различные плееры в зависимости от формата, только так можно было захватить видео с цифровых камер. Но проблема заключается в том, что каждый делает свое собственное ПО у себя в углу. Полное отсутствие согласованности между различными мультимедиа приложениями, библиотеками и поддержкой устройств в Linux, вот что является, на мой взгляд, причиной, почему мы не стали подходящей мультимедийной платформой. В отличие от других платформ (Win/Mac), нам не придется переписывать наши собственные библиотеки и мы можем повторно использовать уже существующие… Почему этого не происходит? GStreamer пытается собрать всех вместе и решить большинство подобных проблем, однако до сих пор получает пинки от некоторых разработчиков по непонятным причинам. В день, когда мы решим этот вопрос… мы станем доминирующими на десктоп платформах, как нам это удалось для встраиваемых устройств и серверов.

Какие другие мультимедийные приложения вы используете?

Totem, Rhythmbox, Audacity (Ой, он не использует GStreamer). Иногда AviSynth/VirtualDub (Win32 приложения) через WINE, но это может измениться, благодаря GSoC проекту, призванному перенести AviSynth фильтры в GStreamer.

Что ж, благодарим вас, Эдвард, за то, что нашли время для этого интервью, удачи в дальнейшем!

Чтобы подробнее ознакомиться с проектом PiTiVi посетите pitivi.org или канал #pitivi на irc.freenode.net.

Интервью подготовил Кристиан Шаллер (Christian F.K. Schaller).
_____
Благодарю ShutteR77 и ilembitov за помощь при подготовке перевода.
Tags:
Hubs:
+19
Comments 5
Comments Comments 5

Articles