Какой самый надежный способ получить время выполнения Flash-файла в C #? - PullRequest
2 голосов
/ 19 мая 2011

Я пытался найти надежный способ получить отрезок времени для видео или анимации, содержащихся в файле flash (swf) в приложении C #. Я нашел несколько ссылок, которые показывают, как прочитать заголовок, но есть несколько проблем с заголовком.

  1. Я уже запускал код для нескольких файлов в нашей компании (созданных сторонними организациями), у которых число фреймов равно нулю, что, очевидно, неверно при его запуске в браузере.
  2. Когда файлы действительно содержат информацию, заголовок не согласован между версиями flash. Я даже не могу найти копию старых заголовков, которые существовали до Flash 7. Не имея этого, даже для файлов, которые относятся к заголовку, я не знаю, какая версия до 7 была последней с другим форматом заголовка.

Для справки, приложение, над которым я работаю, не будет пытаться ни отобразить файл, ни внедрить его. Я только ищу каталог его времени работы.

1 Ответ

4 голосов
/ 19 мая 2011

Файлы Flash не работают так, как вы думаете, поэтому вы не сможете получить их «время выполнения», читая SWF.

Вы можете прочитать SWF, чтобы получитьколичество кадров в основной временной шкале, но большинство приложений и фильмов Flash будут иметь только 2 кадра в основной временной шкале.Один из этих кадров затем будет вставлять MovieClip, который сам может иметь любое количество кадров, или вставлять другой MovieClip, который также имеет переменное количество кадров.Да, у дочернего MovieClip может быть больше кадров, чем у родительского, и Flash соответствующим образом воспроизводит их.

Помимо небольшого усложнения встроенного MovieClips, у вас также есть ActionScript, который может заставить Flash перепрыгивать или воспроизводить кадры, что делаетКоличество кадров в исходном SWF полностью не зависит от количества кадров, которые фактически воспроизводятся.На самом деле большинство приложений Flash в действительности имеют только два кадра в SWF, но при воспроизведении их будет тысячи или миллионы в течение времени выполнения - это просто один и тот же кадр, воспроизводимый снова и снова с помощью ActionScript, генерирующего контент.

Единственный способ надежного получения количества кадров времени выполнения - создать приложение Flash, которое загружает другой SWF-файл, воспроизводит его и считает кадры.Если загруженный SWF-файл является интерактивным, число может варьироваться от одного прогона к другому.Тем не менее, это процесс, который можно автоматизировать, но вам нужно запустить Flash Player либо в контейнере ActiveX, с которым вы можете общаться, чтобы получить результаты, либо иметь службу, прослушивающую опубликованные данные.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...