@@ -171,11 +171,23 @@ defmodule Reencodarr.Media.Video.MediaInfoConverter do
171171 end
172172
173173 defp calculate_overall_bitrate ( file , media_info ) do
174- case { file [ "overallBitrate" ] , media_info [ "videoBitrate" ] , media_info [ "audioBitrate" ] } do
175- { overall , _ , _ } when is_integer ( overall ) and overall > 0 -> overall
176- { _ , video , audio } when is_integer ( video ) and is_integer ( audio ) -> video + audio
177- { _ , video , _ } when is_integer ( video ) -> video
178- _ -> 0
174+ overall = file [ "overallBitrate" ] || media_info [ "overallBitrate" ]
175+ calculate_overall_bitrate ( overall , media_info [ "videoBitrate" ] , media_info [ "audioBitrate" ] )
176+ end
177+
178+ defp calculate_overall_bitrate ( overall , video_bitrate , audio_bitrate ) do
179+ case { overall , video_bitrate , audio_bitrate } do
180+ { overall , _ , _ } when is_integer ( overall ) and overall > 0 ->
181+ overall
182+
183+ { _ , video , audio } when is_integer ( video ) and video > 0 and is_integer ( audio ) ->
184+ video + audio
185+
186+ { _ , video , _ } when is_integer ( video ) and video > 0 ->
187+ video
188+
189+ _ ->
190+ 0
179191 end
180192 end
181193
@@ -196,7 +208,8 @@ defmodule Reencodarr.Media.Video.MediaInfoConverter do
196208 end
197209
198210 defp build_general_track ( file , overall_bitrate , subtitles , audio_languages ) do
199- duration = normalize_duration ( file [ "runTime" ] )
211+ media_info = file [ "mediaInfo" ] || % { }
212+ duration = normalize_duration ( file [ "runTime" ] || media_info [ "runTime" ] )
200213 final_bitrate = normalize_bitrate ( overall_bitrate )
201214
202215 % {
@@ -217,10 +230,9 @@ defmodule Reencodarr.Media.Video.MediaInfoConverter do
217230 nil -> 3600.0
218231 # Default to 1 hour if zero
219232 0 -> 3600.0
220- # Convert seconds to milliseconds
221- time when is_integer ( time ) -> time * 1000.0
222- # Convert seconds to milliseconds
223- time when is_float ( time ) -> time * 1000.0
233+ time when is_integer ( time ) -> time * 1.0
234+ time when is_float ( time ) -> time
235+ time when is_binary ( time ) -> Parsers . parse_duration ( time )
224236 _ -> 3600.0
225237 end
226238 end
0 commit comments