Нашли альтернативу флеш анимации

Здесь обсуждаются любые продукты компании СофтЛаб-НСК для телевизионного вещания (Форвард Т, Форвард ТС, Форвард Голкипер, Форвард Рефери, Форвард Офис, Форвард Инжест)

Модераторы: ElenVR, Людмила, PR

Ответить
vd
Сообщения: 2311
Зарегистрирован: 05 мар 2003 19:21

Сообщение vd »

необходима информация дающая полное представление о проигрываемом плэйлисте
Вам нужен весь плейлист, а дальше будете его сами анализировать? Или Вам нужна какая-то информация, которая решит только Вашу конкретную задачу? Если второе, то что именно нужно? "Дающее полное представление о плейлисте" - слишком расплывчато, и понять можно по-разному. Точнее, пока вообще непонятно.
Даниленко Сергей
Сообщения: 7093
Зарегистрирован: 26 фев 2004 09:53
Откуда: Techsupport SoftLab-NSK

Сообщение Даниленко Сергей »

необходима информация дающая полное представление о проигрываемом плэйлисте
А если в плейлисте несколько тысяч позиций? А если он зацикленный, то что передавать в качестве плейлиста?

Подход явно неправильный. Ну, допустим, вы получили полный плейлист за сегодняшний день. И что? Анализ будет что ли такой: если это клип с названием ааааааа.avi, а после него стоит клип с названием бббббббббббб.avi, тогда ..., а иначе..... Так что ли?
Завтра в плейлисте ролики поменяются и будете скрипт переписывать?

На наш взгляд нужен какой-то другой способ получения нужной информации из плейлиста. Например, заводим какое-то новое свойство для SLIni-файла. Пусть условно оно называется "не реклама". Нужным файлам прописываем это свойство. И вот тогда имеющим смысл будет, например, такой запрос: "OnAi, дай мне информацию о следующем (двух следующих, трёх следующих) ролике со свойством "не реклама" ".
Вот как-то так.
Самотлор
Сообщения: 15
Зарегистрирован: 25 окт 2013 13:34

Сообщение Самотлор »

У меня маленький опыт в программировании, скорей всего по этому у меня возник: у Вас есть пример SLQML_TVGuide, он зацикленный, а как сделать, чтобы данный привер не был зацикленный? Если изменить в TVGuideEngine.qml в компоненте Timer атрибут repeat: на false то в OnAir этот ролик проиграется 1 раз, вроде все правильно, но если в OnAir снова выключить и включить данный титрованный объект, то QML не проиграется, надо его полностью перезагружать задание. Вопрос как реализовать, чтобы QML в OnAir при включении каждый раз проигрывался сначала? Вопрос конечно банальный и глупый…
Даниленко Сергей
Сообщения: 7093
Зарегистрирован: 26 фев 2004 09:53
Откуда: Techsupport SoftLab-NSK

Сообщение Даниленко Сергей »

у Вас есть пример SLQML_TVGuide.....................
Как-то уже забылось что это такое. Выложите, пожалуйста, куда-нибудь этот пример.
Самотлор
Сообщения: 15
Зарегистрирован: 25 окт 2013 13:34

Сообщение Самотлор »

Проект:
ftp://ftp.sl.iae.nsk.su/Public/ForwardT ... VGuide.zip

Проблема у меня решена и в прицепе вопрос можно мой закрывать.
Просто интересно а можно сделать проект в QML чтобы он отыграл задание которое указано в txt файле и титрованный проект перешел в состояние стоп.
На пример: Загрузили в OnAir мы QML (SLQML_TVGuide), нажали бы кнопку F9 (показать титрованый объект), QML проиграл бы задание, в нашем примере это 3 анонса и всё, OnAir выключил бы титрованный объект.
Даниленко Сергей
Сообщения: 7093
Зарегистрирован: 26 фев 2004 09:53
Откуда: Techsupport SoftLab-NSK

Сообщение Даниленко Сергей »

Не совсем понял суть вопроса. Что такое "чтобы OnAir выключил"? А сейчас он у вас не выключает?
Самотлор
Сообщения: 15
Зарегистрирован: 25 окт 2013 13:34

Сообщение Самотлор »

