О тегах источника видео в файле AGV
Слой видео должен иметь подключение к источнику данных, файлу, папке или сервису, которые обеспечивают кадры видео, которыми драпируется поверхность глобуса. Для отображения слоя видео необходим источник видео, к которому приложение ArcGlobe имеет доступ.
Информация об источнике видео должна содержать данные о типе видео и местоположении данных.
Имеются три основных типа источников видео, которые описываются следующими группами тегов:
- <VideoFilesSource>: Видео, которое хранится в одном логическом файле
- <ImageFolderSource>: Видео, состоящее из набора последовательных изображений, которые находятся в одной папке
- <CustomSource>: Тип видео, доступ к которому обеспечивается пользовательским программным кодом
Путь к источнику видео должен иметь один из следующих форматов:
- Имя локального файла или путь, например C:\Project1\Camera1.mpg
- Имя файла или путь в формате UNC, например \\myServer\Videos\Camera8_Frames
- Относительное (относительно положения файла AGV) имя файла или путь, например .\CustomVideoLayer.dll
- При задании относительного пути, используются стандартные правила форматирования. Например, префикс .\ обозначает текущую папку, содержащую файл AGV, а префикс ..\ – родительскую папку.
Каждый из трех основных типов источников видео более подробно описывается ниже.
Файлы видео
Эта опция относится к видео, которое хранится на диске в файле поддерживаемого формата, такого как AVI или MPG. В файле AGV этот источник видео идентифицируется информацией о подключении, содержащейся в тегах XML <VideoSource FrameSourceType="File"> и </VideoSource>, как показано в примере текста XML ниже.
Первичный тег источника данных для видео такого типа – это элемент <VideoFilePath>, в котором задается расположение файла видео. Используя несколько тегов XML, можно подключить несколько файлов видео в одном слое видео.
Необходимо также определить следующее:
- Реальная частота кадров (в миллисекундах), в теге <FrameRequestRate>
- Это значение в миллисекундах представляет собой время ожидания ArcGlobe перед запросом следующего кадра видео. Например, значение 50 означает, что запрос следующего кадра в ArcGlobe делается каждые 0.05 секунды, т.е. скорость воспроизведения видео составляет 20 кадров в секунду.
- Обратите внимание, что это "скорость воспроизведения" видео, которая может отличаться от реального хода времени в каждом кадре.
Файлы видео могут храниться в различных форматах и использовать разнообразные кодеки. Чтобы файл видео воспроизводился на локальном компьютере – в ArcGlobe или в любом видеоплейере, таком как Windows Media Player – на нем должен быть установлен соответствующий кодек. В зависимости от компьютера, поддерживаются следующие форматы файлов видео:
- MPG (.mpg, .mpeg, .mp4)
- AVI (.avi)
- WMV (.wmv)
Советы
Ниже приведены несколько рекомендаций по созданию файлов источников видео:
- Если вы выбираете несколько файлов видео в группе VideoFilesSource, все они должны иметь одинаковое разрешение.
- Проверить, будет ли отображаться видео в ArcGlobe, можно с помощью Windows Media Player. Если видео не отображается, оно не будет отображаться и в слое видео в ArcGlobe.
Пример:
Ниже приведен пример слоя видео, созданного из двух файлов AVI с частотой 20 кадров в секунду:
<VideoSource FrameSourceType="File">
<VideoFilesSource>
<VideoFilePath>.\Security_BldF_10.00AM.avi</VideoFilePath>
<VideoFilePath>.\Security_BldF_10.05AM.avi</VideoFilePath>
</VideoFilesSource>
<FrameRequestRate>50</FrameRequestRate>
</VideoSource>
Папки с изображениями
Эта опция предназначена для форматов видео, которые не имеют встроенной поддержки, таких как формат QuickTime (.mov). Такое видео становится доступным после конвертации в последовательность изображений. Эта опция также используется для поддержки папок, в которых хранятся отдельные кадры, которые можно получить при работе с анимацией в ArcGIS. В файле AGV этот источник видео идентифицируется информацией о подключении, содержащейся в тегах XML <ImageSource FrameSourceType="Folder"> и </ImageSource>, как показано в примере текста XML ниже.
Первичный тег источника данных для видео такого типа – это элемент <ImageFolderPath>, в котором задается путь к папке, содержащей файлы изображений.
Необходимо также определить следующее:
- Формат имени файла в теге <NameFormat>
- Это строчное значение задает шаблон для имен кадров изображения с тем, чтобы файлы изображений считывались в правильном порядке.
- Цифровая часть имени файла представлена знаком "решетка", перед и после которого находятся префикс и суффикс имени файла.
Например, если папка содержит изображения с названиями Frame1.jpg, Frame2.jpg и т.д., значение <NameFormat> должно выглядеть так Frame#.jpg.
- Первый и последний кадры в тегах <FirstIndex> и <LastIndex>
- Эти два значения представлены целыми числами, и задают диапазон считываемых файлов.
- Пример: Если в папке 300 последовательных кадров изображения, и первый файл называется Frame1.jpg, следует использовать значения 1 и 300, соответственно.
- Эти значения можно также использовать для воспроизведения поднабора кадров из большой папки.
- Значения размера изображения в тегах <Width> и <Height>
- Эти два значения в пикселах представляют собой разрешение видео.
- Кадрами в видео могут быть только изображения с заданным разрешением.
- Теги считываются, когда слой видео добавляется в ArcGlobe или когда слой повторно считывается в ручном режиме (щелчком правой кнопки мыши и выбором Обновить (Refresh) в контекстном меню слоя).
- Следует помнить, что более высокое разрешение кадров изображения требует больше ресурсов для воспроизведения и может обусловить снижение максимальной частоты кадров.
- Частота кадров в теге <FrameRequestRate>
- Это значение в миллисекундах представляет собой время ожидания ArcGlobe перед запросом следующего кадра видео.
Например, значение 100 означает, что запрос следующего кадра в ArcGlobe делается каждые 0.1 секунды, т.е. скорость воспроизведения видео составляет 10 кадров в секунду.
- Обратите внимание, что это "скорость воспроизведения" видео, которая может отличаться от реального хода времени в каждом кадре.
- Это значение в миллисекундах представляет собой время ожидания ArcGlobe перед запросом следующего кадра видео.
Пример:
Ниже приведен пример слоя источника видео, созданного из папки кадров, воспроизводимых с частотой 10 кадров в секунду.
<ImageSource FrameSourceType="Folder">
<ImageFolderPath>\\server1\VideoOverlays\Analysis1</ImageFolderPath>
<Frames>
<NameFormat>Frame#.jpg</NameFormat>
<FirstIndex>1</FirstIndex>
<Width>600</Width>
<Height>480</Height>
</Frames>
<FrameRequestRate>100</FrameRequestRate>
</ImageSource>
Собственный источник
Эта опция предназначена для пользователей, которые могут написать код для собственного слоя видео, например, для трансляции из автомобиля. ArcGlobe будет получить кадры видео из пользовательской DLL с заданными интервалами, вместо доступа к определенному файлу или папке на диске. В файле AGV этот источник видео идентифицируется информацией о подключении, содержащейся в тегах XML <VideoSource FrameSourceType="DLLServer"> и <VideoSource>, как показано в примере текста XML ниже.
Первичный тег источника данных для видео такого типа – это элемент <Location>, в котором задается путь к DLL, которая отвечает на запросы ArcGlobe и предоставляет кадры видео и информацию о пространственной привязке.
Необходимо также определить следующее:
- Реальная частота кадров (в миллисекундах), в теге <FrameRequestRate>
- Это значение в миллисекундах представляет собой время ожидания ArcGlobe перед запросом следующего кадра видео из пользовательской DLL.
Например, значение 6000 означает, что запрос следующего кадра в ArcGlobe делается каждые 6 секунд, т.е. скорость воспроизведения составляет 10 кадров в минуту.
- Обратите внимание, что это "скорость воспроизведения" видео, которая может отличаться от реального хода времени в каждом кадре
- Это значение в миллисекундах представляет собой время ожидания ArcGlobe перед запросом следующего кадра видео из пользовательской DLL.
- Дополнительные элементы <Parameter>, столько, сколько необходимо для пользовательской DLL
- Пример: Ваша DLL может обрабатывать запросы к нескольким источникам видео, если для каждого AGV файла используется элемент <Parameter>, определяющий, к какому каналу видео подключен тот или иной слой.
Пример:
Ниже приведен пример слоя источника видео, созданного на основе сервера пользовательской DLL со скоростью воспроизведения 10 кадров в минуту:
<VideoSource FrameSourceType="DLLServer">
<Location>C:\Program Files\App1\bin\MyVideoFrameProvider.dll</Location>
<FrameRequestRate>6000</FrameRequestRate>
<Parameter>VideoSource 1</ Parameter >
</VideoSource>