#!/usr/bin/perl use Getopt::Long; use IO::Handle; STDERR->autoflush(1); STDOUT->autoflush(1); my $tag = "pix2pixhd_" . time; my $module = "pix2pixhd"; my $endpoint = undef; GetOptions ( "tag=s" => \$tag, "module=s" => \$module, "endpoint=s" => \$endpoint ) or die("Error in command line arguments\n"); $tag =~ s/\....$//; print "tag: $tag\n"; print "module: $module\n"; print "endpoint: $endpoint\n"; if (! -e "results/$tag") { print "usage: $0 [tag]\n"; exit(1); } chdir("results/$tag"); print `pwd`; my $i = 0; my $ls = `ls -1v *.png`; my @lines = split('\n', $ls); my $pwd = `pwd`; chomp $pwd; $pwd .= '/'; print $pwd . "\n"; mkdir('./tmp'); for my $line (@lines) { chomp $line; system('ln', '-s', $pwd . $line, sprintf('./tmp/frame_%05d.png', $i)); $i += 1; } my $ffmpeg = `ffmpeg -i ./tmp/frame_%05d.png -y -c:v libx264 -vf fps=25 -pix_fmt yuv420p -s 1024x512 ../../renders/$tag.mp4`; my @lines = split("\n", $ffmpeg); for my $line (@lines) { print $line; } if (defined $endpoint) { print("upload to $endpoint\n"); system("curl", "-X", "POST", "-F", "module=$module", "-F", "activity=live", "-F", "generated=true", "-F", "dataset=$tag", "-F", "datatype=video", "-F", "file=@../../renders/$tag.mp4", $endpoint ); } print "rendered: $tag.mp4\n"; END { system('rm', '-rf', 'tmp'); chdir('../..'); }