summaryrefslogtreecommitdiff
path: root/convert-to-webm
blob: bb913c52dcc0c517dd0698c0fa373d6688dd2aa1 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
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