Module code >> skvideo.io.mprobe
Fork me on GitHub

Source code for skvideo.io.mprobe

import subprocess as sp

from ..utils import *
from .. import _HAS_MEDIAINFO
from .. import _MEDIAINFO_APPLICATION


[docs]def mprobe(filename): """get metadata by using mediainfo Checks the output of mediainfo on the desired video file. Data is then parsed into a dictionary and checked for video data. If no such video data exists, an empty dictionary is returned. Parameters ---------- filename : string Path to the video file Returns ------- mediaDict : dict Dictionary containing all header-based information about the passed-in source video. """ assert _HAS_MEDIAINFO, "`mediainfo` not found in path. Is it installed?" try: # '-f' gets full output, and --Output=XML is xml formatted output command = [_MEDIAINFO_APPLICATION, "-f", "--Output=XML", filename] # simply get std output xml = check_output(command) d = xmltodictparser(xml) assert "Mediainfo" in d d = d["Mediainfo"] assert "File" in d d = d["File"] assert "track" in d unorderedtracks = d["track"] # tracksbytype normalizes the input by key tracksbytype = {} if type(unorderedtracks) is list: for d in unorderedtracks: assert "@type" in d # can't have more than 1 key. If this case arises # an issue should be made in the tracker for a fix. assert d["@type"] not in tracksbytype tracksbytype[d["@type"]] = d else: # not list assert "@type" in unorderedtracks tracksbytype[unorderedtracks["@type"]] = unorderedtracks return tracksbytype except: return {}