视频多路复用器 (Image Analyst)

获得 Image Analyst 许可后可用。

摘要

创建单一全动态视频 (FMV) 兼容的视频文件,从而将存档视频流文件和按照时间戳同步的单独关联元数据文件相结合。 将包含视频和元数据文件的两个文件相结合的过程称为多路复用。

使用情况

  • 此工具适用于存档的视频文件,不适用于实时视频流。

  • 要进行多路复用的视频文件的格式必须是受支持的视频格式。 单独的元数据文件是逗号分隔值 (CSV)、JSON 或 GPS 交换格式 (GPX) 文件,包含适用的字段标题和关联值。

  • 下表列出了支持作为工具输入的视频格式:

    描述扩展名

    MOV 文件

    .mov

    MPEG-2 传输流

    .ts

    MPEG-2 程序流

    .ps

    MPEG 文件

    .mpg

    MPEG-2 文件

    .mpg2

    MPEG-2 文件

    .mp2

    MPEG 文件

    .mpeg

    VLC (mpeg2)

    .mpeg2

    MPEG-4 影片

    .mp4

    MPEG-4 文件

    .mpg4

    MPEG-Dash

    .mpd

    H264 视频文件¹

    .h264

    H265 视频文件¹

    .h265

    VLC 媒体文件 (mpeg4)

    .mpeg4

    VLC 媒体文件 (vob)

    .vob

    HLS(自适应比特率 (ABR))

    .m3u8

    ¹ 需要多路复用

  • 该工具的视频文件输出格式仅为 .ts

  • 与视频流文件相关联的元数据用于计算视频传感器的飞行路径、视频图像帧中心以及地图上视频帧轮廓线的四个角。

  • FMV 支持动态视频影像标准委员会 (MISB) 规范。 完整 MISB 规范定义的参数远远多于 FMV 所需参数。 所提供的 MISB 参数将被编码到最终视频中,其中包括所有参数或其子集。

  • 要计算视频影像轮廓线的相对拐角点并将其作为帧轮廓显示在地图上,您需要下面列出的 12 个基本元数据字段,并在参数描述中进一步予以详细说明。 如果元数据完整且准确,则该工具将计算视频帧拐角,并且视频帧轮廓的大小、形状和位置随后可以显示在地图上。

    • 精确时间戳
    • 传感器纬度
    • 传感器经度
    • 传感器椭球体高度或传感器真实高度
    • 平台航向角
    • 平台仰俯角
    • 平台滚动角
    • 传感器相对滚动角
    • 传感器相对高程角
    • 传感器相对方位角
    • 传感器水平视域
    • 传感器垂直视域

    此为计算视频和地图之间的转换、在地图上显示视频轮廓线以及启用其他功能(如视频和地图的数字化和标记)所需的最小元数据。

  • 可以在 C:\Program Files\ArcGIS\Pro\Resources\FullMotionVideo 中的 FMV_Multiplexer_Field_Mapping_Template.csv 元数据模板文件中输入元数据字段值。

    • FMV_Multiplexer_Field_Mapping_Template.csv 文件包含所有 MISB 元数据字段。
    • 创建兼容 FMV 的视频文件时只需要提供上面定义的 12 个参数。 您无需提供 MISB 规范中定义的所有参数即可创建兼容 FMV 的视频文件。 如果提供了其他的 MISB 参数,则这些参数将被编码到兼容 FMV 的视频文件中。

  • 所生成的多路复用视频文件的性能取决于元数据文件中所含数据的类型和质量,以及视频数据和元数据文件的同步精确度。

    • 如果 FMV_Multiplexer_Field_Mapping_Template.csv 文件仅包含 UNIX Time StampSensor LatitudeSensor Longitude 字段,则传感器的位置将显示在地图上,但不会显示视频帧的轨迹。 系统将不支持某些功能,例如数字化要素和测量视频内的距离。
    • 如果链接视频和元数据的时间戳未能精确同步,则地图上的视频轮廓线和传感器位置将偏离视频播放器中的视图。 在这种情况下,可以使用 C:\Program Files\ArcGIS\Pro\Resources\FullMotionVideo 中的 FMV_Multiplexer_TimeShift_Template.csv 模板来调整视频和元数据的时间。
  • FMV_Multiplexer_Field_Mapping_Template.csv 文件中的一组参数包括投影到地面的视频图像帧的 4 个拐角的地图坐标。 如果提供了四个角的地图坐标,则系统会将其用于创建兼容 FMV 的视频。 如果未提供四个角的地图坐标,则请在数字高程模型参数中提供 DEM 数据的源,且该工具将根据上面列出的所需参数来计算视频轮廓线。

  • 视频轮廓线和帧中心的精度取决于所提供的 DEM 数据源的精度。 如果您没有 DEM 数据的访问权限,则可以提供相对于海平面的平均高程和单位,例如 15 英尺或 10 米。 例如,对于潜水器,可输入 -15 英尺或 -10 米。 使用平均高程或海洋深度的精度要低于提供 DEM 或深海探测数据的情况。 如果条件允许,建议您提供 DEM 图层或图像服务。

  • 基于动态影像中的对象追踪方法,FMV 支持视频移动目标指示器 (VMTI) 数据。 如果 VMTI 数据记录在与关联的视频文件不同的文件中,则可以使用视频多路复用器工具将其编码到视频文件中。 FMV 支持 MISB 视频移动目标指示器和追踪元数据标准。

    通过使用包含以下字段数据的 .csv.json.gpx 元数据文件,为相应的视频帧提供所需 VMTI 信息,即可将 VMTI 数据编码到您的视频中:

    • LDSVer,TimeStamp,FrameCenterLongitude,FrameCenterLatitude,SensorLongitude,SensorLatitude,vmtilocaldataset
    • 5,1546300800231000,-76.1309338,36.91118708,-76.1309338,36.91118708,1 0.9938099 1611919 1815608 1711844;1 0.39056745 1438997 1556213 1496645

    最后一列 (vmtilocaldataset) 包含检测到的对象边界框,其中每个以空格分隔的值将由以下 3 个值定义:Object_ID Confidence_Level Top_Left_Pixel Bottom_Right_Pixel Center_Pixel。

    可以使用分号 (;) 分隔符为给定时间戳指定多个对象检测,如上例中所示。

    可以在 FMV_Multiplexer_Field_Mapping_Template.csv 文件中使用 MISB Tag 74。

