|
|
|
|
@ -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 |
|
|
|
|
|