Fix division by zero on some video/GIF files (#30600)
This commit is contained in:
		@@ -41,8 +41,8 @@ class VideoMetadataExtractor
 | 
			
		||||
        @colorspace  = video_stream[:pix_fmt]
 | 
			
		||||
        @width       = video_stream[:width]
 | 
			
		||||
        @height      = video_stream[:height]
 | 
			
		||||
        @frame_rate  = video_stream[:avg_frame_rate] == '0/0' ? nil : Rational(video_stream[:avg_frame_rate])
 | 
			
		||||
        @r_frame_rate = video_stream[:r_frame_rate] == '0/0' ? nil : Rational(video_stream[:r_frame_rate])
 | 
			
		||||
        @frame_rate  = parse_framerate(video_stream[:avg_frame_rate])
 | 
			
		||||
        @r_frame_rate = parse_framerate(video_stream[:r_frame_rate])
 | 
			
		||||
        # For some video streams the frame_rate reported by `ffprobe` will be 0/0, but for these streams we
 | 
			
		||||
        # should use `r_frame_rate` instead. Video screencast generated by Gnome Screencast have this issue.
 | 
			
		||||
        @frame_rate ||= @r_frame_rate
 | 
			
		||||
@@ -55,4 +55,10 @@ class VideoMetadataExtractor
 | 
			
		||||
 | 
			
		||||
    @invalid = true if @metadata.key?(:error)
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
  def parse_framerate(raw)
 | 
			
		||||
    Rational(raw)
 | 
			
		||||
  rescue ZeroDivisionError
 | 
			
		||||
    nil
 | 
			
		||||
  end
 | 
			
		||||
end
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user