参数

标注说明数据类型
输入视频文件

将转换为兼容 FMV 的视频文件的输入视频文件。

支持以下文件类型:.avi.csv.gpx.h264.h265.json.mp2.mp4.m2ts.mpeg.mpeg2.mpeg4.mpg.mpg2.mpg4.ps.ts.vob

File
元数据文件

.csv.json.gpx 文件,其中包含有关特定时间的视频帧的元数据。

元数据文件中的每列表示一个元数据字段,其中一列必须为时间参考。 时间参考指 UNIX 时间戳(自 1970 年起经过的秒数)乘以一百万,结果以整数形式存储。 以这种方式存储时间是为了可以整数参考任意时刻(精确到百万分之一秒)。 因此,500,000 的两个条目之间的时间差表示经过时间中的二分之一秒。

第一行中将包含元数据列的字段名称。 这些字段名称将在 C:\Program Files\ArcGIS\Pro\Resources\FullMotionVideo 中的 FMV_Multiplexer_Field_Mapping_Template.csv 文件中列出,或者也可以使用模板将自定义字段名称与其对应的 FMV 字段名称相匹配。 每个后续行中均包含特定时间的元数据值,我们称之为时间戳。

元数据字段名称可以按任何顺序进行排列,并且应完全按照 FMV_Multiplexer_Field_Mapping_Template.csv 模板中列出的名称命名,以便将元数据字段名称映射到正确的 FMV 元数据字段名称。

File
输出视频文件

输出视频文件的名称,包括文件扩展名。

仅支持 .ts 输出视频文件。

File
元数据映射文件
(可选)

.csv 文件包含 5 列和 87 行,并且基于从 C:\Program Files\ArcGIS\Pro\Resources\FullMotionVideo 获取的 FMV_Multiplexer_Field_Mapping_Template.csv 模板文件。

.csv 文件可将元数据字段名称交叉引用到 FMV 字段名称。 每行将代表一个标准元数据参数,例如传感器纬度。 前两列包含表单中提供的标签和 MISB 参数的信息。 第三列中包含显示在输入元数据文件参数中的字段名称。 填充第三列之后,该工具即可将元数据字段名称与正确的 FMV 元数据标签进行匹配。

File
时移文件
(可选)

包含已定义时移间隔的文件。

