Докладчики: Константин Краснопёров, Максим Киршин, Виктор Вагин
Около полугода назад мы приступили к реализации большого проекта в котором предполагалось изначально использовать по максимуму увязанные друг с другом механизмы:
•
Microsoft Windows Media Encoder для приёма медиаданных в систему. (
http://www.microsoft.com/windows/window ... fault.mspx )
•
Microsoft Windows Media Services для доставки медиаданных до конечных потребителей а также для записи. (
http://www.microsoft.com/windows/window ... erver.aspx )
•
Microsoft Windows Media Player – для воспроизведения медиаданных
(
http://www.microsoft.com/windows/window ... fault.aspx )
•
Microsoft Direct Show – для преобразования данных из различных форматов
(
http://en.wikipedia.org/wiki/DirectShow )
На данный момент проект находится на стадии развёртывания и внедрения.
Постановка задачи.
Заказчиком выступает федеральный ВУЗ спортивной направленности.
У заказчика имеется:
• Подключение к телеканалам (в том числе спутниковым)
• Внутренняя «локальная» корпоративная сеть, которой пользуются студенты и преподаватели в учебном и научном процессе
• Видеокамеры для съёмок тренировок, соревнований, и прочих мероприятий.
• В коридорах, в холлах, столовых и других местах плазменные экраны с плеерами на базе PC и выходом в локальную сеть.
Заказчик хочет:
• связать всё это хозяйство воедино, чтобы им можно было управлять из одного места
• Создать общую медиатеку, в которой пользователи могли бы добавлять медиаданные, просматривать и обмениваться ими, заказывать запись теле-передач или просматривать имеющиеся телеканалы, транслировать или записывать в медиатеку съёмку с камер
• Формировать на основе имеющихся телеканалов или прямых трансляций а также файлов медиатеки программы трансляции для плазменных панелей и доставлять их на плазменные панели используя tcp-ip сеть.
WMEncoder-ы на входе
В качестве основного компонента для приёма медиаданных из любых внешних источников используется Windows Media Encoder.
Это средство преобразует данные в вид, родной и понятный другим компонентам серии Windows Media (wm9). Также он может:
1. Менять степень сжатия
2. Менять разрешение (размер кадра)
3. Вырезять прямоугольную часть из входных кадров (Crop)
4. Менять соотношение размеров пикселов (Pixel aspect ratio)
5. Добавлять к выходным файлам мета информацию (название, описание, авторов и т.п.)
6. Накладывать водяные знаки (watermarks) и добавлять информацию для управления цифровыми правами доступа (DRM)
7. Выполнять преобразования, задаваемые plugin ами
8. Другие специфичные действия
WMEncoder может запускаться:
1. Как консольное приложение из командной строки,
2. Как программа с удобным пользовательским графическим интерфейсом (GUI).
3. Использоваться как COM объект или полноценный .NET компонент из других программ.
( ms-help://MS.MSDNQTR.v90.en/wmencode/htm/iwmencoderinterface.htm )
В нашем случае в общей системе заказчик выделил 30 серверов предназначенных для ввода данных в систему, с набором источников в виде подключённых tv-tuner ов, карт управления спутниковой тарелкой, видеокамерами и т.п.
Для управления экземплярами WMEncoder был написан специальный сервис доступный через Web-интерфейс. Сервисом решаются задачи:
• запись \ преобразование "живого" потока с устройств или из файлов, с нужным качеством.
• передача данных далее в систему
• мониторинг работы сервера и выполнения отдельных задач
• управление процессом записи, остановка по требованию, отложенный старт и тд
На каждом сервере можно запустить несколько экземпляров кодировщика. Агент кодирования на каждом сервере записи создаёт и управляет экземплярами WMEncoder через COM интерфейс.
Входная информация для encoder ов
С помощью кодировщика Windows Media можно выполнять кодирование живого потока в реальном времени, файлов или делать снимки экрана. Источниками содержимого в реальном времени являются все устройства аудио и видео захвата. Можно также вести съемку экранов непосредственно с рабочего стола , а так же вставлять команды сценария во время кодирования.
Следует иметь в виду, что качество содержимого на выходе зависит от исходного содержимого. Это означает, что следует начинать с максимального качества файла источника или, если источниками являются устройства, установить максимальный уровень качества у устройства.
При настройке источника для кодирования сначала определяются типы используемых источников это может быть звук, видео или сценарий команд. В источнике должен быть указан хотя бы один из типов источников звук или видео. В сеанс кодирования можно добавлять неограниченное количество источников, но каждый последующий источник основан на комбинации типов источников, созданных в сеансе. Например, если первый источник содержит только звук, то все последующие источники в сеансе основаны только на звуке. Для сеансов с несколькими источниками рекомендуется при настройке первого источника указывать все три типа источников. Если дополнительные источники не содержат какой-либо тип источника, можно закодировать пустой поток для этого типа источника. При использовании нескольких источников в результирующем потоке они идут подряд. Последовательность и длительность в результирующем потоке каждого источника на входе зависит от переключения между источниками во время кодирования.
Так же существует возможность объединения потоков например когда в качестве источника видео используется один файл, а для аудио другой. Можно объединить видео\аудио сигнал с устройства и записанный ранее видео или аудио поток в файле.
Существует возможность добавить команды сценария в поток, кодировщик поддерживает следующие типы команд сценария.
• Заголовки. Текстовые строки произвольного формата, которые отображаются в проигрывателе вместе с кодированным содержимым. Для отображения заголовков пользователи должны включить заголовки в соответствующем проигрывателе.
• Адрес URL. При добавлении в поток, при последующем воспроизведении откроется обозреватель пользователя по умолчанию на странице с запрошенным адресом URL Если проигрыватель встроен в обозреватель, то запрошенный адрес URL заменит проигрыватель.
• Кроме поддерживаемых заголовков и адресов URL, проигрыватель автоматически обрабатывает команды сценария FILENAME, EVENT и OPENEVENT. Чтобы открыть определенный файл мультимедиа в указанное время, можно использовать команду FILENAME. Чтобы создать настраиваемые команды сценария, можно использовать команду EVENT. Например, в поток можно добавить объявление. Обратите внимание, что код для указанного события должен быть определен в метафайле Windows Media для потока, чтобы проигрыватель мог выполнить указанное событие. Команда OPENEVENT предшествует действительной команде EVENT. Команда OPENEVENT позволяет проигрывателю предварительно заносить содержимое в буфер, чтобы при определенном событии переключение между потоками было более плавным. О командах серии EVENT будет рассказано позже при рассказе о проблемах буфферизации.