Докладчики: Константин Краснопёров, Максим Киршин, Виктор Вагин 
Около полугода назад мы приступили к реализации большого проекта в котором предполагалось изначально использовать по максимуму увязанные друг с другом механизмы: 
• 
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 будет рассказано позже при рассказе о проблемах буфферизации.