From 2675e038e4a9ef7bf5cee7ff32a77a6f31799965 Mon Sep 17 00:00:00 2001
From: "Alan J. Pippin" <alan@pippins.net>
Date: Tue, 11 Oct 2022 20:49:34 -0600
Subject: [PATCH] Added code to better detect video codecs

Fixed bug in how the dstfile name was being set in merged video
Re-enabled merge by modification time, as that is more accurate than filename
---
 make_mkv             | 8 +++++++-
 merge_videos_by_day  | 2 +-
 organize_videos.conf | 4 ++--
 3 files changed, 10 insertions(+), 4 deletions(-)

diff --git a/make_mkv b/make_mkv
index c769004..bf98325 100755
--- a/make_mkv
+++ b/make_mkv
@@ -218,6 +218,12 @@ 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"; }
@@ -235,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.$color_space.$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;
diff --git a/merge_videos_by_day b/merge_videos_by_day
index 91070d8..146ac84 100755
--- a/merge_videos_by_day
+++ b/merge_videos_by_day
@@ -156,7 +156,7 @@ foreach $dstfile (sort keys %videos) {
 
     my $videos = join(',', @{$videos{$dstfile}});
     
-    if($dstfile =~ /(\d+)-(\d+)-(\d+)/) {
+    if($dstfile =~ /(\d+)-(\d+)-(\d+)$/) {
 	$year = $1;
 	$month = $2;
 	$day = sprintf("%02d",$3);
diff --git a/organize_videos.conf b/organize_videos.conf
index ccc46e2..fd12413 100644
--- a/organize_videos.conf
+++ b/organize_videos.conf
@@ -30,7 +30,7 @@ $watchpathname = "/naspool/cloud/alan/files/InstantUpload/Camera;/naspool/cloud/
 $merge_videos_by_day = "/naspool/videos/bin/merge_videos_by_day";
 
 # Flag to merge videos by modification date instead of the date parsed from the filename
-$merge_by_modification_date = 0;
+$merge_by_modification_date = 1;
 
 # Path to the make_mkv script
 $make_mkv = "/naspool/videos/bin/make_mkv";
@@ -76,7 +76,7 @@ $no_recompress_file_ext = qr/\.(mp4)$/i;
 
 # Video file creation dates must not have changed in the last X minutes to process any of the video files
 # This is done to ensure that all videos from a given upload from a camera have completed prior to looking for videos to merge
-$minage = "+60";
+$minage = "+120";
 
 # What command should be used to find files that have changed (are at least $minage old) 
 $find_changed_cmd = "find  \"$srcpathname/\" -not -cmin $minage -a \\( $movie_file_ext \\)";
-- 
2.34.1