Новые возможности работы с потоковой информацией

( New possibilities for processing streaming information
Preprint, Inst. Appl. Math., the Russian Academy of Science)

Бухштаб Ю.А., Воробьев А.А., Евтеева Н.Н.
(Y.A.Bukhshtab, A.A.Vorobjov, N.N.Evteeva)

ИПМ им. М.В.Келдыша РАН

Москва, 2006

Аннотация

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

Abstract

The paper describes working software complex providing full functional editing of streaming information. These software tools allow unique possibilities of using large video and audio volumes in many applications having a huge consumer market.

1. Введение.

 

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

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

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

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

Разработанная авторами настоящей статьи технология позволяет  дистанционно модифицировать потоковые данные (например, вырезать части  видеофайла), объединять различные потоки и их фрагменты, вставлять в поток как новые  видео или аудио данные (в том числе, транслируемые из разных источников), так и графическую информацию. При этом управление потоками является «виртуальным», то есть не требуется  какая-либо модификация или реальная разгрузка видео и аудио файлов, хранящихся на распределенных серверах.

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

При этом, достаточно разместить программные средства,  входящие в состав разрабатываемого комплекса, на одном сервере, использующем стандартный протокол, – «управляющем сервере», не устанавливая  никаких  дополнительных программ на видеосерверах и  клиентских компьютерах.

Важно отметить, что результирующие виртуальные потоки данных, созданные в результате обработки (возможно, многократной) средствами, входящими в состав разрабатываемого программного инструментария, с точки зрения использования ничем не отличаются от исходных потоков видео и аудио данных. Эти потоки представляются в   виде структур перекрестных ссылок, определяющих связи и временные соотношения между исходными и виртуальными потоками и их фрагментами. Такие структуры  используются для динамической генерации, во время трансляции потоков, управляющих команд, обеспечивая тем самым соответствующее дистанционное управление этими потоками. При этом осуществляется управление не только порядком и позиционированием во времени различных потоков и их фрагментов, но и обеспечивается параллельная  обработка потоков с целью оптимизации их слияния.

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

В настоящий момент разработанный программный комплекс установлен на трех серверах в России и США, и осуществляются его испытания. Анализ полученных результатов показал, что предложенная авторами доклада новая потоковая технология способна обеспечить  эффективное редактирование видео и аудио потоков, транслируемых с удаленных серверов.

 

2. Новые возможности программного комплекса.

 

В статье (3) были кратко описаны базовые функции  рассматриваемого программного комплекса, реализующие основные операции редактирования потокового видео и аудио. К настоящему моменту  реализован  ряд дополнительных возможностей работы с этой системой.

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

У пользователей последней версии  появилась возможность вставлять в процессе редактирования  в любое место видеопоследовательности изображения (например, фотографии). При этом  длительность показа этого изображения может быть задана пользователем (по умолчанию, изображение показывается четыре секунды и затем видео продолжается).

Кроме создания в процессе  редактирования  видео и аудио потоков (проектов), являющихся единым виртуальным объектом, появилась возможность использования новой структуры, представляющей  последовательность независимых клипов, воспроизводимых в заданной последовательности (так называемый плей-лист). Пользователь может менять порядок воспроизведения этих клипов,  заносить в плей-лист новые клипы и удалять ненужные. Реализация этой структуры осуществлена, в отличии от проектов, которые  транслируются с помощью генерируемых команд на языке SMIL,  на базе RAM-файлов.   Возможности,  предоставляемые пользователю при использовании плей-листа,  существенно уступают полнофункциональному редактированию проектов (например, невозможна вставка  фрагмента в любую точку потока). Однако, для некоторых приложений этих возможностей может быть достаточно, а  работа с этой структурой существенно проще, чем редактирование проектов.

  В новую версию    программного комплекса  включены  специально разработанные программные средства, предназначенные для автоматического выделения стоп-кадров из потокового видео, и средства интеграции этих стоп-кадров с другими метаданными.  Выделение стоп-кадров осуществляется с помощью клиентской программы, которая обеспечивает захват кадров из видео, воспроизводимого на клиентском компьютере, даже если  это видео является потоковым и транслируется с удаленного сервера. Захват кадров может непосредственно управляться пользователем, который  определяет нужные кадры в процессе просмотра, или  пользователь может задать количество стоп-кадров, которые он хочет получить, и кадры с соответствующими временными промежутками  будут автоматически захвачены. В дальнейшем пользователь может проанализировать результат и удалить ненужные ему кадры. Затем релевантные стоп-кадры и соответствующие  тайм-коды пересылаются на управляющий сервер. Эти стоп-кадры могут просматриваться пользователем вместе с текстовыми метаданными, описывающими соответствующий фильм. В ходе просмотра этих кадров  пользователь может активировать любой из них и в этом случае просмотр фильма начнется с этого кадра. Такая возможность быстрого перехода к нужным фрагментам видеопоследовательности оказывается очень полезной при работе с длинными фильмами. Если метаданные клипа, который включен в плей-лист, содержат стоп-кадры, первый из них будет использован для визуализации этого клипа на линейке плей-листа (если метаданные не содержат стоп-кадров, этот клип будет идентифицироваться на линейке только своим названием).

 

