1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
#!/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";