用于分析MISB/STANAG 4609密钥长度值(KLV)元数据的Python库。

klvdata的Python项目详细描述


https://travis-ci.org/paretech/klvdata.svg?branch=masterhttps://coveralls.io/repos/github/paretech/klvdata/badge.svg?branch=masterhttps://img.shields.io/pypi/v/klvdata.svg

什么?

klvdata是一个python库,用于解析和构造键长值(KLV)格式的二进制流。该库的常见用途是解析和显示来自STANAG 4609兼容MPEG-2 Transport Streams (TS) (MPEG-TS)MISB ST0601无人机系统(uas)元数据。请注意,单独的klv data不能从mpeg-2ts中消除klv数据的mux,但是像FFmpegGStreamer这样的程序可以与工作流中的klvdata一起使用来执行该功能。

为什么?

可用的开源选项不多。

功能

  • 分析KLV元数据流。
  • 支持MISB ST0601 uas数据链路本地集。
  • 支持MISB ST0102安全元数据本地集。
  • 为Python3.5和3.6构建。
  • 不需要外部python依赖项。

快速启动

在gnu/linux终端中尝试这些命令。

第一个:

$ pip install klvdata
$ wget https://raw.githubusercontent.com/paretech/klvdata/master/data/DynamicConstantMISMMSPacketData.bin
$ cat << EOF > klvdata_test.py
#!/usr/bin/env python
import sys, klvdata;
for packet in klvdata.StreamParser(sys.stdin.buffer.read()): packet.structure()
EOF

然后:

$ python ./klvdata_test.py < DynamicConstantMISMMSPacketData.bin

    <class 'klvdata.misb0601.UASLocalMetadataSet'>
        <class 'klvdata.misb0601.PrecisionTimeStamp'>
        <class 'klvdata.misb0601.MissionID'>
        <class 'klvdata.misb0601.PlatformHeadingAngle'>
        <class 'klvdata.misb0601.PlatformPitchAngle'>
        <class 'klvdata.misb0601.PlatformRollAngle'>
        <class 'klvdata.misb0601.PlatformDesignation'>
        <class 'klvdata.misb0601.ImageSourceSensor'>
        <class 'klvdata.misb0601.ImageCoordinateSystem'>
        <class 'klvdata.misb0601.SensorLatitude'>
        <class 'klvdata.misb0601.SensorLongitude'>
        <class 'klvdata.misb0601.SensorTrueAltitude'>
        <class 'klvdata.misb0601.SensorHorizontalFieldOfView'>
        <class 'klvdata.misb0601.SensorVerticalFieldOfView'>
        <class 'klvdata.misb0601.SensorRelativeAzimuthAngle'>
        <class 'klvdata.misb0601.SensorRelativeElevationAngle'>
        <class 'klvdata.misb0601.SensorRelativeRollAngle'>
        <class 'klvdata.misb0601.SlantRange'>
        <class 'klvdata.misb0601.TargetWidth'>
        <class 'klvdata.misb0601.FrameCenterLatitude'>
        <class 'klvdata.misb0601.FrameCenterLongitude'>
        <class 'klvdata.misb0601.FrameCenterElevation'>
        <class 'klvdata.misb0102.SecurityLocalMetadataSet'>
            <class 'klvdata.misb0102.SecurityClassification'>
            <class 'klvdata.misb0102.UnknownElement'>
            <class 'klvdata.misb0102.UnknownElement'>
            <class 'klvdata.misb0102.UnknownElement'>
            <class 'klvdata.misb0102.UnknownElement'>
            <class 'klvdata.misb0102.UnknownElement'>
        <class 'klvdata.misb0601.UASLSVersionNumber'>
        <class 'klvdata.misb0601.UnknownElement'>
        <class 'klvdata.misb0601.Checksum'>

如果您已经安装了ffmpeg并且想在带有嵌入式klv元数据的无人机的真实视频上试用它(下载量约为97mb):

$ wget http://samples.ffmpeg.org/MPEG2/mpegts-klv/Day%20Flight.mpg
$ ffmpeg -i Day\ Flight.mpg -map data-re -codec copy -f data - | python ./klvdata_test.py

    <class 'klvdata.misb0601.UASLocalMetadataSet'>
        <class 'klvdata.misb0601.PrecisionTimeStamp'>
        <class 'klvdata.misb0601.UASLSVersionNumber'>
        <class 'klvdata.misb0601.PlatformHeadingAngle'>
        <class 'klvdata.misb0601.PlatformPitchAngle'>
        <class 'klvdata.misb0601.PlatformRollAngle'>
        <class 'klvdata.misb0601.ImageSourceSensor'>
        <class 'klvdata.misb0601.ImageCoordinateSystem'>
        <class 'klvdata.misb0601.SensorLatitude'>
        <class 'klvdata.misb0601.SensorLongitude'>
        <class 'klvdata.misb0601.SensorTrueAltitude'>
        <class 'klvdata.misb0601.SensorHorizontalFieldOfView'>
        <class 'klvdata.misb0601.SensorVerticalFieldOfView'>
        <class 'klvdata.misb0601.SensorRelativeAzimuthAngle'>
        <class 'klvdata.misb0601.SensorRelativeElevationAngle'>
        <class 'klvdata.misb0601.SensorRelativeRollAngle'>
        <class 'klvdata.misb0601.SlantRange'>
        <class 'klvdata.misb0601.TargetWidth'>
        <class 'klvdata.misb0601.FrameCenterLatitude'>
        <class 'klvdata.misb0601.FrameCenterLongitude'>
        <class 'klvdata.misb0601.FrameCenterElevation'>
        <class 'klvdata.misb0601.TargetLocationLatitude'>
        <class 'klvdata.misb0601.TargetLocationLongitude'>
        <class 'klvdata.misb0601.TargetLocationElevation'>
        <class 'klvdata.misb0601.PlatformGroundSpeed'>
        <class 'klvdata.misb0601.GroundRange'>
        <class 'klvdata.misb0601.Checksum'>

        [...]

文档

文档可在https://paretech.github.io/klvdata找到。

贡献

欢迎投稿!

贡献者列表:

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
Java谷歌地图将地址转换为坐标   java舍入错误给了我无效的答案   JavaSpring3。0 mvc问题(请求的资源不可用)   java在关闭GraphStream时不关闭Swing主应用程序   java使用特定的orderby从包含多个子节点的FireBase数据库检索数据   java是否可以不安全地访问JVM未使用的对象?   java读取单词的第一个字母并选择其字母表编号   java在同一个包中导入类   安卓 java。lang.IndexOutOfBoundsException:索引0无效,大小为0   java JTextPane仅以单行显示插入的组件   java系统应用程序如何在CyanogenMod 11中以编程方式读取整个logcat?   java如何访问保存在中的变量。MatlabBuilder JA构建的jar文件中的mat文件?   Java不必要的图像覆盖   数组javajsonarray。包含(字符串)没有这样的函数?   javacamel:如何在文件组件中使用相同的头   java smack setKeystorePath不工作?   JavaJackcessDatabaseBuilder。开放式失败   对Jetty Jersey应用程序的java请求在1分钟后终止   在客户端断开连接后,java进程是否仍在继续   安全Java签名代码小程序混合代码警告即使在TrustedLibrary之后:true