3.  Организация программного обеспечения.

 

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

 База данных системы состоит  из двух файлов. В одном находятся записи, содержащие информацию о документах, пользователях, проектах, плей-листах. Запись БД состоит из текстовых полей, произвольной длины. Ограничением является общая длина записи - не больше 65000 символов. Поля содержат различную информацию – название документа, аннотацию, тип документа или записи (например, пользователь, видеофильм, изображение, проект, плей-лист), URL документа. В записях типа проект или плей-лист есть поля, в которых содержится вся необходимая информация о составе – какие фрагменты включены в проект с указанием URL этих документов и таймкодов. Кроме того, имеется поле в котором сохраняется предыдущее состояние проекта, после каждого редактирования. Это позволяет, в случае необходимости, вернуться к предыдущему состоянию (операция UNDO). в случае необходимости,предыдущему раняется предыдущее состояние проекта, после каждого редактирования.  Каждая запись имеет уникальный числовой идентификатор, по которому осуществляется  быстрый доступ к записи. Назначение некоторых полей может различаться в зависимости от типа записи. Так поле называемое «URL» для ссылки на фильм или фотографию  содержит его URL адрес, а для учетной записи пользователя – адрес его электронной почты.

 

Другой файл – индексный. Он предназначен для  поиска по ключевым словам. При создании БД указывается, по каким полям будет производиться поиск, и все слова из этих полей попадают в индексный файл. Особым полем в БД является поле даты. Оно так же индексируется, и поиск по нему возможен как по точной дате, так и по попаданию в диапазон.

Все операции над базой данных выполняет специальный программный модуль, входящий в состав  системы, написанный на языке C. В его состав входит библиотека для доступа к этой базе данных. Программа может быть скомпилирована для работы в среде MS Windows или Linux. Программа поддерживает интерфейс CGI и вызывается HTTP сервером. От пользователя на сервер передаются запросы. В них содержится информация о том какую операцию выполнить и с какими параметрами. Сервер активирует программный комплекс и передает ему эти параметры. Далее система выполняет все необходимые действия с базой данных, такие как:

- Регистрация пользователя,

- Проверка имени и пароля при входе пользователя,

- Поиск информации в базе данных,

- Занесение новых документов,

- Удаление документов,

- Редактирование документов,

- Изменение записей при работе с проектами и плей-листами.

Кроме того, соответствующие модули системы генерирует SMIL и RAM файлы при каждом изменении проекта или плей-листа.

 

         В соответствии с интерфейсом CGI, параметры для  программного комплекса могут передаваться непосредственно в строке вызова программы (метод GET) или в теле запроса (метод POST). Каждый параметр имеет вид <имя>=<значение>. Параметры разделяются символом '&'. Обязательным является параметр DO. Он определяет действие, которое должна выполнить программа. Например, DO=USRTST – проверка имени и пароля пользователя при входе, а DO=SEARCH – поиск документов в общей библиотеке. Остальные параметры зависят от выполняемого действия. Для показа содержимого каталога (Bin) пользователя достаточно выполнить:

DO=SHOWF & USER=<имя-пользователя>

А для вставки  запомненного фрагмента из видео или аудио файла в проект:

DO=INSF & USER=< имя-пользователя > & IDCL=<идент. док., куда вставляется> & IDCLINS=<идент. док., откуда вставляется> & TIMEB=<начало фрагмента> & TIMEE=<конец фрагмента> & TIMEINS=<место вставки>

 

Для передачи параметров от пользователя к серверу в HTML используются формы, поля которых пользователь должен заполнить. Однако в разработанной системе значения многих параметров зависят от предыдущих действий пользователя. Например, для вставки фрагмента одного клипа в проект, пользователь сначала должен выделить фрагмент, потом вызвать проект, указать место вставки и дать команду «вставить». Все необходимые параметры в этом случае в процессе работы запоминаются в переменных JavaScript, который широко используется в системе. Когда пользователь дает команду на выполнение действия, программа на JavaScript заполняет скрытые (невидимые) поля формы и посылает сформированный полный запрос  серверу.

 

         Одним из параметров, который всегда передается программному комплексу, является имя файла инициализации. Поскольку этот параметр является обязательным и постоянным, он передается непосредственно как часть вызова программы, в виде дополнительной информации о пути в URL:

 

http://server.ru/napse/cgi-bin/snap.exe/snapse/snap.ini

 

- http://server.ru/napse/cgi-bin/snap.exe - вызов программы,

 

- /snapse/snap.ini – файл инициализации.

 

 

В файле инициализации содержится информация, необходимая соответствующим программным модулям, входящим в состав системы, для доступа к другим файлам и каталогам. С помощью этого файла также осуществляется настройка системы на сервере. Файл инициализации содержит строки вида –