В нашем примере, если в OnAir нажать один раз клавишу F9 появиться объект (на экране появиться анонс), если нажать еще раз F9 то QML исчезнет. Если мы еще раз выводим на экран QML (нажмем F9) то QML продолжить работать с того момента, на котором его до этого прервали. Вопрос можно сделать так чтобы QML с начала стал отрабатывать, а не продолжать?
fedor
Сообщения: 283
Зарегистрирован: 17 янв 2007 13:02
Откуда: Хабаровск

Сообщение fedor »

Игорь Таранцев писал(а): Уже сейчас все комментарии, идущие в расписании подряд перед и после команды передаются как один комментарий. Соответственно, уже сейчас Вы получаете комментарий для следущей команды,
Да, мы это уже поняли. И это очень хорошо, но и здесь, к сожалению есть некоторые трудности.
Постараюсь сразу объяснить подробно. Хотя это нигде не описано, но мы опытном путём выяснили что
в описании писал(а): var notifyComment список комментариев вокруг команды в расписании.
означает, что "формируется строка из всех комментариев ПОСЛЕ проигрываемого элемента путём конкатенации через символ "," в направлении "сверху вниз", которая дополняется конкатенацией всех комментариев расположенных в расписании ДО в порядке "снизу вверх". Обе части (до и после) соединяются так же через символ ",""

В принципе, всё хорошо, за исключение небольшого ньюанса - каждый комментарий в потоке событий смены значений notifyComment появляется дважды - в качестве "комментария после", для первого ролика и в качестве "комментария до", для следующего ролика, и определить к какому из них относится данный комментарий несколько затруднительно. Я подумал, что ситуацию могло бы спасти простая смена символа-разделителя между половинками "до" и "после" - он не должен совпадать с разделителем (",") используемым для отделения комментариев.

То есть, всё что я здесь написал, означает лишь "исправьте пожалуйста разделитель между половинками notifyComment на, скажем, "|", оставив при этом в качестве разделителя комментариев запятую".

Пример.

Плэйлист:

Код: Выделить всё

// комент6
// комент5
// комент4
мульт.mpg
// комент1
// комент2
// комент3
мульт2.mpg
// -
Как обстоит дело сейчас:
SLRunTime.notifyComment во время проигрывания мульт.mpg:

Код: Выделить всё

"комент1,комент2,комент3,комент4,комент5,комент6"
SLRunTime.notifyComment во время проигрывания мульт2.mpg:

Код: Выделить всё

"-,комент3,комент2,комент1"
Как хотелось бы:
SLRunTime.notifyComment во время проигрывания мульт.mpg:

Код: Выделить всё

"комент1,комент2,комент3|комент4,комент5,комент6"
SLRunTime.notifyComment во время проигрывания мульт2.mpg:

Код: Выделить всё

"-|комент3,комент2,комент1"
и даже если последний комментарий отсутствует, то SLRunTime.notifyComment во время проигрывания мульт2.mpg:

Код: Выделить всё

"|комент3,комент2,комент1"
Даниленко Сергей
Сообщения: 7093
Зарегистрирован: 26 фев 2004 09:53
Откуда: Techsupport SoftLab-NSK

Сообщение Даниленко Сергей »

Для Самотлор:
Вопрос можно сделать так чтобы QML с начала стал отрабатывать, а не продолжать?
Нажимаете F9 - QML начинает показ. Нажимаете F9 - QML прекращает показ. Перед следующим показом нужно перезагрузить задание и тогда при следующем нажатии на F9 показ начнётся с начала. Перезагрузить задание можно из меню под кнопкой F9
ИзображениеЩелкните по изображению для увеличения
Даниленко Сергей
Сообщения: 7093
Зарегистрирован: 26 фев 2004 09:53
Откуда: Techsupport SoftLab-NSK

Сообщение Даниленко Сергей »

Для fedor:
То есть, всё что я здесь написал, означает лишь "исправьте пожалуйста разделитель между половинками notifyComment на, скажем, "|", оставив при этом в качестве разделителя комментариев запятую".
Передано разработчикам.
Самотлор
Сообщения: 15
Зарегистрирован: 25 окт 2013 13:34

Сообщение Самотлор »

