14 |
my $out = '/tmp/frames.avi'; |
my $out = '/tmp/frames.avi'; |
15 |
my $jpeg_q = 100; |
my $jpeg_q = 100; |
16 |
my $repeat = 1; |
my $repeat = 1; |
17 |
|
my $vary_jpeg_q = 0; |
18 |
|
$repeat = 16; |
19 |
|
my $audio = '-i /tmp/test-pcm.wav'; |
20 |
|
|
21 |
GetOptions( |
GetOptions( |
22 |
"jpeg-q=i" => \$jpeg_q, |
"jpeg-q=i" => \$jpeg_q, |
74 |
my $path = sprintf('%s/%03d.jpg', $tmp, $frame); |
my $path = sprintf('%s/%03d.jpg', $tmp, $frame); |
75 |
save_jpeg( $path, $jpeg_q ); |
save_jpeg( $path, $jpeg_q ); |
76 |
|
|
77 |
foreach my $q ( 1 .. 100 ) { |
if ( $vary_jpeg_q ) { |
78 |
my $path = sprintf('%s/%03d-q%03d.jpg', $tmp, $frame, $q ); |
foreach my $q ( 1 .. 100 ) { |
79 |
save_jpeg( $path, $q ); |
my $path = sprintf('%s/%03d-q%03d.jpg', $tmp, $frame, $q ); |
80 |
|
save_jpeg( $path, $q ); |
81 |
|
} |
82 |
} |
} |
83 |
|
|
84 |
warn "frame $frame $jpeg_q% ", -s $path, " bytes\n"; |
warn "frame $frame $jpeg_q% ", -s $path, " bytes\n"; |
85 |
$frame++; |
$frame++; |
86 |
} |
} |
87 |
} |
} |
88 |
|
|
89 |
my $cmd = "ffmpeg -i $tmp/%03d.jpg -r 16 -y $out"; |
my $cmd = "ffmpeg -i $tmp/%03d.jpg $audio -r 16 -vcodec mjpeg -acodec adpcm_ms -ar 22050 -y $out"; |
90 |
warn "## $cmd\n"; |
warn "## $cmd\n"; |
91 |
system($cmd) == 0 or die "encoding failed: $?"; |
system($cmd) == 0 or die "encoding failed: $?"; |
92 |
|
|