понедельник, 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 // Воспроизводим

Комментариев нет:

Отправить комментарий