Added code to better detect video codecs
authorAlan J. Pippin <alan@pippins.net>
Wed, 12 Oct 2022 02:49:34 +0000 (20:49 -0600)
committerAlan J. Pippin <ajp@pippins.net>
Wed, 12 Oct 2022 02:49:34 +0000 (20:49 -0600)
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
merge_videos_by_day
organize_videos.conf

index c7690041400776d700aa323143d5d695280d9337..bf983252ee2d5c6c442265f67807c872f5b0202d 100755 (executable)
--- 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;
index 91070d8f432a8d8219ab7c9151cb92912de26977..146ac84bad6b8c38187ad78fc1a0ca96cdabc24f 100755 (executable)
@@ -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);
index ccc46e2ceaa1bcb450af654f75070c68ba8d2ce2..fd1241345f1b2e5b670d013b7719999bcd6ec50c 100644 (file)
@@ -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 \\)";