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
|