[READ-ONLY] Mirror of https://github.com/probablykasper/my-bash-scripts. My personal bash scripts
cli
0

Configure Feed

Select the types of activity you want to include in your feed.

to: Copy codec when converting audio containers

For example, .webm -> .opus copies the audio codec if possible

Kasper (Nov 29, 2025, 3:47 AM +0100) 61e5f9cb 932aab16

+25 -9
+25 -9
bin/to
··· 133 133 OPTIONS+=("-preset" "medium") 134 134 ;; 135 135 opus) 136 + COPY_AUDIO_IF_POSSIBLE=true 136 137 if [[ $AUDIO_BITRATE_CHANGED != true ]]; then 137 - OPTIONS+=("-b:a" "256k") 138 + NONCOPY_AUDIO_OPTIONS=("-b:a" "256k") 138 139 fi 139 140 ;; 140 141 mp3) 142 + COPY_AUDIO_IF_POSSIBLE=true 141 143 if [[ $AUDIO_BITRATE_CHANGED != true ]]; then 142 - OPTIONS+=("-b:a" "320k") 144 + NONCOPY_AUDIO_OPTIONS=("-b:a" "320k") 143 145 fi 144 146 ;; 145 147 mp3:*|opus:*) ··· 230 232 231 233 echo "Converting to $FORMAT: `cyan $FILE`" 232 234 233 - # custom options 234 - if [[ $VERBOSE == true ]]; then 235 - FILE_ECHO=$(printf "%q" "${FILE}") 236 - OPTIONS_ECHO=$(printf " %q" "$OPTIONS[@]") 237 - NEW_FILE_ECHO=$(printf "%q" "$FILE_WITHOUT_EXT converted.$FORMAT") 238 - 235 + # Prepare final options with codec copy if possible 236 + FINAL_OPTIONS=("${OPTIONS[@]}") 237 + 238 + if [[ $COPY_AUDIO_IF_POSSIBLE == true && $AUDIO_BITRATE_CHANGED != true ]]; then 239 + CODEC=$(ffprobe -v error -select_streams a:0 -show_entries stream=codec_name -of csv=p=0 "$FILE") 240 + FILE_EXT="${FILE##*.}" 241 + # Copy the codec if possible, but only when converting to a different container 242 + if [[ "$CODEC" == "$FORMAT" && "$FILE_EXT" != "$FORMAT" ]]; then 243 + FINAL_OPTIONS+=("-c:a" "copy") 244 + else 245 + FINAL_OPTIONS+=("${NONCOPY_AUDIO_OPTIONS[@]}") 246 + fi 247 + fi 248 + 249 + # custom options 250 + if [[ $VERBOSE == true ]]; then 251 + FILE_ECHO=$(printf "%q" "${FILE}") 252 + OPTIONS_ECHO=$(printf " %q" "$FINAL_OPTIONS[@]") 253 + NEW_FILE_ECHO=$(printf "%q" "$FILE_WITHOUT_EXT converted.$FORMAT") 254 + 239 255 if [[ $CMD == "ffmpeg" ]]; then 240 256 echo Command: `green ffmpeg -i "$FILE_ECHO""$OPTIONS_ECHO" "$NEW_FILE_ECHO"` 241 257 elif [[ $CMD == "magick" ]]; then ··· 244 260 fi 245 261 246 262 if [[ $CMD == "ffmpeg" ]]; then 247 - ffmpeg -i "$FILE" "${OPTIONS[@]}" "$NEW_FILE_TEMP" || { echo `red Error:` Conversion failed; exit 1; } 263 + ffmpeg -i "$FILE" "${FINAL_OPTIONS[@]}" "$NEW_FILE_TEMP" || { echo `red Error:` Conversion failed; exit 1; } 248 264 elif [[ $CMD == "magick" ]]; then 249 265 magick "${OPTIONS[@]}" "$FILE""[0]" "$NEW_FILE_TEMP" || { echo `red Error:` Conversion failed; exit 1; } 250 266 fi