Автоматизация выхода титровальных объектов (текст+подложка)

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

Модераторы: Людмила, PR, vd, Даниленко Сергей

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

Сообщение vd »

Вот к примеру моя программка увидела ошибку подключения, и что дальше ? Оставлять старую погоду или писать в файл нечто типа кучи пробелов и точки в конце, чтобы ОнАир корректно это отработал и не повис с табличкой не могу вгрузить в титровальный объект ...?
Конечно, оставлять старую погоду. А чем это плохо?
Мне бы было проще, если бы я поставил галочку "пропускать задания с ошибками" в установках ОнАира в вкладке "Общие" и оно пропускало всё.
Логично. Постараемся решить проблему. Но и вам писать программу, не проверяя возможные ошибочные ситуации, неправильно.
Просто гадство у конкурентов бегущая останавливается и разукрашена в разные цвета, а у нас нет
С этим мы обязательно будем разбираться.
ВОВАН
Сообщения: 168
Зарегистрирован: 16 окт 2005 03:02
Откуда: г.Туапсе

Сообщение ВОВАН »

Конечно, оставлять старую погоду. А чем это плохо?

У меня один день так было, народ неочень это воспринял-уже полдня прошло, а прогноз на этот же день бежит, пришлось просто выключить(строчку с загрузкой этого текстовика убрать из ОнАира).
Логично. Постараемся решить проблему. Но и вам писать программу, не проверяя возможные ошибочные ситуации, неправильно.
Спасибо. Согласен, проверять ошибки подключения нужно, но как просто не выводить ничего пока неясно. Вообще я хочу всё-таки разобраться с сдк, может проще будет не выводить через загрузку файлов в расписании ОнАира, а когда нужно прямо с программки делать вывод в строчку.
Даниленко Сергей
Сообщения: 7091
Зарегистрирован: 26 фев 2004 09:53
Откуда: Techsupport SoftLab-NSK

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

Цитата:
Просто гадство у конкурентов бегущая останавливается и разукрашена в разные цвета, а у нас нет

С этим мы обязательно будем разбираться.
Мой коллега не совсем правильно выразился. Мы не просто разбираемся с этой проблемой, а мы ее активно решаем.

Про остановку.
Сейчас делается так называемая "поддержка скриптов" в нашей титровальной системе. Выглядеть это будет так - с титровальным объектом можно будет ассоциировать скрипт, написанный на языке, который по синтаксису похож на JavaScript. Этот скрипт (по большому счету его можно рассматривать как программу) будет управлять титровальными элементами, входящими в титровальный объект. Это позволит с одной стороны, решать типовые задачи, например, остановку телефона. С другой стороны, дает возможность нашим пользователям организовывать достаточно сложные сценарии работы титровальных элементов, но при этом в расписании программы OnAir не нужно будет вставлять по многу команд управления титрами (как это требуется сейчас). Например, для показа "далее следует", состоящего из подписи и анимированной подложки, сейчас нужно будет вставить в расписание несколько команд управления титрами. При использовании скриптов достаточно будет вставить одну команду - загрузить задание в определенный титровальный объект. А уже этот объект запустит исполнение скрипта и он (скрипт) сам уже будет управлять показом титровальных элементов.

Про разные цвета.
Для бегущей строки сейчас делается расширенное форматирование, которое позволит:
-менять стиль разных частей одного объявления
-вставлять картинки в бегущую строку
-делать подложку для всего объявления или разных его частей
Например для картинки в объявлении это будет выглядеть примерно так:
<#$P hello.tga>текст_объявления
ВОВАН
Сообщения: 168
Зарегистрирован: 16 окт 2005 03:02
Откуда: г.Туапсе

Сообщение ВОВАН »

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

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

Пока не за что :D
Даниленко Сергей
Сообщения: 7091
Зарегистрирован: 26 фев 2004 09:53
Откуда: Techsupport SoftLab-NSK

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