在理想情况下,视频影像和元数据将在时间上同步。 在此情况下,FMV 中的图像轮廓线围绕在要素周围,可在视频图像中看到这些要素。 有时视频的时间与元数据中的时间会出现不匹配。 这会导致地面要素被影像轮廓线包围的时刻与该地面要素在视频影像中可见的时刻之间出现明显的时间延迟。 如果该时移是可观测且一致的,则多路复用器可以调整元数据的时间,使其与视频相匹配。

如果视频的时间与元数据不匹配,则请指定 FMV_Multiplexer_TimeShift_Template.csv 模板(位于 C:\Program Files\ArcGIS\Pro\Resources\FullMotionVideo 中)中的时移。 时移观测文件是一个 .csv 文件,其中包含两个列(elapsed timetime shift)以及一个或多个数据行。 列名称的行是可选的。

例如,如果视频影像在整段时间内有 5 秒滞后,则时移观测文件将包含一行:0:00, -5。 整个视频将平移 5 秒。

如果视频的 0:18 标记处存在 5 秒滞后,视频的 2:21 标记处存在 9 秒滞后,则时移观测文件将包含以下两行:

0:18, -5
2:21, -9

在这种情况下,该视频在视频开始时和视频结束时的移动方式将有所不同。

您可以在时移观测点文件中定义任意数量的时移间隔。

File
数字高程模型
(可选)

计算视频帧角坐标所需的高程源。 该源可以是图层、图像服务、平均地面高程或海洋深度。 平均高程值必须包含测量单位,如米、英尺或其他长度测量单位。

视频轮廓线和帧中心的精度取决于所提供的 DEM 数据源的精度。 建议您提供 DEM 图层或图像服务。 如果您没有 DEM 数据的访问权限,则可以提供相对于海平面的平均高程和单位,例如 15 英尺或 10 米。 例如,对于潜水器,可输入 -15 英尺或 -10 米。 使用平均高程或海洋深度的精度要低于提供 DEM 或深海探测数据的情况。

要计算帧角坐标,平均高程值必须始终小于元数据中记录的传感器高度或深度。 例如,如果视频是在 10 米或以上的传感器高度下拍摄的,则有效平均高度可为 9 米或更低。 如果视频是在深度为 -10 米或更深的水下拍摄的,则有效平均高程(相对于海平面)可能为 -11 米或更深。 如果传感器高度值小于平均高程值,则系统不会为该记录计算四个角坐标。 如果您不知道工程区域的平均高程,请使用 DEM。

Raster Layer; Image Service; Linear Unit
输入坐标系
(可选)

将用于元数据文件参数值的坐标系。

Coordinate System

VideoMultiplexer(in_video_file, metadata_file, out_video_file, {metadata_mapping_file}, {timeshift_file}, {elevation_layer}, {input_coordinate_system})
名称说明数据类型
in_video_file

将转换为兼容 FMV 的视频文件的输入视频文件。

支持以下文件类型:.avi.csv.gpx.h264.h265.json.mp2.mp4.m2ts.mpeg.mpeg2.mpeg4.mpg.mpg2.mpg4.ps.ts.vob

File
metadata_file

.csv.json.gpx 文件,其中包含有关特定时间的视频帧的元数据。

元数据文件中的每列表示一个元数据字段,其中一列必须为时间参考。 时间参考指 UNIX 时间戳(自 1970 年起经过的秒数)乘以一百万,结果以整数形式存储。 以这种方式存储时间是为了可以整数参考任意时刻(精确到百万分之一秒)。 因此,500,000 的两个条目之间的时间差表示经过时间中的二分之一秒。

第一行中将包含元数据列的字段名称。 如果需要,可使用 C:\Program Files\ArcGIS\Pro\Resources\FullMotionVideo 中的 FMV_Multiplexer_Field_Mapping_Template.csv 文件将这些字段名称与其对应的字段名称相匹配。 每个后续行中均包含时间字段中所示时间的元数据值。

File
out_video_file

输出视频文件的名称,包括文件扩展名。

仅支持 .ts 输出视频文件。

File
metadata_mapping_file
(可选)

.csv 文件包含 5 列和 87 行,并且基于从 C:\Program Files\ArcGIS\Pro\Resources\FullMotionVideo 获取的 FMV_Multiplexer_Field_Mapping_Template.csv 模板文件。

