import json import subprocess def ffprobe(uri): """Use ffprobe on the provided data to get stream information.""" args = [ "ffprobe", "-v", "quiet", "-of", "json", "-show_streams" ] if isinstance(uri, str): args.extend([ "-f", "lavfi", "-i", "movie={}[out+subcc]".format(uri.replace("\\", '/').replace(":", "\\\\:")) ]) elif isinstance(uri, bytes): args.append("pipe:") try: ff = subprocess.run( args, input=uri if isinstance(uri, bytes) else None, check=True, capture_output=True ) except subprocess.CalledProcessError: return {} return json.loads(ff.stdout.decode("utf-8"))