Для ВОВАН:
Вот я сделал программку, она берет с нашего ящика почту, находит в ней этот самый проноз и делает текстовый файлик, который в расписании ОнАира стоит в titleObjLoad. Иногда бывает, что с инетом у нас что-то приключается, погода не забирается и получается пустой файлик. А в этом же расписании титровального ОнАира стоит дальше бегущая обычная(объявления) и вот ОнАир останавливается на этом пустом файле и стоит, ждет пока сообщение об ошибке закроют. Как этого избежать? И тоже самое с титировальным элементом "подпись", только там он пустые файлы воспринимает по-другому - он просто останавливается и ошибку не выдает, просто стоит.
Хотелось бы получить ответ на некоторые вопросы прежде чем менять поведение программы OnAir.
Есть два варианта "плохого файла", которые можно себе представить:
1)файл пустой
2)файл отсутствует на диске
С точки зрения здравого смысла пустой файл считать ошибочным вроде бы как и неправильно: мало ли кто и по каким причинам хочет показывать "пустышку".
А вот отсутствие файла на диске с нашей точки зрения это действительно проблема, от которой можно защищаться.
Предложения следующие:
1)Пустой файл не считается ошибочным заданием для титровальных элементов "бегущая строка" и "подпись".
2)Если файл-задание для титровального элемента отсутствует, то программа OnAir молча пропускает его (если соответствующая опция - пропускать задания с ошибками - выбрана в настройках) и начинает .

Ну а вам нужно будет внести изменение в свою программу, чтобы она в случае проблем с инетом убивала файл (или не делала) если он потенциально получится пустым.
Устраивает?
ВОВАН
Сообщения: 168
Зарегистрирован: 16 окт 2005 03:02
Откуда: г.Туапсе

Сообщение ВОВАН »

День добрый.
Да, полностью устраивает. Если файла нет, то в расписании его пометить ошибкой и пропускать, а если файл пустой или содержит только пробел, то он бы просто проходил пустой в бегущей. Я просто тогда буду делать файл пустой, так будет правильней. Лиж бы не вылетало сообщение, о неправильном формате файла и не останавливало бы расписание титровального ОнАира. Единственное, если проигрование пустой строки будет занимать много времени(будет большой перерыв между строками из-за этого), то я пожалуй буду просто убивать файл, чтобы задание проскакивало быстрей, не делало больших пауз. В общем всё устраивает.
Даниленко Сергей
Сообщения: 7091
Зарегистрирован: 26 фев 2004 09:53
Откуда: Techsupport SoftLab-NSK

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

Договорилиь. Будем делать.
ВОВАН
Сообщения: 168
Зарегистрирован: 16 окт 2005 03:02
Откуда: г.Туапсе

Сообщение ВОВАН »

Доброе время суток.
Такая просьба: можете дать пример использования SLTMTitleRunTime под С Builder 6? Хочу все-таки попробовать повыводить титры прямо из своего приложения через COM.

Я вот что сделал:

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

#include <vcl.h>
#pragma hdrstop

#include "Unit1.h"
#include "SLTMTitleRunTime_TLB.cpp"
//---------------------------------------------------------------------------
#pragma package&#40;smart_init&#41;
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1&#58;&#58;TForm1&#40;TComponent* Owner&#41;
        &#58; TForm&#40;Owner&#41;
