diff options
Diffstat (limited to 'convert-to-webm')
| -rwxr-xr-x | convert-to-webm | 25 |
1 files changed, 25 insertions, 0 deletions
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 |
