Source code for gpmf.io

import logging

logger = logging.getLogger(__name__)

try:
    import ffmpeg

[docs] def find_gpmf_stream(fname): """ Find the reference to the GPMF Stream in the video file Parameters ---------- fname: str The input file Returns ------- stream_info: dict The GPMF Stream info. Raises ------ RuntimeError: If no stream found. """ probe = ffmpeg.probe(fname) for s in probe["streams"]: if s["codec_tag_string"] == "gpmd": return s raise RuntimeError("Could not find GPS stream")
[docs] def extract_gpmf_stream(fname, verbose=False): """Extract GPMF binary data from video files Parameters ---------- fname: str The input file verbose: bool, optional (default=False) If True, display ffmpeg messages. Returns ------- gpmf_data: bytes The raw GPMF binary stream """ stream_info = find_gpmf_stream(fname) stream_index = stream_info["index"] return ffmpeg.input(fname)\ .output("pipe:", format="rawvideo", map="0:%i" % stream_index, codec="copy")\ .run(capture_stdout=True, capture_stderr=not verbose)[0]
except ImportError: logger.info("The 'ffmpeg' module could not be loaded. The function 'find_gpmf_stream' will not be available.")