diff --git a/pack-vid b/pack-vid index 6d7a6a7..6560ce2 100755 --- a/pack-vid +++ b/pack-vid @@ -22,6 +22,7 @@ $options = [ 'peak' => '10000', 'fps' => '60', 'size' => $maxBytes, + 'quality' => 0.75, ]; while ( count( $args ) > 0 && substr( $args[0], 0, 2 ) == '--' ) { @@ -44,7 +45,8 @@ if ( count ( $args ) < 2 ) { " --exposure=n adjust exposure\n" . " --peak=n set HDR peak nits\n" . " --fps=n frame rate limit\n" . - " --size=n target file size in bytes (default 3.5M)\n" + " --size=n target file size in bytes (default 3.5M)\n" . + " --quality=n fraction of base bitrate to break on (deafult 0.75)\n" ); } [ $src, $dest ] = $args; @@ -148,13 +150,14 @@ function convert( $src, $dest, $options ) { } $mbits = 1000 * 1000; - if ( $bitrate < 1 * $mbits || $height < 480 ) { + $base = intval( $mbits * $options['quality'] ); + if ( $bitrate < 1 * $base || $height < 480 ) { $frameWidth = 640; $frameHeight = 360; - } elseif ( $bitrate < 2 * $mbits || $height < 720) { + } elseif ( $bitrate < 2 * $base || $height < 720) { $frameWidth = 854; $frameHeight = 480; - } elseif ( $bitrate < 4 * $mbits || $height < 1080) { + } elseif ( $bitrate < 4 * $base || $height < 1080) { $frameWidth = 1280; $frameHeight = 720; } else {