Merge pull request #4026 from pypeclub/feature/more_specific_burnin_error

General: More specific error in burnins script
This commit is contained in:
Jakub Trllo 2022-10-25 10:57:15 +02:00 committed by GitHub
commit 24b4397db4
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -22,10 +22,6 @@ FFMPEG = (
'"{}"%(input_args)s -i "%(input)s" %(filters)s %(args)s%(output)s'
).format(ffmpeg_path)
FFPROBE = (
'"{}" -v quiet -print_format json -show_format -show_streams "%(source)s"'
).format(ffprobe_path)
DRAWTEXT = (
"drawtext=fontfile='%(font)s':text=\\'%(text)s\\':"
"x=%(x)s:y=%(y)s:fontcolor=%(color)s@%(opacity).1f:fontsize=%(size)d"
@ -48,8 +44,15 @@ def _get_ffprobe_data(source):
:param str source: source media file
:rtype: [{}, ...]
"""
command = FFPROBE % {'source': source}
proc = subprocess.Popen(command, shell=True, stdout=subprocess.PIPE)
command = [
ffprobe_path,
"-v", "quiet",
"-print_format", "json",
"-show_format",
"-show_streams",
source
]
proc = subprocess.Popen(command, stdout=subprocess.PIPE)
out = proc.communicate()[0]
if proc.returncode != 0:
raise RuntimeError("Failed to run: %s" % command)
@ -113,11 +116,20 @@ class ModifiedBurnins(ffmpeg_burnins.Burnins):
if not ffprobe_data:
ffprobe_data = _get_ffprobe_data(source)
# Validate 'streams' before calling super to raise more specific
# error
source_streams = ffprobe_data.get("streams")
if not source_streams:
raise ValueError((
"Input file \"{}\" does not contain any streams"
" with image/video content."
).format(source))
self.ffprobe_data = ffprobe_data
self.first_frame = first_frame
self.input_args = []
super().__init__(source, ffprobe_data["streams"])
super().__init__(source, source_streams)
if options_init:
self.options_init.update(options_init)