每行将代表一个标准的 MISB 元数据标签,例如传感器纬度。 前两列中包含了 MISB 索引和 MISB 标签名称。 第三列包含 in_metadata_file 参数中显示的字段名称(如果存在)。 填充第三列之后,该工具即可将元数据字段名称与正确的 FMV 元数据标签进行匹配。 第四列和第五列将分别表示单位以及与标签相关联的注释。

File
timeshift_file
(可选)

包含已定义时移间隔的文件。

在理想情况下,视频影像和元数据将在时间上同步。 在此情况下,FMV 中的图像轮廓线围绕在要素周围,可在视频图像中看到这些要素。 有时视频的时间与元数据中的时间会出现不匹配。 这会导致地面要素被影像轮廓线包围的时刻与该地面要素在视频影像中可见的时刻之间出现明显的时间延迟。 如果该时移是可观测且一致的,则多路复用器可以调整元数据的时间,使其与视频相匹配。

如果视频的时间与元数据不匹配,则请指定 FMV_Multiplexer_TimeShift_Template.csv 模板(位于 C:\Program Files\ArcGIS\Pro\Resources\FullMotionVideo 中)中的时移。 时移观测文件是一个 .csv 文件,其中包含两个列(elapsed timetime shift)以及一个或多个数据行。 列名称的行是可选的。

例如,如果视频影像在整段时间内有 5 秒滞后,则时移观测文件将包含一行:0:00, -5。 整个视频将平移 5 秒。

如果视频的 0:18 标记处存在 5 秒滞后,视频的 2:21 标记处存在 9 秒滞后,则时移观测文件将包含以下两行:

0:18, -5
2:21, -9

在这种情况下,该视频在视频开始时和视频结束时的移动方式将有所不同。

您可以在时移观测点文件中定义任意数量的时移间隔。

File
elevation_layer
(可选)

计算视频帧角坐标所需的高程源。 该源可以是图层、图像服务、平均地面高程或海洋深度。 平均高程值必须包含测量单位,如米、英尺或其他长度测量单位。

视频轮廓线和帧中心的精度取决于所提供的 DEM 数据源的精度。 建议您提供 DEM 图层或图像服务。 如果您没有 DEM 数据的访问权限,则可以提供相对于海平面的平均高程和单位,例如 15 英尺或 10 米。 例如,对于潜水器,可输入 -15 英尺或 -10 米。 使用平均高程或海洋深度的精度要低于提供 DEM 或深海探测数据的情况。

要计算帧角坐标,平均高程值必须始终小于元数据中记录的传感器高度或深度。 例如,如果视频是在 10 米或以上的传感器高度下拍摄的,则有效平均高度可为 9 米或更低。 如果视频是在深度为 -10 米或更深的水下拍摄的,则有效平均高程(相对于海平面)可能为 -11 米或更深。 如果传感器高度值小于平均高程值,则系统不会为该记录计算四个角坐标。 如果您不知道工程区域的平均高程,请使用 DEM。

Raster Layer; Image Service; Linear Unit
input_coordinate_system
(可选)

将用于 metadata_file 参数值的坐标系。

Coordinate System

代码示例

VideoMultiplexer 示例 1(Python 窗口)

此示例可创建一个视频文件,该文件组合了存档视频和相关元数据。

arcpy.ia.VideoMultiplexer(r"C:\input_video.mpeg", r"C:\video_metadata.csv", r"C:\output_video.ts",
                              r"C:\Video_Multiplexer_MISB_Field_Mapping_Template.csv",
                              r"C:\Video_Multiplexer_TimeShift_Template.csv", "c:\\test\\dem.tif”)
VideoMultiplexer 示例 2(独立脚本)

此示例可创建一个视频文件,该文件组合了存档视频和相关元数据。

import arcpy
from arcpy.ia import *

arcpy.CheckOutExtension("ImageAnalyst")

in_video = "c:\\test\\drone_vid.mpeg"
in_metadata = "c:\\test\\videometadata.csv"
out_video = "c:\\test\\mutiplexer_output.ts"
MISB_mapping = "c:\\test\\Field_Mapping_Template.csv"
time_shift_file = "c:\\test\\timeshift.csv"
in_elevation_layer = "c:\\test\\dem.tif"

arcpy.ia.VideoMultiplexer(in_video, in_metadata, out_video, MISB_mapping, time_shift_file, in_elevation_layer)

环境

此工具不使用任何地理处理环境。

许可信息

  • Basic: 需要 Image Analyst
  • Standard: 需要 Image Analyst
  • Advanced: 需要 Image Analyst

相关主题