#!/usr/bin/env perl use strict; use warnings; use Getopt::Long qw(GetOptions); use Cwd qw(cwd); use File::Basename; # script arguments my $max_size = '720'; my $strip_audio = 0; GetOptions( 'max_size=s' => \$max_size, 'strip_audio' => \$strip_audio, ) or die("Error in command line arguments\n"); print "Using max size: $max_size\n"; my ($folder) = (cwd =~ m/([\w*|_|-]+$)/); print "Folder: $folder\n"; my $remote_urls = ""; foreach my $file_index (0 .. $#ARGV) { # files naming my ($file_name) = fileparse($ARGV[$file_index]); (my $file_name_without_extension = $file_name) =~ s/\.[^.]+$//; my $small_file_name = "${file_name_without_extension}_small.mp4"; my $webm_file_name = "${file_name_without_extension}_small.webm"; # ffmpeg print "processing file: $file_name\n"; my $audio = "-c:a aac"; if ($strip_audio) { $audio = "-an"; } system("ffmpeg -i $file_name -filter:v scale=${max_size}:-1 $audio /tmp/$small_file_name"); system("ffmpeg -i /tmp/$small_file_name -c:v libvpx -crf 10 -b:v 1M -c:a libvorbis /tmp/$webm_file_name"); #s3 upload system("aws s3 cp /tmp/$small_file_name s3://travisshears.images/image-service/videos/${folder}/ --profile personal"); system("aws s3 cp /tmp/$webm_file_name s3://travisshears.images/image-service/videos/${folder}/ --profile personal"); $remote_urls .= "https://travisshears.com/image-service/videos/${folder}/${small_file_name}\n"; $remote_urls .= "https://travisshears.com/image-service/videos/${folder}/${webm_file_name}\n"; } print "Remote URLS: \n$remote_urls";