The Open Telemetry Kit (OTK) is an open source package for extracting and parsing telemetry associated with video streams and converting to common formats. It comes out of a need for a singular API that can be used for multiple different video telemetry formats.
Telemetry that can be parsed includes: GPS, time, camera information, speed
Features:
- Automatically detect telemetry format
- Manipulate telemetry with ease
- Write telemetry to a new format
Python version: >=3.6
ffmpeg
and ffprobe
.
On Debian systems these can be installed with:
$ sudo apt install ffmpeg
dateutil
On Debian systems this can be installed with:
$ pip3 install python-dateutil
$ pip3 install open-telemetry-kit
The OTK package can be imported into your python3 project with:
import open_telemetry_kit as otk
Download the OTK quickstart package (~90 MB).
(Mac users can install wget
using these instructions)
$ wget https://hivemapper-sample-videos.s3-us-west-2.amazonaws.com/OTK/OTK_quickstart.tgz
This includes a sample .csv
, .srt
, and .mov
with embedded telemetry.
It also contains quickstart.py
which you can use to extract the telemetry from the sample files.
Extract the package:
$ tar xzvf OTK_quickstart.tgz
This will extract everything into a new directory called OTK_quickstart/
The quickstart.py
script accepts a standalone .csv
or .srt
or a video file with an embedded .srt
.
It will read in the data, convert it to JSON, and write it to the provided destination.
In your terminal go to the new OTK_quickstart
directory.
Extract telemetry from the sample video:
$ python3 quickstart.py embedded_srt_example.mov embedded_srt_example.json
Extract telemetry from the sample srt
or csv
files respectively:
$ python3 quickstart.py srt_example.srt srt_example.json
$ python3 quickstart.py csv_example.csv csv_example.json
Note: This process will create a new JSON file containing the telemetry extracted from the sample file. The data is organized into an array of objects (or, in python terminology, a list of dictionaries)
For an example of simple data manipulation, open quickstart.py
and uncomment the lines:
# gps = Telemetry()
# for packet in telemetry:
# gps.append({ k:v for k, v in packet.items() if k in ['latitude', 'longitude', 'altitude']})
# write.telemetryToJson(gps, dest)
Rerun the script with one of the provided commands above.
The OTK currently supports the following forms of telemetry:
.csv
files.srt
files- Most videos file with embedded telemetry encoded as a
.srt
(e.g. video taken with some DJI drone models) .gpx
files.kml
files- KLV/MISB embedded data
- Open Camera
.srt
- JSON
- CSV
Planned expansions and updates for the OTK include:
- geoJSON
- Unit Tests