Added it along with force crop of 0 to ensure original resolution/aspect ratio is maintained in encoded files.
Renamed/changed -r option. Inversed and changed it to a -k option.
my $mkvmerge='mkvmerge';
my $ffmpeg='ffmpeg';
my $handbrake='HandBrakeCLI';
+my $handbrake_options='--strict-anamorphic --crop 0:0:0:0 -E ac3';
my $tmpfile = `tempfile`; chomp($tmpfile);
my $chapter_file = $tmpfile;
my $input_file_options = "-S";
# Use HandBrake to requantize/deinterlace the input video
my $video_mp4 = $video; $video_mp4 =~ s/\.[^.]*$//; $video_mp4 .= ".hb.mp4";
print " Re-quantizing input video content: $video_mp4\n";
- my $handbrake_cmd = "$handbrake $deinterlace_option $requantize_option -E ac3 -i \"$video\" -o \"$video_mp4\" > /dev/null 2>&1";
+ my $handbrake_cmd = "$handbrake $deinterlace_option $requantize_option $handbrake_options -i \"$video\" -o \"$video_mp4\" > /dev/null 2>&1";
if(! defined $opt_s) {
my $errno = system("$handbrake_cmd");
$errno = $errno >> 8;
use Time::localtime;
# Early command line options processing
-getopts("qrh:tvs:");
+getopts("qkh:tvs:");
my $srcpathname = $opt_s;
####################################################################################################
my $video_title_prefix = "HomeVideos:"; # What text to put on the front of the title for the merged video being created
my $find_cmd = "find \"$srcpathname/\" -iregex \".*\.mov\" -o -iregex \".*\.3gp\" -o -iregex \".*\.mp4\" -o -iregex \".*\.mts\"";
my $handbrake='HandBrakeCLI';
+my $handbrake_options='--strict-anamorphic --crop 0:0:0:0 -E ac3';
my $interlaced_requantize_quality=0.85;
my $progressive_requantize_quality=0.7;
####################################################################################################
print " -h <compute host> specify the remote compute host to submit the mkvmerge job to\n";
print " -v verbose mode; print extra information about what is being found/merged\n";
print " -t test mode; print what will happen, but don't do anything\n";
- print " -r remove merged video clips; after a merge, remove the individual video files that were merged\n";
+ print " -k keep the individual video files that are merged. By default, after a merge, individual video files that were merged are removed\n";
print " -q Requantize MTS input videos to decrease output video size (requires HandBrakeCLI)\n";
return 1;
}
print " Re-quantizing input video content: $video\n";
my $handbrake_cmd = "";
if($use_compute_host) { $handbrake_cmd .= "ssh $compute_host 'cd \"$pwd\";"; }
- $handbrake_cmd .= "$handbrake $deinterlace_option $requantize_option -E ac3 -i $srcvideo -o \"$video\" > /dev/null 2>&1";
+ $handbrake_cmd .= "$handbrake $deinterlace_option $requantize_option $handbrake_options -i $srcvideo -o \"$video\" > /dev/null 2>&1";
if($use_compute_host) { $handbrake_cmd .= "'"; }
if(! defined $opt_t) {
my $errno = system("$handbrake_cmd");
die "-E- handbrake encountered some errors with exit code $errno\n";
} else {
# Remove the original srcvideo since we created a new version of it that we are going to keep instead
- if(defined $opt_r) {
+ if(!defined $opt_k) {
system("rm -f $srcvideo\n");
}
}
if(defined $opt_t) {
print "\n-> Creating \"$video\"\n";
print "$cmd\n";
- if(defined $opt_r) {
+ if(!defined $opt_k) {
foreach $video (@{$videos{$ext}{$video}}) {
print("rm -f $video\n");
}
system("chgrp $group \"$video\"");
system("chmod $mode \"$video\"");
# Remove the individual video files
- if(defined $opt_r) {
+ if(!defined $opt_k) {
foreach $video (@{$videos{$ext}{$video}}) {
system("rm -f $video");
}
"12" => "Dec"
);
-getopts("htvrpd:");
+getopts("htvnkpd:");
sub usage {
print "usage: $0 [-v] [-t] [-r] [-p] [-d <dir>]\n";
- print " -v = verbose; print file being moved (to).\n";
- print " -t = test; print what will happen, but don't do anything\n";
- print " -r = remove merged video clips; after a merge, remove the individual video files that were merged\n";
- print " -p = Only recreate video playlists. Do this for each year & month of video clips in the directory specified by -d <dir>.\n";
- print " -d <dir> = Directory to recreate the playlists in. Only needed if -p option is given\n";
+ print " -v verbose; print file being moved (to).\n";
+ print " -t test; print what will happen, but don't do anything\n";
+ print " -n do not copy to dest; do not copy the resultant video files to the destination dir\n";
+ print " -k keep the individual video files that are merged. By default, after a merge, individual video files that were merged are removed\n";
+ print " -p only recreate video playlists, do not process any video files. Do this for each year & month of video clips in the directory specified by -d <dir>.\n";
+ print " -d <dir> directory to recreate the playlists in. Only needed if -p option is given\n";
return 1;
}
my $errno = 0;
my $merge_opts = "";
if(defined $opt_t) { $merge_opts .= "-t "; }
-if(defined $opt_r) { $merge_opts .= "-r "; }
+if(defined $opt_k) { $merge_opts .= "-k "; }
$errno=system("$merge_videos_by_day -q -s \"$srcpathname\" $merge_opts");
$errno = $errno >> 8;
if($errno) { die "-E- $merge_videos_by_day encountered some errors with exit code $errno\n"; }
+# Exit now if we are not supposed to copy the resultant video files to the destination path
+if(defined $opt_n) {
+ $pidfile->remove();
+ print "\n\n";
+ exit 0;
+}
+
# Copy the videos over to the destination path
my @dstdirs;
chdir "$srcpathname";
next;
}
- # We are ready to pick a destination folder to put the picture in
+ # We are ready to pick a destination folder to put the video in
$dstdir = $dstpathname . "/" . $year;
push(@dstdirs,$dstdir);
$dstfile = $dstdir . "/" . $year . "-" . $monthnum . "-" . $day;
}
$dstfile = "$newfile.$ext";
+
if(defined $opt_t) {
print "-> Moving \"$srcdir/$srcfile\" to \"$dstfile\"\n";
} else {
system("chgrp $group \"$dstfile\"");
system("chmod $mode \"$dstfile\"");
}
-
+
# Check to see if there is an empty sub directory to remove
if(($srcdir ne $srcpathname) && ($srcpathname ne ".")) {
- if(is_folder_empty($srcdir)) {
- print "-> Subdir detected for videos ($srcdir != $srcpathname)\n" if($opt_v);
- if(! defined $opt_t) {
- $tmpdir=`tempfile`;
- system("rm $tmpdir");
- system("cp -R \"$srcdir\" $tmpdir > /dev/null 2>/dev/null");
- system("rm -rf \"$srcdir\"");
- print "-> Moved empty subdir $srcdir to $tmpdir\n" if($opt_v);
- }
- }
+ if(is_folder_empty($srcdir)) {
+ print "-> Subdir detected for videos ($srcdir != $srcpathname)\n" if($opt_v);
+ if(! defined $opt_t) {
+ $tmpdir=`tempfile`;
+ system("rm $tmpdir");
+ system("cp -R \"$srcdir\" $tmpdir > /dev/null 2>/dev/null");
+ system("rm -rf \"$srcdir\"");
+ print "-> Moved empty subdir $srcdir to $tmpdir\n" if($opt_v);
+ }
+ }
}
}