< параметр>  "значение"

 

Они определяют месторасположение, имена и URL адреса других файлов. Некоторые адреса указываются по отношению к HTTP-серверу по протоколу HTTP, некоторые по отношению к видеосерверу  Helix по протоколу RTSP. Указываются следующие параметры:

 

FILEDB              - имя файла  базы данных

FILEDIC             - имя индексного файла

FILEHDC            - имя файла шаблонов

TSMILPATH                - каталог для размещения пользовательских папок и документов

TSMILURL                  - URL адрес этого каталога по протоколу HTTP

TUFLURL           - URL адрес этого каталога по протоколу RTSP

CADRPATH                - каталог для размещения стоп-кадров

CADRURL                   - URL адрес этого каталога по протоколу HTTP

COMFLPATH    - каталог для размещения общих видео и аудио файлов

COMFLURL                - URL адрес этого каталога по протоколу RTSP

COMPHPATH    - каталог для размещения графических файлов (фото)

COMPHURL                - URL адрес этого каталога по протоколу HTTP

COMPHRTURL - URL адрес этого каталога по протоколу RTSP

 

 

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

Для генерации таких HTML-страниц используются шаблоны. Для каждой страницы используются  один или несколько шаблонов. Шаблон представляет собой текст содержащий всю или часть HTML-страницы с использованием соответствующих параметров. Как и в любом HTML-документе, в нем может использоваться язык JavaScript. Параметры задаются именем и заключаются в квадратные скобки. Во время генерации документа вместо них подставляются необходимые значения.

Все шаблоны содержатся в одном файле. Каждый шаблон начинается со строки, содержащей 

###<имя шаблона>

Приведем упрощенный пример шаблона, которые используются для генерации HTML-страницы, содержащей  документы из каталога пользователя. Для упрощения здесь убраны многие части, относящиеся к форматированию документа, и код программ на JavaScript, который отвечает за дальнейшую работу с сформированной страницей.

 

Шаблон начала страницы:

 

###TITP

<!doctype html public "-//w3c//dtd html 4.0 transitional//en">

<html>

<head>

<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=windows-1251" lang="ru">

<LINK href="jscs/snap.css" type=text/css rel=stylesheet></link>

<script src="jscs/common.js" type=text/javascript></script>

<script src="jscs/xhtp.js" type=text/javascript></script>

</head>

<body  class=leftbod OnLoad="Ld();">

<div style="height:100%;width:100%;border-left: 3px outset rgb(91,116,127);">

    <div class=darkline style="width:100%;">

    <center>Каталог пользователя [USER]</center>

    </div>

<div id="idsrrez" class=bndocb>

<Form  name=f1 action="'+top.sbase+parent.stsk+'" method="GET" target=msg>

<input type="hidden" name="DO" value="LOAD">

<input type="hidden" name="IDCL" value="">

<input type="hidden" name="UNIC" value="">

<input type="hidden" name="USER" value="">

<table width=100% cellpadding=0 cellspacing=0 border=0>

 

 

Шаблон текста для каждого документа:

 

###LISTD

<tr><td valign=top class=tpicw>

<a href="javascript:void selcurdoc([NREC]);">

<img src="imgs/info[TYP].gif" border=0 onDblClick="ldcurdoc([NREC],"[$CLIPURL]");"></a>

<a href="javascript:void Moreinfo([NREC]);" class=amn><img src="imgs/info.gif" border=0></a>

</td>

<td class='clst valign=top id=idtblcl[NREC] onClick="selcurdoc([NREC]);" onDblClick='ldcurdoc([NREC],"[$CLIPURL]");'>

<div class=docnam>[TYP]&nbsp;[DAT]</div>

</td>

</td></tr>

 

Шаблон конца страницы

 

###FIN

</table>

</form>

</div>

</div>

</body>

</html>

 

Здесь [USER], [TYP], [TIT], [DATA] и [$CLIPURL] – параметры.

[USER] – имя пользователя

[TYP] – тип документа

[TIT] – название документа,

[DATA] – дата создания,

[$CLIPURL] – URL адрес документа.

Вместо этих параметров CGI-программа  подставит реальные значения.

Разумеется это только некоторые из имеющихся параметров, кроме них имеется много других параметров, которые используются при создании шаблонов.

 

          Литература

 

1.     RealNetworks  Production Guide.  RealNetworks, Inc.,

http://service.real.com/help/library/guides/ProductionGuide/prodguide/

          realpgd.htm

     

2.     Бухштаб Ю.А.,  Воробьев А.А., Евтеева Н.Н.  Организация программных средств, обеспечивающих интерактивное редактирование потокового видео. –Препринт ИПМ им. М.В.Келдыша РАН, №78, 2004.

 

3.     Бухштаб Ю.А., Воробьев А.А., Евтеева Н.Н. Реализация редактора видео и аудио потоков, транслируемых с удаленных серверов. –Препринт ИПМ им. М.В.Келдыша РАН, №131, 2005.