1

Тема: Задержка выполнения скрипта

При добавлении скрипта обработки к событию "после начала воспроизведения медиа-ресурса" сначала отрабатывает этот скрипт и затем запускается транскодирование. А есть ли какая то возможность запускать скрипт с задержкой уже после начала транскодирования, например, через секунду?

И есть ли стандартная функция для скриптов просто задержки?

Потому, как не нашёл стандартную HMS функцию для этой цели, для задержки вставляю:
Для скрипта в паскале:

      //вносим задержку
      b := Time + StrToTime('0:00:01');
      while b > Time do;
      //конец задержки

в паскале описание переменной добавляю к блоку описания.
Для скрипта на c++:

      //вносим задержку
      TTime b = Time + StrToTime('0:00:15');
      while (b > Time); // пауза 15 сек.
      //конец задержки
BRAVIA KDL-40EX700, LG  42LF650V, WDTVLive

2

Re: Задержка выполнения скрипта

Следующий код вызовет паузу в 3 сек:

HmsSleep(3000);

Значение - время в миллисекундах.

Насчёт момента, когда срабатывает скрипт, а когда транскодирование.
Дело в том, что транскодирование - дело не моментальное. Пока наполнится буфер, пока начнёт отправляться на устройство, (если это подкаст и ссылка на файл в интернете - пока пройдёт соединение), всё это может быть ощущение, что скрипт запустился позже.

Sony Bravia KDL-32CX523

3

Re: Задержка выполнения скрипта

WendyH пишет:

Следующий код вызовет паузу в 3 сек:

HmsSleep(3000);

Значение - время в миллисекундах.

Спасибо, то, что надо.

WendyH пишет:

Насчёт момента, когда срабатывает скрипт, а когда транскодирование.
Дело в том, что транскодирование - дело не моментальное. Пока наполнится буфер, пока начнёт отправляться на устройство, (если это подкаст и ссылка на файл в интернете - пока пройдёт соединение), всё это может быть ощущение, что скрипт запустился позже.

Ход транскодирования видно в HMS в окне "транскодирование", если ставлю задержку в скрипте обработки события запуска транскодирования, то транскодирование начинается с задержкой.

Могу более подробно объяснить.
При получении потока со спутникового ресивера есть несколько тонких моментов.

1. Поток имеет приоритет перед просмотром на ТВ (поток считается записью).
2. При переключении канала, когда идёт запись, переход ресивера к трансляции канала, на который произошло переключение, блокируется.
В результате, сначала идёт попытка переключения, потом, при взятии потока с ресивера, начинается трансляция по сети, но на ТВ ресивер уже не показывает. У меня сейчас 2 разных устройства с энигмой, оба ведут себя одинаково.
Есть 2 варианта : 1 - переключать канал с небольшой задержкой после начала сетевой трансляции, 2 - сначала ждать прекращения транскодирования по таймауту, потом переключать канал. Но тут тоже засада, таймаут нельзя ставить менее 15 сек., поскольку иначе ресивер не всегда успевает получить ключи для декодирования потока. В результате сейчас у меня таймаут прекразщения транскодирования 14 сек. и задержка 15 сек на событии начала воспроизведения, т.е. что бы переключить канал, надо ждать более 30 сек.

Вот такая засада.

Если бы не нужно было смотреть на телевизоре непосредственно с ресивера, а исключительно по сети, может и так бы сгодилось.

BRAVIA KDL-40EX700, LG  42LF650V, WDTVLive