Return full output of ffprobe process

This commit is contained in:
Nick Mowen 2022-11-10 06:40:42 -07:00
parent 8a39f42255
commit 0b2f4ea525
2 changed files with 19 additions and 25 deletions

View File

@ -619,31 +619,31 @@ def ffprobe(camera_name):
if len(config.ffmpeg.inputs) > 1:
# user has multiple streams
output = ""
output = []
for input in config.ffmpeg.inputs:
output += f"{input.roles}\n"
ffprobe = ffprobe_stream(input.path)
if ffprobe:
output += f"{ffprobe}\n"
else:
output += "error getting stream\n"
output.append(
{
"input_roles": input.roles,
"return_code": ffprobe.returncode,
"stderr": ffprobe.stderr,
"stdout": ffprobe.stdout,
}
)
return jsonify(output, "200")
else:
# user has single stream
ffprobe = ffprobe_stream(config.ffmpeg.inputs[0].path)
if not ffprobe:
return jsonify(
{
"success": False,
"message": f"ffprobe unable to get info for {camera_name}",
},
"500",
"input_roles": config.ffmpeg.inputs[0].roles,
"return_code": ffprobe.returncode,
"stderr": ffprobe.stderr,
"stdout": ffprobe.stdout,
}
)
else:
return jsonify(ffprobe, "200")
@bp.route("/<camera_name>")

View File

@ -712,7 +712,7 @@ def get_cpu_stats() -> dict[str, dict]:
return usages
def ffprobe_stream(path: str) -> str:
def ffprobe_stream(path: str) -> sp.CompletedProcess:
"""Run ffprobe on stream."""
ffprobe_cmd = [
"ffprobe",
@ -724,13 +724,7 @@ def ffprobe_stream(path: str) -> str:
"quiet",
path,
]
p = sp.run(ffprobe_cmd, capture_output=True)
if p.returncode != 0:
logger.error(f"ffprobe unable to get result for stream: {p.stderr}")
return None
else:
return p.stdout.decode().strip()
return sp.run(ffprobe_cmd, capture_output=True)
class FrameManager(ABC):