全动态视频工具用户操作手册
当前版本: 1.0.0
1. 系统概述
FMV Player 是一款专为无人机全动态视频(Full Motion Video)设计的播放与地理标绘系统。该系统结合视频播放与 Cesium 三维地图引擎,实现视频帧与地理坐标的实时同步,支持在视频画面上进行精确的地理标绘和测量操作。
1.1 核心功能
- 视频播放与轨迹同步:播放 MP4 视频并同步显示无人机飞行轨迹
- 地理标绘:在视频画面上绘制点、线、面,自动转换为地理坐标
- 地理测量:面积测量、路径测量、高度测量、坐标查询
- 矢量管理:图层可见性控制、符号化编辑、排序管理
- 三维视锥:实时显示相机视锥范围,可视化拍摄覆盖区域
- 数据导出:支持 GeoJSON 和 KML 格式导出
1.2 支持的无人机型号
| 型号代码 | 无人机名称 | 相机配置 |
|---|---|---|
| M3E | DJI Mavic 3 Enterprise | 广角 + 长焦 |
| M3T | DJI Mavic 3 Thermal | 广角 + 长焦 + 红外 |
| M3D | DJI Mavic 3D | 广角 + 长焦 |
| M3TD | DJI Mavic 3 Thermal Dock | 广角 + 长焦 + 红外 |
| M4E | DJI Matrice 4 Enterprise | 广角 + 变焦 + 长焦 |
| M4T | DJI Matrice 4 Thermal | 广角 + 变焦 + 长焦 + 红外 |
| M4D | DJI Matrice 4D | 广角 + 变焦 + 长焦 |
| M4TD | DJI Matrice 4 Thermal Dock | 广角 + 变焦 + 长焦 + 红外 |
1.3 系统要求
- 操作系统:Windows 10/11、macOS 10.14+
- 浏览器:Chrome 90+、Edge 90+、Firefox 88+(推荐 Chrome)
- 网络:需要访问天地图瓦片服务
- 分辨率:建议 1920×1080 或更高
2. 快速入门
2.1 启动系统
- 打开浏览器访问系统地址(如
http://localhost:3020) - 系统启动后会显示无人机型号选择界面
2.2 选择无人机型号
首次使用必须选择无人机型号,以便系统正确解析飞行数据和相机参数:
- 在型号下拉框中选择您的无人机型号(如 M4TD)
- 点击「确认选择」按钮
- 型号选择后可随时在工具栏中切换
提示:型号选择影响相机 FOV 参数,直接影响标绘精度。请务必选择与实际录制视频时使用的无人机一致的型号。
2.3 加载视频与 SRT 文件
方式一:同时选择视频和 SRT
- 点击「选择视频/SRT」按钮
- 在文件选择对话框中,同时选择 MP4 视频文件和同名 SRT 字幕文件
- 系统会自动匹配同名文件并加载
方式二:先加载视频,后单独加载 SRT
- 点击「选择视频/SRT」按钮,仅选择视频文件
- 视频加载后,点击「单独加载 SRT」按钮
- 选择对应的 SRT 字幕文件
注意:SRT 文件必须由 DJI 无人机录制生成,包含 GPS、高度、云台角度等飞行数据。详见 SRT 文件格式说明。
2.4 开始使用
加载完成后:
- 左侧显示视频播放器,底部显示当前帧的 GPS 坐标、高度、云台角度
- 右侧显示 Cesium 三维地图,可视化飞行轨迹和相机视锥
- 工具栏自动激活,可进行标绘和测量操作
3. 界面布局
3.1 整体布局
系统采用左右分屏布局:
┌─────────────────────────────────────────────────────────────┐
│ 顶部导航栏 │
├──────────────────────┬──────────────────────────────────────┤
│ │ │
│ 视频播放区域 │ 三维地图区域 │
│ (左侧 45%) │ (右侧 55%) │
│ │ │
│ │ ┌─────────────┐ ┌───────────────┐ │
│ │ │ 矢量面板 │ │ 视锥控制 │ │
│ │ └─────────────┘ └───────────────┘ │
│ │ │
├──────────────────────┴──────────────────────────────────────┤
│ 状态栏 │
└─────────────────────────────────────────────────────────────┘
3.2 分隔条拖拽
- 左右区域中间的分隔条(⋮)可拖拽调整比例
- 比例范围:左侧 20%~80%
- 拖拽后视频和地图会自动适应新尺寸
3.3 视频播放区域组件
| 组件 | 位置 | 功能 |
|---|---|---|
| 工具栏 | 视频顶部 | 型号选择、文件加载按钮 |
| 标绘工具栏 | 视频左上角 | 标绘/测量模式切换、海拔输入 |
| 视频画面 | 中央 | 视频播放、Canvas 交互 |
| 测量面板 | 右下角 | 测量结果列表 |
| SRT 信息 | 视频底部 | GPS、高度、云台角度 |
| 控制条 | 视频底部 | 播放/暂停、进度、音量、全屏 |
3.4 三维地图区域组件
| 组件 | 位置 | 功能 |
|---|---|---|
| 矢量面板 | 右上角 | 图层管理、导出 |
| 视锥控制 | 左下角 | 视锥可见性、长度调节 |
| 导航球 | 右下角 | 相机视角控制 |
| 状态栏 | 底部 | 鼠标位置经纬度、高度、比例尺 |
4. 视频播放与轨迹同步
4.1 视频控制
播放控制
- 点击视频画面或控制条播放按钮开始播放
- 播放过程中,轨迹点与视频帧自动同步
- 暂停时停止同步,停留在当前帧位置
进度控制
- 拖拽进度条跳转到指定时间点
- 点击地图上的轨迹点,视频自动跳转到对应时间
全屏模式
- 点击控制条全屏按钮进入全屏
- 全屏模式下标绘功能正常可用
- 按 ESC 或点击全屏按钮退出
4.2 轨迹可视化
轨迹显示
- 载入 SRT 后,右侧地图自动绘制完整飞行轨迹(蓝色线)
- 轨迹上的白色圆点表示无人机当前位置
- 轨迹点按时间顺序分布(约每 33ms 一个点)
轨迹交互
- 鼠标悬停轨迹点显示信息气泡(时间、坐标、高度)
- 点击轨迹点跳转到对应视频帧
4.3 SRT 信息显示
视频底部实时显示当前帧数据:
GPS: 120.963933, 32.568629 高度: 6.4m 云台: Y:41.1 P:-45.0
- GPS:经度、纬度(度)
- 高度:相对起飞点高度(米)
- 云台:偏航角 Y、俯仰角 P(度)
5. 地理标绘功能
地理标绘允许在视频画面上绘制图形,系统自动将像素坐标转换为地理坐标(经纬度),并在地图上实时显示。
5.1 标绘前提条件
- 已选择正确的无人机型号
- 已加载视频和 SRT 文件
- 已设置地面海拔参数
5.2 设置地面海拔
地面海拔是标绘的关键参数,用于计算像素点对应的地面位置:
- 在标绘工具栏的「地面海拔(m)」输入框中输入数值
- 默认值为 0,可手动调整范围:-500 ~ 9000 米
- 推荐做法:查看 SRT 信息中的高度值,估算起飞点地面海拔
- 公式:地面海拔 ≈ 绝对高度 - 相对高度
5.3 标绘模式
| 模式 | 图标 | 说明 | 完成条件 |
|---|---|---|---|
| 标点 | 📍 | 单点标记 | 单击即可完成 |
| 绘线 | ↗️ | 线段绘制 | 至少 2 点,双击完成 |
| 画面 | 📄 | 多边形绘制 | 至少 3 点,双击完成 |
5.4 标绘操作步骤
标点模式
- 点击工具栏「标点」按钮进入标点模式
- 在视频画面上单击目标位置
- 系统自动计算地理坐标并创建点图层
绘线模式
- 点击工具栏「绘线」按钮进入绘线模式
- 在视频画面上依次单击添加顶点
- 预览线实时显示,虚线连接到鼠标位置
- 点击「完成」按钮或双击结束绘制
- 点击「取消」按钮放弃本次绘制
画面模式
- 点击工具栏「画面」按钮进入画面模式
- 在视频画面上依次单击添加顶点(至少 3 点)
- 多边形预览实时显示,带半透明填充
- 点击「完成」按钮或双击闭合多边形
- 点击「取消」按钮放弃本次绘制
5.5 标绘技巧
- 视角选择:尽量选择云台俯仰角较大的帧(俯视视角),标绘精度更高
- 海拔设置:地面海拔越准确,标绘坐标越精确
- 实时验证:标绘后观察右侧地图,确认矢量位置是否正确
- 撤销操作:标绘过程中右键点击可取消当前绘制
6. 地理测量功能
地理测量功能支持面积、路径、高度、坐标四种测量模式,测量结果实时计算并显示。
6.1 测量模式概览
| 模式 | 图标 | 测量内容 | 单位 |
|---|---|---|---|
| 面积测量 | 📱 | 多边形面积 | m²、ha、km² |
| 路径测量 | 🧭 | 线段长度 | m、km |
| 高度测量 | ↕️ | 垂直高度差 | m、km |
| 坐标查询 | 🎯 | 单点经纬度 | 度(7位小数) |
6.2 面积测量
操作步骤
- 点击「面积测量」按钮
- 设置目标区域的地面海拔
- 在视频画面上依次单击绘制多边形顶点(至少 3 点)
- 双击或点击「完成」结束测量
结果显示
- 测量面板显示面积值和单位
- 自动选择合适单位:
- < 10000 m² → 显示 m²
- 10000 ~ 1000000 m² → 显示 ha(公顷)
-
1000000 m² → 显示 km²
6.3 路径测量
操作步骤
- 点击「路径测量」按钮
- 设置路径所在区域的地面海拔
- 在视频画面上依次单击绘制路径顶点(至少 2 点)
- 双击或点击「完成」结束测量
结果显示
- 测量面板显示路径长度和单位
- 自动选择合适单位:
- < 1000 m → 显示 m
- ≥ 1000 m → 显示 km
6.4 高度测量
高度测量使用铅垂线约束算法,测量垂直物体的高度(如建筑物、电线杆、塔等)。
前提条件
- 底部点和顶部点必须在同一铅垂线上(经纬度相同)
- 适合测量有明显垂直边缘的物体
操作步骤
- 点击「高度测量」按钮
- 设置底部海拔:输入测量对象底部的实际海拔(非起飞点海拔)
- 工具栏显示「请点击底部位置」提示
- 在视频画面上单击物体底部位置
- 工具栏显示「请点击顶部位置」提示
- 在视频画面上单击物体顶部位置(同一铅垂线上)
- 系统自动计算高度差并显示结果
高度计算原理
系统使用铅垂线约束公式:
h = droneRelAlt × (tan(α_top) - tan(α_base)) / tan(α_top)
其中:
- droneRelAlt = 无人机绝对海拔 - 用户输入的底部海拔
- α_base/α_top = 底部/顶部光线与垂线的夹角
6.5 坐标查询
操作步骤
- 点击「坐标查询」按钮
- 在视频画面上单击目标位置
- 系统立即显示该点的地理坐标(7位小数精度)
结果显示
坐标: 120.9639330, 32.5686290
6.6 测量结果管理
查看结果
- 测量面板位于视频右下角
- 点击面板标题可展开/折叠
- 每条结果显示:类型图标、数值、时间
定位结果
- 点击测量结果条目,地图自动飞到该位置
清空结果
- 点击「清空全部」按钮删除所有测量记录
7. 矢量图层管理
标绘结果自动创建矢量图层,可通过矢量面板进行管理。
7.1 矢量面板位置
- 位于右侧地图右上角
- 浮动面板,可折叠/展开
- 宽度:280px,高度自适应
7.2 图层列表功能
| 功能 | 操作 | 说明 |
|---|---|---|
| 可见性切换 | 点击复选框 | 开/关图层显示 |
| 拖拽排序 | 拖动 ⋮ 手柄 | 调整图层顺序 |
| 符号编辑 | 点击编辑按钮 | 打开符号化编辑器 |
| 删除图层 | 点击删除按钮 | 确认后删除单个图层 |
| 查看信息 | 自动显示 | 图层名称、要素数量 |
7.3 批量操作
删除所有矢量
- 点击「删除矢量」按钮
- 确认对话框中选择「删除」
- 所有图层清空
导出矢量
- 点击「导出矢量」按钮
- 在导出对话框中选择格式和图层
- 点击「导出」下载文件
7.4 图层类型图标
| 图标 | 类型 |
|---|---|
| 📍 | 点要素图层 |
| ↗️ | 线要素图层 |
| 📄 | 面要素图层 |
8. 三维视锥显示
视锥(Frustum)可视化显示相机的拍摄范围,帮助理解视频画面覆盖的地面区域。
8.1 视锥控制面板
位于地图左下角,包含:
- 视锥显示开关:勾选显示/隐藏视锥
- 长度调节滑块:调整视锥延伸长度(1~5000 米)
8.2 视锥显示效果
- 视锥随视频播放实时更新位置和方向
- 视锥方向由云台偏航角和俯仰角决定
- 视锥形状由相机 FOV 参数决定(与无人机型号关联)
8.3 视锥长度设置
- 默认长度:5 米
- 长度越长,视锥覆盖范围越大
- 建议根据无人机高度调整:高度越高,长度设置越大
9. 符号化编辑
符号化编辑器允许自定义矢量图层的显示样式。
9.1 打开符号编辑器
- 在矢量面板中,鼠标悬停在图层条目上
- 点击编辑图标按钮(📝)
- 符号化编辑对话框打开
9.2 点要素符号设置
| 参数 | 范围 | 说明 |
|---|---|---|
| 颜色 | 颜色选择器 | 点填充颜色 |
| 大小 | 4~24 px | 点直径 |
| 透明度 | 0~100% | 点透明度 |
9.3 线要素符号设置
| 参数 | 范围 | 说明 |
|---|---|---|
| 颜色 | 颜色选择器 | 线条颜色 |
| 线宽 | 1~10 px | 线条宽度 |
| 透明度 | 0~100% | 线条透明度 |
| 线型 | 实线/虚线/点线 | 线条样式 |
9.4 面要素符号设置
| 参数 | 范围 | 说明 |
|---|---|---|
| 填充色 | 颜色选择器 | 多边形填充颜色 |
| 填充透明度 | 0~100% | 填充透明度 |
| 边框色 | 颜色选择器 | 边框线条颜色 |
| 边框宽度 | 1~10 px | 边框宽度 |
| 边框透明度 | 0~100% | 边框透明度 |
9.5 预览与确认
- 编辑器底部提供实时预览画布
- 点击「重置」恢复原始样式
- 点击「确定」应用修改
10. 数据导出
10.1 导出对话框
点击矢量面板「导出矢量」按钮打开导出对话框:
导出格式选择
- GeoJSON:标准地理数据格式,兼容大多数 GIS 软件
- KML:Google Earth 格式,可在 Google Earth 中查看
图层选择
- 默认选中所有可见图层
- 可手动勾选/取消勾选图层
- 显示每个图层的要素数量
文件名设置
- 默认文件名:gis_export
- 自动添加格式后缀(.geojson 或 .kml)
10.2 导出操作
- 选择导出格式(GeoJSON 或 KML)
- 勾选要导出的图层
- 输入文件名
- 点击「导出」按钮
- 文件自动下载到浏览器默认下载目录
10.3 导出数据内容
GeoJSON 示例:
{
"type": "FeatureCollection",
"features": [
{
"type": "Feature",
"geometry": {
"type": "Point",
"coordinates": [120.963933, 32.568629, 0]
},
"properties": {
"mode": "point",
"timestamp": 1715647200000
}
}
]
}
11. 常见问题与注意事项
11.1 SRT 文件格式要求
标准 DJI SRT 格式
SRT 文件必须包含以下字段:
[latitude: 32.568629] [longitude: 120.963933]
[rel_alt: 6.383 abs_alt: 20.604]
[gb_yaw: 41.1 gb_pitch: -45.0 gb_roll: 0.0]
[dzoom_ratio: 1.00]
字段说明
| 字段 | 说明 |
|---|---|
| latitude/longitude | GPS 坐标 |
| rel_alt | 相对起飞点高度 |
| abs_alt | GPS 海拔高度 |
| gb_yaw/gb_pitch/gb_roll | 云台三轴角度 |
| dzoom_ratio | 变焦比值(影响 FOV) |
注意事项
- 确保使用 DJI 无人机原生生成的 SRT 文件
- 勿修改或编辑 SRT 文件内容
- SRT 文件名应与视频文件名匹配
11.2 地面海拔设置建议
场景一:地面标绘
- 设置起飞点附近地面海拔
- 公式:地面海拔 ≈ abs_alt - rel_alt(从第一帧数据估算)
场景二:建筑物标绘
- 设置建筑物底部的实际海拔
- 可能与起飞点海拔不同
场景三:高度测量
- 必须设置测量对象底部的实际海拔
- 这是高度计算的关键参数
11.3 标绘精度影响因素
| 因素 | 影响 | 建议 |
|---|---|---|
| 云台俯仰角 | 俯视视角精度更高 | 选择俯仰角较大的帧 |
| 地面海拔 | 直接影响坐标计算 | 尽量设置准确值 |
| 变焦值 | 改变 FOV,影响投影 | 选择变焦值稳定的帧 |
| 地形起伏 | 平坦地形精度更高 | 避免起伏大的区域 |
| 无人机高度 | 高度适中精度最佳 | 避免过高或过低 |
11.4 高度测量注意事项
铅垂线约束要求
- 底部点和顶部点必须在同一垂直线上
- 适合测量建筑物边角、电线杆、塔等垂直物体
底部海拔设置
- 输入测量对象底部的真实海拔
- 不是起飞点海拔,不是地面海拔
操作建议
- 选择云台接近垂直俯视的帧
- 底部点和顶部点尽量靠近画面中心
- 避免云台倾斜角度过大的帧
11.5 常见错误处理
| 错误提示 | 原因 | 解决方案 |
|---|---|---|
| "请先加载视频和SRT文件" | 未加载视频或轨迹 | 加载 MP4 和 SRT 文件 |
| "请点击视频画面内区域" | 点击在 letterbox 区域 | 点击视频画面内部 |
| "该点无法计算地理坐标" | 像素点超出投影范围 | 选择画面中心的点 |
| "无人机高度低于底部海拔" | 海拔设置错误 | 调整底部海拔值 |
| "光线角度异常" | 云台角度超出计算范围 | 选择俯仰角合适的帧 |
11.6 最佳实践建议
视频选择
- 选择云台稳定、俯仰角适中的视频片段
- 优先选择变焦值固定(1.00)的视频
标绘流程
- 先观察 SRT 信息,确定合适的帧
- 设置准确的地面海拔
- 在画面中心区域进行标绘
- 完成后检查地图上的矢量位置
- 如位置偏差较大,调整海拔重新标绘
数据管理
- 及时导出标绘结果
- 使用合适的图层命名
- 定期清理不需要的图层
附录:SRT 文件格式详解
SRT 字幕块结构
1
00:00:00,000 --> 00:00:00,033
<font size="28">FrameCnt: 1, DiffTime: 33ms
2026-03-10 15:42:29.234
[iso: 100] [shutter: 1/2127.11] [fnum: 2.8] [ev: 0]
[focal_len: 24.00] [dzoom_ratio: 1.00]
[latitude: 32.568629] [longitude: 120.963933]
[rel_alt: 6.383 abs_alt: 20.604]
[gb_yaw: 41.1 gb_pitch: 0.0 gb_roll: 0.0] </font>
数据频率
- 帧率:30 fps(每帧约 33ms)
- 数据点数:视频时长 × 30
- 例如:10 分钟视频 = 18000 个数据点
解析后数据结构
{
timestamp: 0.033, // 时间戳(秒)
frameCnt: 1, // 帧序号
dateTime: '2026-03-10 15:42:29.234',
position: [120.963933, 32.568629, 6.383], // [经度, 纬度, 相对高度]
absAlt: 20.604, // GPS 海拔高度
gimbal: {
yaw: 41.1, // 云台偏航角
pitch: 0.0, // 云台俯仰角
roll: 0.0 // 云台翻滚角
},
dzoomRatio: 1.0, // 变焦比值
camera: {
iso: 100,
shutter: '1/2127.11',
fnum: 2.8,
focalLen: 24.00
}
}
文档持续更新中,如有问题请联系 技术支持:13305108038