Даниленко Сергей писал(а):Для Самотлор:
Вопрос можно сделать так чтобы QML с начала стал отрабатывать, а не продолжать?
Нажимаете F9 - QML начинает показ. Нажимаете F9 - QML прекращает показ. Перед следующим показом нужно перезагрузить задание и тогда при следующем нажатии на F9 показ начнётся с начала. Перезагрузить задание можно из меню под кнопкой F9
ИзображениеЩелкните по изображению для увеличения
Это понятно, а нельзя сделать так чтобы компонент был не зацикленный. На пример как компонент Flaash4 в TitltDesinger можно было бы выбирать зациклить: Да/Нет.
Даниленко Сергей
Сообщения: 7093
Зарегистрирован: 26 фев 2004 09:53
Откуда: Techsupport SoftLab-NSK

Сообщение Даниленко Сергей »

В данный момент это сделать невозможно.
Даниленко Сергей
Сообщения: 7093
Зарегистрирован: 26 фев 2004 09:53
Откуда: Techsupport SoftLab-NSK

Сообщение Даниленко Сергей »

Для fedor:
То есть, всё что я здесь написал, означает лишь "исправьте пожалуйста разделитель между половинками notifyComment на, скажем, "|", оставив при этом в качестве разделителя комментариев запятую".
У нас другое предложение. Мы предлагаем сделать две переменные для комментариев.
Как-то так:
var notifyCommentBefore
var notifyCommentAfter

Устроит?
fedor
Сообщения: 283
Зарегистрирован: 17 янв 2007 13:02
Откуда: Хабаровск

Сообщение fedor »

Даниленко Сергей писал(а):Для fedor:
То есть, всё что я здесь написал, означает лишь "исправьте пожалуйста разделитель между половинками notifyComment на, скажем, "|", оставив при этом в качестве разделителя комментариев запятую".
У нас другое предложение. Мы предлагаем сделать две переменные для комментариев.
Как-то так:
var notifyCommentBefore
var notifyCommentAfter

Устроит?
Да, конечно, так даже лучше.
fedor
Сообщения: 283
Зарегистрирован: 17 янв 2007 13:02
Откуда: Хабаровск

Сообщение fedor »

vd писал(а): Вам нужен весь плейлист, а дальше будете его сами анализировать?
Ну а почему бы и нет? Можно конечно подписывать костылики, а можно сразу решить проблему кардинально. Вот кардинаьлно - это вывалить весь плейлист, а скрипт внутри титра уже сам решит что с ним делать.
vd писал(а): Или Вам нужна какая-то информация, которая решит только Вашу конкретную задачу?
Ну вот конкретная задача пока - это сделать анонс сюжета/ов. Но, как тут уже правильно гооврилось, сюжет этот может быть черте где ниже по плэйлисту. Мало того, если плэйлист зациклен, то титр проигрываемый на последнем элементе плэйлиста, должен иметь представление о его начале, а если стоИт команда перехода на другой плейлист - то и о содержимом этого другого плейлиста. То есть информации нужно очень много, фактически всё. Поэтому я и говорил "полном представлении".
Теперь как его составить.

На мой взгляд тут есть два подхода - сделать пару методов, которые вернуть полное содержимое первого и второго плейлиста соответственно плюс что-то, что позволило бы судить о том, не был ли изменён плейлист. Как я уже говорил, лучше если бы в случае его изменения (или загрузки) срабатывало бы какое-нибудь событие, на которое можно было бы подписаться. Если этот механизм по какой-то причине нельзя использовать, то можно было бы просто завести переменную, в которой хранить какую-то условную цифру (например, это могла бы быть контрольная сумма посчитанная от всего плэейлиста представленного в виде строки), а изменение её говорило бы скрипту титра о том, что плейлист был изменён или перезагружен и его нужно перечитать.

Второй вариант - это набор методов, через которые можно было бы шерстить плейлист, не получая его полносью. Ну например, такой набор методов:

Код: Выделить всё

getNextItem() - вернуть следующий элемент плейлиста или null если конец (если встретился конец плэйлиста или если на зацикленном плейлисте встретился проигрываемый сейчас элемент);
setOnCurrent() - вернуться на текущий
Или чтобы не хранить состояние:

Код: Выделить всё

getPlailistPosition() - вернуть текущую позицию плейлиста (или завести соответствующую переменную)
getPlailistItem(position)  - вернуть указанный элемент плейлиста.
Хорошо, если бы с точки зрения скрипта титра оба загруженных плэйлиста представлялся бы одним плоским списком с учётом комманд перехода.
Ответить