Skip to content

Instantly share code, notes, and snippets.

@sinkers
Created July 11, 2014 04:12
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 1 You must be signed in to fork a gist
  • Save sinkers/c4d39960018bca3540d4 to your computer and use it in GitHub Desktop.
Save sinkers/c4d39960018bca3540d4 to your computer and use it in GitHub Desktop.
Script for multiple bitrate encoding with text on each bitrate for testing
#!/bin/sh
# encode_bitrate_overlay.sh
#
#
# Created by Andrew Sinclair on 11/07/2014.
#
#!/bin/bash
VIDSOURCE=$1
OUTNAME=$2
RESOLUTION1="320x180"
RESOLUTION2="512x288"
RESOLUTION3="640x360"
RESOLUTION4="960x540"
RESOLUTION5="1024x576"
RESOLUTION6="1280x720"
RESOLUTION7="1920x1080"
BITRATE1="400000"
BITRATE2="800000"
BITRATE3="1000000"
BITRATE4="1200000"
BITRATE5="1400000"
BITRATE6="2000000"
BITRATE7="4000000"
# Set this to a font file on your system
FONTFILE="/opt/X11/share/fonts/TTF/Vera.ttf"
FONTSIZE="40"
FONTCOLOR="black"
echo "Encoding $VIDSOURCE"
AUDIO_OPTS="-c:a libfdk_aac -b:a 160000 -ac 2"
AUDIO_OPTS2="-c:a libfdk_aac -b:a 640000 -ac 2"
# Change the preset for better quality e.g. to slow or medium, ultrafast is just for testing the output quickly
# TODO add options for keyframe intervals for best adaptive segmentation
VIDEO_OPTS1="-c:v libx264 -vprofile main -preset ultrafast"
VIDEO_OPTS2="-c:v libx264 -vprofile main -preset ultrafast"
VIDEO_OPTS3="-c:v libx264 -vprofile main -preset ultrafast"
OUTPUT_HLS="-f mp4"
~/Desktop/workspace/ffmpeg-mac/FFmpeg/ffmpeg -i $VIDSOURCE -y \
$AUDIO_OPTS -vf "drawtext=fontfile='${FONTFILE}':text='$RESOLUTION1 ${BITRATE1}bps':fontsize=${FONTSIZE}:fontcolor=${FONTCOLOR}:x=100:y=100:box=1" -s $RESOLUTION1 $VIDEO_OPTS1 -b:v $BITRATE1 $OUTPUT_HLS ${OUTNAME}_${BITRATE1}.mp4 \
$AUDIO_OPTS -vf "drawtext=fontfile='${FONTFILE}':text='$RESOLUTION2 ${BITRATE2}bps':fontsize=${FONTSIZE}:fontcolor=${FONTCOLOR}:x=100:y=100:box=1" -s $RESOLUTION2 $VIDEO_OPTS2 -b:v $BITRATE2 $OUTPUT_HLS ${OUTNAME}_${BITRATE2}.mp4 \
$AUDIO_OPTS2 -vf "drawtext=fontfile='${FONTFILE}':text='$RESOLUTION3 ${BITRATE3}bps':fontsize=${FONTSIZE}:fontcolor=${FONTCOLOR}:x=100:y=100:box=1" -s $RESOLUTION3 $VIDEO_OPTS3 -b:v $BITRATE3 $OUTPUT_HLS ${OUTNAME}_${BITRATE3}.mp4 \
$AUDIO_OPTS2 -vf "drawtext=fontfile='${FONTFILE}':text='$RESOLUTION4 ${BITRATE4}bps':fontsize=${FONTSIZE}:fontcolor=${FONTCOLOR}:x=100:y=100:box=1" -s $RESOLUTION4 $VIDEO_OPTS3 -b:v $BITRATE4 $OUTPUT_HLS ${OUTNAME}_${BITRATE4}.mp4 \
$AUDIO_OPTS2 -vf "drawtext=fontfile='${FONTFILE}':text='$RESOLUTION5 ${BITRATE5}bps':fontsize=${FONTSIZE}:fontcolor=${FONTCOLOR}:x=100:y=100:box=1" -s $RESOLUTION5 $VIDEO_OPTS3 -b:v $BITRATE5 $OUTPUT_HLS ${OUTNAME}_${BITRATE5}.mp4 \
$AUDIO_OPTS2 -vf "drawtext=fontfile='${FONTFILE}':text='$RESOLUTION6 ${BITRATE6}bps':fontsize=${FONTSIZE}:fontcolor=${FONTCOLOR}:x=100:y=100:box=1" -s $RESOLUTION6 $VIDEO_OPTS3 -b:v $BITRATE6 $OUTPUT_HLS ${OUTNAME}_${BITRATE6}.mp4 \
$AUDIO_OPTS2 -vf "drawtext=fontfile='${FONTFILE}':text='$RESOLUTION7 ${BITRATE7}bps':fontsize=${FONTSIZE}:fontcolor=${FONTCOLOR}:x=100:y=100:box=1" -s $RESOLUTION7 $VIDEO_OPTS3 -b:v $BITRATE7 $OUTPUT_HLS ${OUTNAME}_${BITRATE7}.mp4 \
@sinkers
Copy link
Author

sinkers commented Jul 11, 2014

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment