Skip to content

Instantly share code, notes, and snippets.

@ptomato
Created April 7, 2015 18:30
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save ptomato/ac2295714f699b72c2a9 to your computer and use it in GitHub Desktop.
Save ptomato/ac2295714f699b72c2a9 to your computer and use it in GitHub Desktop.
#!/bin/bash
INFILE=$1
VIDEXT=webm
OUTFILE="$INFILE.$VIDEXT"
VIDEO_BITRATE=850k # higher is better quality
OUTPUT_RES=1280x720
CQ_MODE=10 # lower is better quality - VP9 only, -crf $CQ_MODE
AUDIO_QUALITY=4 # higher is better quality
AUDIO_SAMPLE_RATE=44100 # higher is better quality
AUDIO_TRACKS=1 # 2 for stereo
GOP=150 # affects seek points; lower = better seeking but bigger file
START=`date +%s`
echo "starting to convert $INFILE"
avconv -y \
-i $INFILE \
-c:v libvpx-vp9 \
-b:v $VIDEO_BITRATE \
-crf $CQ_MODE \
-g $GOP \
-s $OUTPUT_RES \
-qmin 0 -qmax 50 \
-c:a libvorbis \
-q:a $AUDIO_QUALITY \
-ar $AUDIO_SAMPLE_RATE \
-ac $AUDIO_TRACKS \
$OUTFILE
END=`date +%s`
ELAPSED=$(($END-$START))
INFILE_SIZE=`ls -lG $INFILE | cut -f4 -d' '`
OUTFILE_SIZE=`ls -lG $OUTFILE | cut -f4 -d' '`
INFILE_SIZE_HUMAN=`ls -lGh $INFILE | cut -f4 -d' '`
OUTFILE_SIZE_HUMAN=`ls -lGh $OUTFILE | cut -f4 -d' '`
PERCENTAGE=`echo '100 *' $OUTFILE_SIZE / $INFILE_SIZE | bc`
echo "$ID: Original size: $INFILE_SIZE_HUMAN Transcoded size: $OUTFILE_SIZE_HUMAN ($PERCENTAGE% of original)"
echo "$ID: `date -u -d @"$ELAPSED" +'%-H:%M:%S'` elapsed."
V=0
VERBOSE = $(VERBOSE_$(V))
VERBOSE_0 = @echo " GEN $@";
VERBOSE_1 =
VIDEXT = webm
video_names = \
endless-01-desktop.m4v endless-08-offline.m4v \
endless-02-folders.m4v endless-09-writer.m4v \
endless-03-programs.m4v endless-10-video-player.m4v \
endless-04-wifi.m4v endless-11-photos-and-music.m4v \
endless-05-files.m4v endless-12-social-bar.m4v \
endless-06-browser.m4v endless-13-printers.m4v \
endless-07-windows.m4v
converted_video_names = $(addsuffix .$(VIDEXT),$(video_names))
videos = \
$(addprefix es-compressed/,$(converted_video_names)) \
original/Tutorial_1.mov.webm \
original/Tutorial_2.mov.webm \
original/Tutorial_3.mov.webm \
original/Tutorial_4.mov.webm \
original/Tutorial_5.mov.webm \
original/Tutorial_6.mov.webm \
original/Tutorial_7.mov.webm \
original/Tutorial_8.mov.webm \
original/Tutorial_9.mov.webm \
original/Tutorial_10.mov.webm \
original/Tutorial_11.mov.webm \
original/Tutorial_12.mov.webm \
original/Tutorial_13.mov.webm
#V $(addprefix en-compressed/,$(converted_video_names)) \
all: $(videos)
clean:
rm logs/* \
en-compressed/*.$(VIDEXT) \
es-compressed/*.$(VIDEXT) \
original/*.$(VIDEXT)
%.$(VIDEXT):
$(VERBOSE)mkdir -p logs/ && \
./convert-help.sh $* > logs/$*.log && \
tail -n2 logs/$*.log
.PHONY: all clean
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment