@@ -419,14 +419,29 @@ def get_fps(self):
419419 cmd = ["ffprobe" , "-v" , "error" , "-select_streams" , "v:0" ,
420420 "-show_entries" , "stream=avg_frame_rate" , "-of" ,
421421 "default=noprint_wrappers=1:nokey=1" , vid ]
422- rates .append (subprocess .check_output (cmd , text = True ))
422+ try :
423+ rates .append (subprocess .check_output (cmd , text = True ))
424+ except :
425+ logger .warning (f"Command failed: { ' ' .join (cmd )} " )
426+ break
423427 if len (rates ) == 0 :
424428 return None
425429 if any (rate != rates [0 ] for rate in rates ):
426- return None
427- # All videos returned the same rate, so we return that
428- numerator , denominator = map (int , rates [0 ].split ('/' ))
429- return numerator / denominator if denominator != 0 else None
430+ logger .warning ("Framerates of input videos differ from one another,"
431+ f" using the first one: { rates } " )
432+ rate = rates [0 ]
433+ try :
434+ return float (rate )
435+ except ValueError :
436+ pass
437+ try :
438+ numerator , denominator = map (int , rate .split ('/' ))
439+ return numerator / denominator if denominator != 0 else None
440+ except ValueError :
441+ pass
442+ logger .warning (f'Could not parse framerate from string "{ rate } " returned'
443+ ' by ffprobe command, so setting fps to None.' )
444+ return None
430445
431446 def expand_videos (self ):
432447 """expands video camera_x.mp4 into set of images camera_x_img_y.jpg"""
0 commit comments