&#123;
TCOMISLTMTitleRunTimeMgr2 pIProject;
HRESULT  hr=pIProject.CreateInstance&#40;__uuidof&#40;TitleProjectMgr&#41;&#41;;
Но ничего хорошего не получается. :( Как тут надо сделать?
amir
Сообщения: 11
Зарегистрирован: 15 дек 2003 12:51
Откуда: Softlab-Nsk

Сообщение amir »

Доброе время суток.
Такая просьба: можете дать пример использования SLTMTitleRunTime под С Builder 6?
Можем дать пример под MSVS:

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

  ISLTMTitleRunTimeMgr2 *TitleManager;
  CoCreateInstance&#40;CLSID_TitleProjectMgr, 0, CLSCTX_LOCAL_SERVER|CLSCTX_REMOTE_SERVER|CLSCTX_INPROC_SERVER, IID_ISLTMTitleRunTimeMgr2, &#40;LPVOID*&#41;&TitleManager&#41;;
  TitleManager->Init&#40;TitleProjectBstr, BoardNumber, CLSID_SLTMTitleServerTargetMgr&#41;;
  
  long cnt=0;
  TitleManager->get_NumObjects&#40;&cnt&#41;;
  for &#40;int i=0; i<cnt; i++&#41; &#123;
    LPUNKNOWN face=0;
    ISLTMTitleRunTime3 *TitleObject=0;
    TitleManager->GetRunTimeInterface&#40;i, &face&#41;;
    face->QueryInterface&#40;IID_ISLTMTitleRunTime3, &#40;void**&#41;&TitleObject&#41;;        

    // Копируем указатель на объект куда-либо

    face->Release&#40;&#41;;
  &#125;
ВОВАН
Сообщения: 168
Зарегистрирован: 16 окт 2005 03:02
Откуда: г.Туапсе

Сообщение ВОВАН »

День добрый. Спасибо за пример. Только вот проблема такая: у меня билдер ругается:
[C++ Error] Unit1.cpp(20): E2451 Undefined symbol 'CLSID_SLTMTitleServerTargetMgr'
[C++ Error] Unit1.cpp(25): E2034 Cannot convert '_GUID' to '_GUID *'
[C++ Error] Unit1.cpp(25): E2342 Type mismatch in parameter 'targetGuid' (wanted '_GUID *', got '_GUID')

Это он про вот эти строки:

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

ISLTMTitleRunTimeMgr2 *TitleManager;
  CoCreateInstance&#40;CLSID_TitleProjectMgr, 0, CLSCTX_LOCAL_SERVER|CLSCTX_REMOTE_SERVER|CLSCTX_INPROC_SERVER, IID_ISLTMTitleRunTimeMgr2, &#40;LPVOID*&#41;&TitleManager&#41;;

  GUID guidTitleTarget = CLSID_SLTMTitleServerTargetMgr;
  TitleManager->Init&#40;&#40;BSTR&#41; "D&#58;\bs\MUZ.SLTitleProj", 1, guidTitleTarget&#41;;
Подскажите почему это он не может найти CLSID_SLTMTitleServerTargetMgr? Пробовал также ставить CLSID_SLTMTitleArtServerTargetMgr и CLSID_SLTMTitleBackServerTargetMgr - не помогает(он их тоже не неходит).
Вроде произвел же импорт SLTMTitleRunTime.tlb... где это ещё может быть?
amir
Сообщения: 11
Зарегистрирован: 15 дек 2003 12:51
Откуда: Softlab-Nsk

Сообщение amir »

CLSID_SLTMTitleServerTargetMgr определен в sltmsrvdlib.dll

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

GUID guidTitleTarget = CLSID_SLTMTitleServerTargetMgr; 
BSTR project = SysAllocString&#40;"D&#58;\bs\MUZ.SLTitleProj"&#41;;
TitleManager->Init&#40;project, 1, &guidTitleTarget&#41;; 
SysFreeString&#40;project&#41;;
// 1 - будет означать вторую плату
ВОВАН
Сообщения: 168
Зарегистрирован: 16 окт 2005 03:02
Откуда: г.Туапсе

Сообщение ВОВАН »

Сори, но где найти этот sltmsrvdlib.dll чтобы попытаться его импортировать? Я его найти не смог.
У меня номер платы в FD300 Configuration в окне Boards' Indexes плата значится как Fwd 1 -> 1(1). Поэтому я и писал в Init единицу.
ВОВАН
Сообщения: 168
Зарегистрирован: 16 окт 2005 03:02
Откуда: г.Туапсе

Сообщение ВОВАН »

Нашел я описание CLSID_SLTMTitleServerTargetMgr, только не в sltmsrvdlib.dll , а в C:\Program Files\ForwardT Software\SLTMSrvs\SLTMSrvd.dll. Полагаю, что это оно и есть.
amir
Сообщения: 11
Зарегистрирован: 15 дек 2003 12:51
Откуда: Softlab-Nsk

Сообщение amir »

Можете просто вставить в код:
MIDL_DEFINE_GUID(CLSID, CLSID_SLTMTitleServerTargetMgr,0xDD02FC80,0x7D6E,0x440B,0xBF,0x32,0x1A,0x29,0x77,0x4D,0xDC,0x1A);

Для пользователя платы нумеруются первая, вторая и т.д., в коде же имеют индексы 0, 1 ...
Ответить