10 个版本 (4 个重大更改)
0.5.2 | 2024 年 8 月 1 日 |
---|---|
0.5.1 | 2024 年 7 月 15 日 |
0.4.0 | 2024 年 6 月 18 日 |
0.3.2 | 2024 年 3 月 27 日 |
0.1.1 | 2024 年 1 月 26 日 |
#160 在 机器人
每月 344 次下载
180KB
4K SLoC
大疆日志解析器
一个用于解析 DJI txt 日志的库和 CLI 工具,支持所有日志版本和加密。
特性
- 解析记录并从 DJI 日志中提取嵌入式图像
- 将不同日志版本的记录标准化,以保持一致的框架格式
- 将框架导出为 CSV 格式,以便于分析
- 以 GeoJSON 和 KML 格式生成飞行轨迹
- 支持所有日志版本,包括加密日志(版本 13+)
版本 13 及以后的加密
从版本 13 开始,日志记录是 AES 加密的,需要特定的密钥链进行解密。此密钥链必须通过 DJI 的 API 获取。访问 DJI API 需要apiKey。
从 DJI API 获取密钥链后,可以将其与原始日志一起存储,以便进行进一步的离线使用。
获取 apiKey
要获取 apiKey,请按照以下步骤操作
- 访问 DJI 开发者技术 并登录。
- 点击
创建 应用
,选择作为应用类型开放 API
,并提供必要的详细信息,如应用名称
、类别
和描述
。 - 创建应用后,通过发送到您电子邮件的链接激活它。
- 在您的开发者用户页面上,找到您的应用详细信息以获取 apiKey(标记为 SDK 密钥)。
Cli 使用方法
安装
基本用法
dji-log --api-key __DJI_API_KEY__ DJIFlightRecord.txt > frames.json
或带有输出参数
dji-log --api-key __DJI_API_KEY__ --output frames.json DJIFlightRecord.txt
其他选项
--raw
:导出原始记录而不是标准化帧--images image%d.jpeg
:提取嵌入的图像--thumbnails thumbnail%d.jpeg
:提取缩略图--csv
:生成帧的CSV文件--kml track.kml
:生成飞行轨迹的KML文件--geojson track.json
:生成飞行轨迹的GeoJSON文件
在图像或缩略图选项中使用 %d
来指定一个序列。
要获取完整的选项列表,请运行
dji-log --help
库使用
初始化
从字节切片初始化一个 DJILog
实例以访问版本信息和元数据
let parser = DJILog::from_bytes(bytes).unwrap();
访问一般数据
一般数据未加密,可以从解析器访问所有日志版本的数据
// Print the log version
println!("Version: {:?}", parser.version);
// Print the log details section
println!("Details: {}", parser.details);
检索密钥链
对于13版及以后的日志,必须从DJI API检索密钥链以解码记录
// Replace `__DJI_API_KEY__` with your actual apiKey
let keychains = parser.fetch_keychains("__DJI_API_KEY__").unwrap();
密钥链可以一次性检索、序列化并存储在日志文件中,以供将来离线使用。
访问帧
根据日志文件版本解密帧。
Frame
是日志数据的标准化表示,跨不同日志版本进行规范化。它为分析和处理DJI日志信息提供了一个一致且易于使用的格式。
对于版本低于13的
let frames = parser.frames(None);
对于版本13及以后的
let frames = parser.frames(Some(keychains));
访问原始记录
根据日志文件版本解密原始记录。对于版本低于13的
let records = parser.records(None);
对于版本13及以后的
let records = parser.records(Some(keychains));
有关更多信息,包括日志格式的更详细概述,请访问文档。
许可证
dji-log-parser 在MIT许可证下可用。有关更多信息,请参阅LICENSE.txt文件。
依赖项
~4–7.5MB
~147K SLoC