Показаны сообщения с ярлыком API. Показать все сообщения
Показаны сообщения с ярлыком API. Показать все сообщения

понедельник, 21 января 2013 г.

Объект NIMediaRender.


В этой статье я опишу API для работы с рендерером AdvertisePro, которое можно использовать в пользовательских скриптах на VBScript. Используя API Вы сможете получить доступ к текущим коллекциям медиа-объектов, проигрываемых рендерером, управлять ими и медиа-объектами.

Чтобы данные скрипты работали на AdvertisePro версии 3.2, 3.2.1 нужно обновить файл библиотеки NIMediaObjectu7.dll

Объект MediaRenderer. progid:NIVideoRender.MediaRenderer

Обычно данный объект прописан в конфигурационном файле под именем renderer:
<object name="renderer" xsi:type="cfg:MediaRender" clsid="progid:NIVideoRender.MediaRenderer" ...>
Чтобы узнать под каким именем он определен в вашем файле конфигурации можно сделать поиск по его progid. В некоторых случаях может быть несколько рендереров. Зная его имя можно обращаться к нему из скрипта, например Application.renderer.
Рассмотрим его свойства:
Свойства рендерера
Имя Доступ Описание
PermanentMedia Чтение/Запись Коллекция постоянных объектов. Именно она содержит список воспроизводимых объектов из текущего плейлиста
CurrentMedia Чтение/Запись Текущий воспроизводимый медиа-объект.
Set mediaObject = renderer.CurrentMedia
AddMedia Метод Добавление медиа-объекта в пул постоянных медиа-объектов.
renderer.AddMedia mediaObject
RemoveMedia Метод Удаление медиа-объекта из пула постоянных медиа-объектов.
renderer.RemoveMedia rendererId
MoveUp Метод Увеличить Z-координату объекта.
renderer.MoveUp rendererId
MoveDown Метод Уменьшить Z-координату объекта.
renderer.MoveDown rendererId
MoveToFront Метод Переместить объект на передний план.
renderer.MoveToFront rendererId
MoveToBack Метод Переместить объект на задний план.
renderer.MoveToBack rendererId
RemoveAll Метод Удалить все объекты.
renderer.RemoveAll
Background Чтение/Запись Текущий фон.
Set background = renderer.Background
Width Чтение Ширина
Height Чтение Высота
Advertising Чтение/Запись Режим показа рекламы. В этом режиме по окончании ролика его последний кадр продолжает оставаться на экране пока готовится к показу следующий ролик.
renderer.Advertising = true
SetMediaPosition Метод Задает координаты верхнего левого угла для вывода медиа-объекта.
renderer.SetMediaPosition rendererId, x, y
Media Функция Поиск медиа-объекта.
Set media = renderer.Media(key, flags)
All Чтение Коллекция всех меда-объектов
Параметры:

  • mediaObject - объект MediaObject
  • rendererId - Идентификатор-строка элемента в рендерере (см. св-ва медиа-объекта).
  • background - объект Background
  • x, y - целые числа
  • flags - Флаги поиска:
    0 - поиск по rendererId (по умолчанию)
    1 - поиск по Alias
    2 - поиск всех объектов
    4 - поиск по cookie
  • key - поиск по заданному значению, зависит от flags
  • Коллекции - стандартные, индекс начинается с 0, в качестве индекса может использоваться RendererId.
    Dim oMedia, oMedia3, oOtherMedia
    For Each oMedia in renderer.PermanentMedia
    Rem Работаем с медиа-объектом
    Next
    Set oMedia3 = renderer.PermanentMedia(3)
    Set oOtherMedia = renderer.PermanentMedia("{087846D6-2EE3-49FB-824B-9DB9746AC8BD}")

Медиа-объект

Свойства медиа-объекта
Имя Доступ Описание
sourceURL Чтение Путь к файлу воспроизведения
duration Чтение Длительность в секундах
RendererId Чтение Строка - идентификатор объекта. Доступна после добавления меда-объекта в рендерер
ZOrder Чтение/Запись Z-координата объекта
Alias Чтение/Запись Псевдоним
Cookie Чтение Cookie
x Чтение/Запись x-координата верхнего левого угла
y Чтение/Запись y-координата верхнего левого угла
CurrentPosition Чтение/Запись Текущее положение воспроизведения в секундах
StopTime Чтение/Запись Время остановки воспроизведения в секундах.
Rate Чтение/Запись Коэффициент скорости воспроизведения
SelfDeleteOnComplete Чтение/Запись Автоматическое удаление после воспроизведения.
oMedia.SelfDeleteOnComplete = true
ReleaseMedia Метод Освободить медиа-объект.
oMedia.ReleaseMedia

Медиа-загрузчик

