@@ -8,6 +8,7 @@ class Movie
88 attr_reader :path , :duration , :time , :bitrate , :rotation , :creation_time
99 attr_reader :video_stream , :video_codec , :video_bitrate , :colorspace , :width , :height , :sar , :dar , :frame_rate
1010 attr_reader :audio_streams , :audio_stream , :audio_codec , :audio_bitrate , :audio_sample_rate , :audio_channels , :audio_tags
11+ attr_reader :subtitle_streams , :subtitle_stream , :subtitle_codec , :subtitle_language
1112 attr_reader :container
1213 attr_reader :metadata , :format_tags
1314
@@ -53,6 +54,7 @@ def initialize(path)
5354 else
5455 video_streams = @metadata [ :streams ] . select { |stream | stream . key? ( :codec_type ) and stream [ :codec_type ] === 'video' }
5556 audio_streams = @metadata [ :streams ] . select { |stream | stream . key? ( :codec_type ) and stream [ :codec_type ] === 'audio' }
57+ subtitle_streams = @metadata [ :streams ] . select { |stream | stream . key? ( :codec_type ) and stream [ :codec_type ] === 'subtitle' }
5658
5759 @container = @metadata [ :format ] [ :format_name ]
5860
@@ -62,15 +64,13 @@ def initialize(path)
6264
6365 @format_tags = @metadata [ :format ] [ :tags ]
6466
65- @creation_time = if @format_tags and @format_tags . key? ( :creation_time )
66- begin
67- Time . parse ( @format_tags [ :creation_time ] )
68- rescue ArgumentError
69- nil
70- end
71- else
72- nil
73- end
67+ @creation_time = nil
68+ if @format_tags and @format_tags . key? ( :creation_time )
69+ begin
70+ @creation_time = Time . parse ( @format_tags [ :creation_time ] )
71+ rescue ArgumentError
72+ end
73+ end
7474
7575 @bitrate = @metadata [ :format ] [ :bit_rate ] . to_i
7676
@@ -127,6 +127,22 @@ def initialize(path)
127127 @audio_stream = audio_stream [ :overview ]
128128 end
129129
130+ @subtitle_streams = subtitle_streams . map do |stream |
131+ {
132+ :index => stream [ :index ] ,
133+ :language => stream [ :tags ] [ :language ] ,
134+ :codec_name => stream [ :codec_tag_string ] ,
135+ :overview => "#{ stream [ :codec_tag_string ] } (#{ stream [ :tags ] [ :language ] } )"
136+ }
137+ end
138+
139+ subtitle_stream = @subtitle_streams . first
140+ unless subtitle_stream . nil?
141+ @subtitle_language = subtitle_stream [ :language ]
142+ @subtitle_codec = subtitle_stream [ :codec_name ]
143+ @subtitle_stream = subtitle_stream [ :overview ]
144+ end
145+
130146 end
131147
132148 unsupported_stream_ids = unsupported_streams ( std_error )
0 commit comments