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

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

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

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

Сообщение vd »

НО для полноценного встраивания QML-титров в эфирный плейлист, скрипт QML должен иметь представление о текущем положении и собственном состоянии в рамках плэйлиста
Можете пояснить, для чего это все нужно? Хотите написать собственный скрипт, который показывает анонс следующей передачи и время до окончания текущей, генерируя картинку средствами QML?
уметь ловить момент, когда началось отображение титра и момент, когда оно закончилось
А это зачем?
fedor
Сообщения: 283
Зарегистрирован: 17 янв 2007 13:02
Откуда: Хабаровск

Сообщение fedor »

vd писал(а): Хотите написать собственный скрипт, который показывает анонс следующей передачи и время до окончания текущей, генерируя картинку средствами QML?
Ну предположим и так.
Но это может быть не просто анонс. Это может быть какой-нибудь более сложный элемент. Например, элемент, отображающий результаты sms-голосования, который за минуту до окончания голосования включает обратный отсчёт. Или без обратного отсчёта, но просто прекращает приём голосов в момент окончания соответствующей передачи. Да мало ли что это может быть! Вариантов масса.
vd писал(а):
fedor писал(а): уметь ловить момент, когда началось отображение титра и момент, когда оно закончилось
А это зачем?
Ну, предположим, qml-титр имеет анимацию. Если анимация не циклическая, как в вашем первом примере, а разовая, которая должна отрисовываться в момент отображения титра, то без информации о состоянии видимости титра получается никак? Да и с циклической анимацией тоже не всегда красиво, когда титр появляется на середине цикла анимации, а не с его начала. Вы не согласны?
Даниленко Сергей
Сообщения: 7093
Зарегистрирован: 26 фев 2004 09:53
Откуда: Techsupport SoftLab-NSK

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

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

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

Описание класса SLRunTime титровального элемента QML.

Для получения информации о титровальном элементе используется встроенный класс SLRunTime.

Ниже перечислены все свойства SLRunTime (все свойства доступны только на чтение):
string taskName имя файла задания титровального элемента QML.
long width ширина элемента (в пикселях).
long height высота элемента (в пикселях).
long frameRate частота кадров титровального ядра.
long fieldOrder порядок полей в кадре. Может принимать значения:
-1 прогрессивная развертка (весь кадр отображается в одно время);
0 нижнее поле первое (изображение кадра формируется из двух изображений, первым отображается нижнее поле);
1 верхнее поле первое (изображение кадра формируется из двух изображений, первым отображается верхнее поле).
long globalTime глобальный счетчик кадров в титровальном ядре.
long currentTime локальный счетчик кадров в титровальном элементе.
long statusElement текущее состояние титровального элемента QML. Может принимать значения:
None (-1) состояние элемента не определено (элемент не работает);
Stopping (0) элемент останавливается и через некоторое время остановится (перейдет в состояние Stopped);
Preparing (1) элемент готовится к последующему воспроизведению (воспроизведение может начаться через неопределенное время, например, через несколько часов);
Stopped (2) элемент остановлен и ничего не показывает;
Starting (3) элемент готовится к воспроизведению и скоро перейдет в состояние Running;
Running (4) элемент воспроизводится.

Также, при получении нотификации из программы FDOnAir о скором выполнении команды, относящейся к командам полноэкранного расписания (например, команда показа ролика), класс SLRunTime вызывает следующие нотификации:
long notifyStartTime время старта команды (глобальный номер кадра).
long notifyStartCrossfade длительность мягкой склейки в команде (в кадрах).
long notifyType тип команды (0 – показ ролика, 1 – показ видеовхода).
long notifyChannel номер видеовхода (если тип команды равен единице).
string notifyFileName имя файла ролика (если тип команды равен нулю).
long notifyFileCrossfade длительность мягкой склейки для ролика (в кадрах).
long notifyFileDuratuon длительность воспроизведения ролика (в кадрах)
long notifyFileDuratuonFull длительность воспроизведения ролика (в кадрах).
var notifyComment список комментариев вокруг команды в расписании.

ИзображениеЩелкните по изображению для увеличения

Здесь документ и пример: ftp://ftp.sl.iae.nsk.su/Public/ForwardT ... unTime.zip
Даниленко Сергей
Сообщения: 7093
Зарегистрирован: 26 фев 2004 09:53
Откуда: Techsupport SoftLab-NSK

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

И что? Так было много эмоций по поводу как улучшить наш титровальный элемент QML. Улучшили. И тишина.
fedor
Сообщения: 283
Зарегистрирован: 17 янв 2007 13:02
Откуда: Хабаровск

Сообщение fedor »

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

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

Будем ждать.
fedor
Сообщения: 283
Зарегистрирован: 17 янв 2007 13:02
Откуда: Хабаровск

Сообщение fedor »

