#!/bin/bash SRC=$HOME/measurements/source/bbb_720p.mov OUT=$HOME/measurements/encoded LOG=$HOME/measurements/logs mkdir -p "$OUT" "$LOG" : > $LOG/encode.log encode() { local label=$1; shift local t0=$(date +%s) echo "=== $label START $(date -Iseconds) ===" | tee -a $LOG/encode.log ffmpeg -hide_banner -ss 0 -t 60 -i "$SRC" -pix_fmt yuv420p -an -y "$@" > $LOG/encode_$label.log 2>&1 local rc=$? local t1=$(date +%s) echo "=== $label END $(date -Iseconds) elapsed=$((t1-t0))s rc=$rc ===" | tee -a $LOG/encode.log } encode h264 -c:v libx264 -preset medium -crf 23 $OUT/bbb_60s_720p.h264.mp4 encode hevc -c:v libx265 -preset fast -crf 28 $OUT/bbb_60s_720p.hevc.mp4 encode mpeg2 -c:v mpeg2video -qscale:v 4 -f mpegts $OUT/bbb_60s_720p.mpeg2.ts encode vp8 -c:v libvpx -crf 30 -b:v 1500k -threads 8 -cpu-used 4 $OUT/bbb_60s_720p.vp8.webm encode vp9 -c:v libvpx-vp9 -crf 30 -b:v 0 -threads 8 -cpu-used 4 -row-mt 1 -tile-columns 2 $OUT/bbb_60s_720p.vp9.webm echo "=== ALL ENCODES DONE $(date -Iseconds) ===" | tee -a $LOG/encode.log ls -la $OUT/ | tee -a $LOG/encode.log