Данный объект нужно использовать для создания новых медиа-объектов и управления выводом звука или масштабированием. Обычно в конфигурационном файле он называется MediaLoader, соответственно из скрипта он доступен как Application.MediaLoader. Чтобы узнать его имя найдите в конфигурационном файле объект с clsid="progid:NIMediaObject.MediaLoader". Их может быть несколько.
Свойства медиа-загрузчика
Имя Доступ Описание
LoadURL Функция Получить медиа-объект из указанного файла.
Set oMedia = mediaLoader.LoadURL("C:\Video\clip1.avi")
Audio Чтение/Запись Включить/выключить вывод звука.
mediaLoader.Audio = false
StretchMode Чтение/Запись Тип масштабирования:
0 - растянуть
1 - обрезать
2 - сохранить пропорции с рамкой
3 - сохранить пропорции
CheckURL Метод Если указанный файл не может быть воспроизведен возникнет исключение.
On Error Resume Next
mediaLoader.CheckURL "C:\Video\Clip.avi"
If Err.Number <> 0 Then
MsgBox ("Invalid file")
Err.Clear
End If
Width Чтение/Запись Ширина
Height Чтение/Запись Высота

Примеры

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

Dim oMedia
// Создаем медиа-объект
Set oMedia = Application.MediaLoader.LoadURL("C:\Videos\Clip.avi")

// Указываем ZOrder больше чем основной плейлист
oMedia.ZOrder = 200

// Под этим именем он будет отображаться
oMedia.Alias = "Тестовый ролик"

// Двойная скорость воспроизведения
oMedia.Rate = 2.0

// Удалить себя по окончании!!!
oMedia.SelfDeleteOnComplete = true

Application.renderer.AddMedia oMedia // Воспроизводим

понедельник, 24 октября 2011 г.

API. Планировщик.

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

Далее будем придерживаться соглашения, что код будет написан моноширинным шрифтом, вместо object должно стоять имя компонента, указанное в конфигурационном файле (не забудьте указать перед ним Application). В квадратные скобки будут браться необязательные параметры.

Программный идентификатор: progid:NISheduler.ShedulerUI

Примечание: Доступ из скриптов к объекту Планировщик на самом деле происходит через объект NISheduler.ShedulerUI, который агрегирует собственно сам Планировщик.

Свойства:

  • object.AutoRunFile [= строка]
    Файл со списком автозагрузки (autorun.xjob)
    Изменяя содержимое файла, можно добиться, что при следующем запуске будет загружен нужный плейлист
  • object.Playlist [= строка]
    Текущий плейлист. При присваивании аналогичен методу LoadPlayList(имяФайла, False, True)
  • object.Logos [= строка]
    Файл со списком логотипов.
  • object.Audio [ = булево значение (True|False)]
    Вывод звука.
  • object.StretchMode [= строка]
    Тип масштабирования для видеороликов.
    Допустимые значения:
    "stretch" - Растянуть под размер экрана.
    "crop" - Без масштабирования, видео обрезается под размер экрана.
    "preserveaspectratio" или "preserve" - Сохранить пропорции с рамкой. Видео на весь экран с сохранением пропорций. По краям могут возникнуть черные поля, если не пропорции видео не совпадают с экраном. Не обрезает.
    "preserveaspectratio_noletterbox" или "noletterbox" - Сохранить пропорции. Видео на весь экран с сохранением пропорций. Может обрезать края, если не пропорции видео не совпадают с экраном. Значение по умолчанию.
  • object.LogolistActive [= булево значение]
    Показывать логотипы.

Методы:

  • object.LoadPlayList имяФайла, безусловный, выполнить
    Загружает плейлист.
    имяФайла - Строка. Файл .xjob с плейлистом.
    безусловный - Булево значение. Если True, то немедленный запуск плейлиста; False - будет доигран текущий клип и затем загружен новый плейлист.
    выполнить - Булево значение. Запустить проигрыватель.
  • object.BackupAndEraseLog имяФайла
    Сохранить текущий файл журнала под именем имяФайла и очистить журнал.
  • object.PausePlaylist
    Приостановить вывод плейлиста.
  • object.ResumePlaylist
    Возобновить показ плейлиста.
  • object.PauseAll
    Приостановить показ (Плейлист/Логотипы/Видеозахват/Тест).
  • object.ResumeAll
    Возобновить показ.
  • object.RotateLogs
    Выполнить ротацию журнала (новое имя на основе текущей даты/месяца).
  • object.LoadLogoList имяФайла, выполнить
    Загрузить логотипы.
    имяФайла - Строка. Имя файла плейлиста с логотипами.
    выполнить - Булево значение. Начать показ логотипов.

Примеры использования:

В "Мастере заданий" представлены несколько примеров использования объекта Планировщик: Сменить/Очистить список воспроизведения, Сменить/Очистить список логотипов, Безусловная смена списка воспроизведения.
Предположим раз в день в 12 часов необходимо показать определенный плейлист, а в остальное время показывать стандартный список воспроизведения. Для этого создаем этот плейлист и в конец его ставим скрипт на выполнение "Сменить список воспроизведения" с указанием стандартного плейлиста. Сам скрипт будет выглядеть так (если имя планировщика в конфигурации задано как sheduler):
Application.Sheduler.Playlist="default.xjob"
Далее с помощью вкладки "Задания" создаем задание на запуск этого плейлиста в 12 ч. ежедневно. Учтите, если выбрать в задании "Сменить список воспроизведения", то плейлист загрузится не ровно 12 ч, а дождется завершения текущего активного клипа. Если необходимо запустить плейлист ровно в 12 ч выберите в Мастере заданий "Безусловная смена списка воспроизведения".