From ef7c1605a027b52bbff1b01ea693b60f53fa3a71 Mon Sep 17 00:00:00 2001 From: yuzu-eva Date: Thu, 8 May 2025 14:01:37 +0200 Subject: initial commit --- convert-to-webm | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) create mode 100755 convert-to-webm (limited to 'convert-to-webm') diff --git a/convert-to-webm b/convert-to-webm new file mode 100755 index 0000000..bb913c5 --- /dev/null +++ b/convert-to-webm @@ -0,0 +1,25 @@ +#!/usr/bin/env bash + +# set output directory +OUTPUT_DIR=$HOME/vids + +# get filename without extension +filename=$(basename -- "$1") +filename="${filename%.*}" + +# set target file size in bits (8192kB * N, in this case 8MB) +# might refactor this into a variable +max_size=$((8388608*6)) + +# get video duration +duration=$(ffprobe -v error -show_entries format=duration -of default=noprint_wrappers=1:nokey=1 "$1" | cut -d'.' -f1) + +# calculate target bitrate +# using default audio bitrate for vorbis (96kb/s) +audio_rate=96000 +bitrate=$(((max_size / duration) - audio_rate)) + +ffmpeg -y -i "$1" -pass 1 -s 1280x720 -c:v libvpx-vp9 -crf 1 -maxrate:v "$bitrate" -b:v "$bitrate" -an -g 128 -f null /dev/null && \ +ffmpeg -y -i "$1" -pass 2 -s 640x480 -c:v libvpx-vp9 -crf 1 -maxrate:v "$bitrate" -b:v "$bitrate" -c:a libvorbis -b:a "$audio_rate" -g 128 "${OUTPUT_DIR}/$filename.webm" + +rm ffmpeg2pass-0.log -- cgit v1.2.3