Даниленко Сергей писал(а):Будем ждать.
Да, похоже, это примерно то что нужно...
Даниленко Сергей
Сообщения: 7093
Зарегистрирован: 26 фев 2004 09:53
Откуда: Techsupport SoftLab-NSK

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

это примерно то что нужно...
Примерно - это значит не совсем то, что нужно. Что не устраивает? Только, пожалуйста, конкретно, а не в виде философских размышлений.
Самотлор
Сообщения: 15
Зарегистрирован: 25 окт 2013 13:34

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

Попробовал работать с QML и был приятно удивлен. Очень понравилась эта технология особенно после Flash (Action Script). Разработчики, спасибо Вам, что не сидите на месте и развиваете свой продукт!
Теперь по делу. Поставил перед собой небольшую задачу, выводить анонс (небольшие плашки с полупрозрачностью поверх текущего видео) своих телепередач и чтобы это было максимально автоматизировано. Я бы хотел решить эту задачу так:
- пользователь в текстовом файле указывает, какие плашки нужны на пример в формате как был Ваш пример (./Images/1.jpg|Новости|Завтра|20:00).
- затем в расписании OnAir ставит комментарий, который бы говорил QML, что в этом видео надо вывести один анонс из списка.
Всё это практически реализовано есть только один нюанс. У нас постоянно бегает рекламная строка. И хотелось бы, чтобы работало примерно так:
В OnAir запускается видео файл или нарезка из хранилища с комментарием, что нужно запустить анонс во время проигрывания этого файла, допустим в середине. Проигрывается этот видео файл на нем бежит строка, проигрывание файла доходит до середины, бегущая строка отключается, появляется анонс, бегущая строка включается.

Можно все реализовать стандартными средствами. На пример разрезать видео файл на куски поставить off бегущей строки, затем вывести анонс потом on бегущая строка. Но на мой взгляд хотелось бы упростить этот момент и убрать человеческий фактор.

Можно реализовать, как я понимаю через SLMessageServer. Написать приложение которое будет вкл или выкл бегучки делать. Такой вариант мне кажется, будет усложнять процесс взаимодействия.

Можно в JS попробовать эмулировать нажатия клавиши (F6,F7 и т.д.) в OnAir.

Было бы здорово, если бы в QML были компоненты для взаимодействия с OnAir’ом.
За описание QML_SLRunTime спасибо.

На Ваш взгляд как проще было бы реализовать мою задумку?

P.S. Может я чего то не знаю и можно управлять OnAir в QML через JS или еще как то, может все очень просто, а я заморачиваюсь и всё усложняю.
Игорь Таранцев
Сообщения: 493
Зарегистрирован: 04 янв 2004 12:45
Откуда: СофтЛаб-НСК

Сообщение Игорь Таранцев »

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

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

Всё гениальное просто! Я об этом и не подумал! Спасибо!
fedor
Сообщения: 283
Зарегистрирован: 17 янв 2007 13:02
Откуда: Хабаровск

Сообщение fedor »

Даниленко Сергей писал(а):Только, пожалуйста, конкретно, а не в виде философских размышлений.
Конкретно на данный момент нам не хватает информации о следующем элементе плэйлиста и его комментарии.
Игорь Таранцев
Сообщения: 493
Зарегистрирован: 04 янв 2004 12:45
Откуда: СофтЛаб-НСК

Сообщение Игорь Таранцев »

fedor писал(а):Конкретно на данный момент нам не хватает информации о следующем элементе плэйлиста и его комментарии.
Сначала хотел бы уточнить про передачу комментариев в нотификации о старте команды полноэкранного расписания. Уже сейчас все комментарии, идущие в расписании подряд перед и после команды передаются как один комментарий. Соответственно, уже сейчас Вы получаете комментарий для следущей команды, если у Вас в расписании стоят только команды полноэкранного расписания и комментарии к ним. Естественно, что команды управления тирами, команды ожидания GPI событий, блоки (и прочее) разрывают поток комментариев.

Теперь про информацию о следующем элементе плэйлиста. Сейчас мы не сканируем расписание вперед и не ищем следующую команду полноэкранного расписания, поскольку совершенно не очевидно, что именно нужно искать. Например, для показа "Далее следует" нужно найти ролик, который идет через много-много команд полноэкранного расписания (скорее всего он идет вообще в другом блоке расписания). Соответственно, если мы вернем в нотификации, например, название первого рекламного ролика, то это никак не поможет показу "Далее следует". Вот мы и не придумали до сих пор, кому может понадобиться следующая команда. Можете объяснить, зачем Вам знать, какая команда полноэкранного расписания идет в расписании после стартующей сейчас команды?
fedor
Сообщения: 283
Зарегистрирован: 17 янв 2007 13:02
Откуда: Хабаровск

Сообщение fedor »

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