关于 AGV 文件视频源标记
视频图层需要具有一个与源数据(可以是文件、文件夹或服务)的连接,这些数据源提供可叠加在 globe 表面的单独的视频帧。要显示视频图层,必须有视频源并且 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 组内指定了多个视频文件,所有视频必须具有相同的图像分辨率。
- 在 Windows Media Player 中可将预览源文件作为简单测试,来确定视频是否能在 ArcGlobe 中显示。如果视频无法在其中播放,则它也无法在 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 之间。
- 这些值还可用于播放较大帧文件夹的子集。
- <宽度> 和 <高度> 标记中的图像大小值
- 这两个值以像素为单位,表示视频的分辨率。
- 只有具有指定分辨率的图像才能在视频中显示为帧。
- 这些标记会在视频图层添加到 ArcGlobe 时或手动重新读取图层时(右键单击内容列表中的图层并单击“刷新”)被读取。
- 注意:较高分辨率图像的帧渲染成本较高,可能会导致降低最大帧速率。
- <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>,它定义将响应 ArcGlobe 的视频帧图像请求和地理配准信息请求的 DLL 所在的完整路径。
您还需要定义以下内容:
- <FrameRequestRate> 标记中的实际刷新率(以毫秒为单位)
- 此值以毫秒为单位,表示 ArcGlobe 从自定义 DLL 请求下个视频帧前应该等待的时间长度。
示例:值 6000 表示 ArcGlobe 将每隔 6 秒请求一个帧,因此视频会以每分钟 10 帧的速度播放。
- 注意:该速度是视频的“播放速度”,与每个帧表示的实际时间单位不同
- 此值以毫秒为单位,表示 ArcGlobe 从自定义 DLL 请求下个视频帧前应该等待的时间长度。
- 自定义 DLL 所需数量的可选 <Parameter> 元素
- 例如:您的自定义 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>