# video_helper_minify.pl -rw-r--r-- 1.6 KiB View raw
                                                                                
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";