Added code to better detect video codecs
[videoscripts/.git] / make_mkv
index f2c2e536237c3b24ea222e911552952df6869e2b..bf983252ee2d5c6c442265f67807c872f5b0202d 100755 (executable)
--- a/make_mkv
+++ b/make_mkv
@@ -218,6 +218,17 @@ foreach my $video (sort{$videos{$a} <=> $videos{$b}} keys %videos) {
     if($video_stream_info =~ / (\d+x\d+)[,| ]/) { $dimensions = "$1"; }
     else { print "-W- ffprobe was unable to find dimensions for video: $video\n"; }
 
+    # Video Codec
+    my $video_stream_info = `$ffprobe "$video" 2>&1 | grep -e "Stream.*Video"`; chomp($video_stream_info);
+    my $video_codec = "unknown";
+    if($video_stream_info =~ / Video: (\S+) /) { $video_codec = "$1"; }
+    else { print "-W- ffprobe was unable to find video codec for video: $video\n"; }
+
+    # Color space
+    my $color_space = "unknown";
+    if($video_stream_info =~ /, (\S+)\(.*?\)/) { $color_space = "$1"; }
+    else { print "-W- ffprobe was unable to find color space for video: $video\n"; }
+
     # Audio Handler
     my $audio_stream_info = `$ffprobe "$video" 2>&1 | grep -e "Stream.*Audio"`; chomp($video_stream_info);
     my $audio_handler = "unknown";
@@ -230,7 +241,7 @@ foreach my $video (sort{$videos{$a} <=> $videos{$b}} keys %videos) {
     else { print "-W- ffprobe was unable to find audio codec for video: $video\n"; }
 
     # Now create our parameters string
-    my $parameters = "$dimensions.$audio_handler.$audio_codec";
+    my $parameters = "$dimensions.$video_codec.$color_space.$audio_handler.$audio_codec";
     
     print "   Adding video $video to be merged into output video file: $opt_o.$parameters.mkv\n" if($opt_v);
     push @{$merge_videos{"$parameters"}}, $video;