From 97a21bd75f267516d20f282a215805b8d25e071c Mon Sep 17 00:00:00 2001 From: Brion Vibber Date: Tue, 16 May 2023 16:54:36 -0700 Subject: [PATCH] audio tweaks etc * pass --no-audio through from pack-set to pack-vid * don't reserve bitrate for audio if there's no audio track --- pack-set | 9 ++++++++- pack-vid | 18 ++++++++++++------ 2 files changed, 20 insertions(+), 7 deletions(-) diff --git a/pack-set b/pack-set index 40dbe44..ac6ae7a 100755 --- a/pack-set +++ b/pack-set @@ -1,10 +1,17 @@ #!/bin/sh +OPTS="" +if [ "$1" == "--no-audio" ] +then + OPTS="--no-audio" + shift +fi + for INFILE in "$@" do echo "$INFILE" - COMMON="--exposure=-2.5 --peak=141 --fps=60000/1001" + COMMON="$OPTS --exposure=-2.5 --peak=141 --fps=60000/1001" SPEED_SMALL="veryslow" SPEED_LARGE="medium" diff --git a/pack-vid b/pack-vid index e18e7e4..813b093 100755 --- a/pack-vid +++ b/pack-vid @@ -121,16 +121,22 @@ function sizify( $str ) { die( "Unexpected size format '$str'\n" ); } +function extractTracks( $streams, $type ) { + return array_values( + array_filter( $streams, function ( $stream ) use ( $type ) { + return $stream->codec_type === $type; + } ) + ); +} + function convert( $src, $dest, $options ) { $maxBits = 8 * sizify( $options['size'] ); $probe = ffprobe( $src ); - $videoTracks = array_values( - array_filter( $probe->streams, function ( $stream ) { - return $stream->codec_type === 'video'; - } ) - ); + $videoTracks = extractTracks( $probe->streams, 'video' ); + $audioTracks = extractTracks( $probe->streams, 'audio' ); + if ( count( $videoTracks ) == 0 ) { var_dump( $probe ); die("oh no\n"); @@ -146,7 +152,7 @@ function convert( $src, $dest, $options ) { $bitrate = floor( $maxBits / $duration ); - if ( $options[ 'no-audio' ] ) { + if ( $options[ 'no-audio' ] || count( $audioTracks ) == 0 ) { $audio = [ '-an' ]; } else { $audioBitrate = 96 * 1000;