Говорить с флэш-памятью, работающей в локальном ActiveX, управляемом другим программным обеспечением
Некоторое время я использовал Flash + Zinc для создания простого интерактивного программного обеспечения для живых телешоу, в основном для викторин, прямых выборов и других сценариев, где визуальные эффекты не могут быть подготовлены ранее и должны реагировать на текущую ситуацию. Затем видеосигнал будет выводиться через порт видеовыхода или преобразователь VGA в видео и проходить через видеомикшер, где он будет иметь яркость или цветность. При этой настройке элементы управления приложения будут находиться под областью вывода видео.
Единственная проблема с этой настройкой состоит в том, что нет альфа-канала, а использование яркости и цветовой настройки очень ограничено.
Для решения этой проблемы я начал использовать Caspar CG. Насколько я понимаю, эта программная система берет SWF-файл и воспроизводит его в ActiveX Flash Player, из которого можно извлечь как цветной, так и альфа-канал, и отправить их на профессиональную карту DeckLink, которая поддерживает отдельные цветовые и альфа-каналы. Все это работает очень хорошо визуально, но так как элемент управления ActiveX не виден во время воспроизведения, мой SWF не может захватывать события мыши или клавиатуры.
Я попытался сделать так, чтобы SWF опросил локальный веб-сервер на предмет ввода, но, хотя он работает во время тестирования в Adobe Flash, он не работает во время воспроизведения в ActiveX, размещенном на Caspar CG Server. Из того, что я прочитал, это связано с политиками безопасности, встроенными во Flash Player, и я ничего не мог с этим поделать.
В итоге у меня был SWF-опрос локального файла для новых команд с интервалом 100 мс. В то же время простое управляющее приложение (JS + PHP на локальном сервере XAMPP - просто потому, что я очень легко разбираюсь в веб-разработке) должно было написать команду в текстовом файле, соответствующем нажатой кнопке.
Это вызвало некоторые проблемы, когда файл был открыт с помощью Flash или PHP, и я нашел способ заставить обе стороны повторять чтение / запись, пока они не преуспели.
В целом, установка работает, но я чувствую, что она не может быть менее элегантной, чем эта. Во-первых, я не нашел способа, чтобы SWF-файл мог записывать в локальный текстовый файл, чтобы сообщать о его состоянии, поэтому реализовать многие расширенные функциональные возможности нецелесообразно (даже базовые функции пользовательского интерфейса, такие как отключение кнопок на стороне контроллера при определенных обстоятельствах). анимации воспроизводятся на SWF).
Мои вопросы мне даже не ясны, но вот они:
- Возможно ли, чтобы локально воспроизводимый SWF записывал на диск?
- Кто-нибудь может предложить лучший способ сделать все это общение?
1 ответ
Альтернативой для #2 может быть LocalConnection, при условии, что вы можете запустить исполняемый файл Caspar CG и управляющее приложение swf/Zinc на одном компьютере.