用于分析MISB/STANAG 4609密钥长度值(KLV)元数据的Python库。
klvdata的Python项目详细描述
什么?
klvdata是一个python库,用于解析和构造键长值(KLV)格式的二进制流。该库的常见用途是解析和显示来自STANAG 4609兼容MPEG-2 Transport Streams (TS) (MPEG-TS)的MISB ST0601无人机系统(uas)元数据。请注意,单独的klv data不能从mpeg-2ts中消除klv数据的mux,但是像FFmpeg和GStreamer这样的程序可以与工作流中的klvdata一起使用来执行该功能。
为什么?
可用的开源选项不多。
快速启动
在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'> [...]
文档
贡献
欢迎投稿!