Source code for zprp_ffmpeg.probe
import subprocess
[docs]
def probe(filename: str, format="json", **kwargs) -> str:
"""
Calls ffprobe on given filename and returns output as string.
:param filename: the graph to compile
:param format: format of output stream. Available options: 'json', 'default', 'flat', 'csv', 'ini', 'xml' (default: json)
:return: ffprobe output in given format
"""
ffprobe_executable_path = "ffprobe"
args = [ffprobe_executable_path, filename, "-of", format]
args += ["-show_format", "-show_streams"]
# parsing kwargs
for key, value in kwargs.items():
args.append(f"-{key}")
if value is not None:
args.append(str(value))
p = subprocess.Popen(args, stdout=subprocess.PIPE, stderr=subprocess.PIPE) # noqa: S603
out, err = p.communicate()
if p.returncode != 0:
raise Exception("ffprobe", out, err)
return out.decode("utf-8")