From b891728d1845ba129d7b61a25900d3f31a2ebc4a Mon Sep 17 00:00:00 2001 From: Steven Robertson Date: Sat, 2 Jun 2012 10:09:38 -0700 Subject: [PATCH] Add some helper scripts --- scripts/convert.sh | 17 +++++++++++++++++ scripts/downsample.sh | 15 +++++++++++++++ scripts/encode.sh | 19 +++++++++++++++++++ scripts/graph.py | 8 ++++++++ 4 files changed, 59 insertions(+) create mode 100755 scripts/convert.sh create mode 100755 scripts/downsample.sh create mode 100755 scripts/encode.sh create mode 100644 scripts/graph.py diff --git a/scripts/convert.sh b/scripts/convert.sh new file mode 100755 index 0000000..0d96d59 --- /dev/null +++ b/scripts/convert.sh @@ -0,0 +1,17 @@ +#!/bin/zsh + +convert () { + dir=$1 + [ -e $dir/NFRAMES ] || return + [ -e $dir/COMPLETE -a -e ref/$dir.ts ] && return + NFRAMES="$(cat $dir/NFRAMES)" + for i in `seq 1 $NFRAMES` + [ -e $dir/$(printf '%05d' $i).jpg ] || return + mencoder -mf fps=23.976 "mf://$dir/*.jpg" -ovc x264 \ + -x264encopts profile=high:bluray-compat:aud:crf=15:ref=4:level=4.1:threads=0 \ + -o $dir/ref.avi && \ + gst-launch-0.10 filesrc location=${dir}/ref.avi ! avidemux ! h264parse \ + ! mpegtsmux ! filesink location=ref/${dir}.ts && rm ${dir}/ref.avi && \ + touch $dir/COMPLETE +} +for dir in `ls --sort time -r | grep -v '.sh'`; do echo $dir; convert $dir; sleep 0.1 || break; done diff --git a/scripts/downsample.sh b/scripts/downsample.sh new file mode 100755 index 0000000..eed9c3c --- /dev/null +++ b/scripts/downsample.sh @@ -0,0 +1,15 @@ +#!/bin/zsh + +encode () { + [ ! -e "${dir}/ref.avi" ] && return + [ -e "downsampled/${dir}.ts" -a \ + "downsampled/${dir}.ts" -nt "${dir}/ref.avi" ] && return + ffmpeg -y -i $dir/ref.avi -vcodec libx264 -q 20 -g 360 -x264opts \ +crf=20:bluray-compat:aud:ref=4:level=4.1:threads=0:scenecut=-1:\ +vbv_maxrate=40000:vbv_bufsize=30000:vbv_init=0.95:nr=100 \ + -preset slow -profile high -vf scale=-1:540 /tmp/enc.avi && \ + gst-launch-0.10 filesrc location=/tmp/enc.avi ! avidemux ! h264parse \ + ! mpegtsmux ! filesink location=downsampled/${dir}.ts && rm /tmp/enc.avi +} + +for dir in `ls --sort time -r | grep -v '.sh'`; do encode $dir || break; done diff --git a/scripts/encode.sh b/scripts/encode.sh new file mode 100755 index 0000000..d4e42e8 --- /dev/null +++ b/scripts/encode.sh @@ -0,0 +1,19 @@ +#!/bin/zsh + +encode () { + echo $dir unpackt/${dir}-00.idx + [ ! -e "${dir}/ref.avi" ] && return + [ -e "unpackt/${dir}-00.idx" -a \ + "unpackt/${dir}-00.idx" -nt "${dir}/ref.avi" ] && return + echo $dir unpackt/${dir}-00.idx + ffmpeg -y -i $dir/ref.avi -vcodec libx264 -q 20 -g 360 -x264opts \ +crf=21:bluray-compat:aud:ref=4:level=4.1:threads=0:scenecut=-1:\ +vbv_maxrate=40000:vbv_bufsize=30000:vbv_init=0.95:nr=100 \ + -preset slow -profile high /tmp/enc.avi && \ + gst-launch-0.10 filesrc location=/tmp/enc.avi ! avidemux ! h264parse \ + ! mpegtsmux ! filesink location=unpackt/${dir}.ts && rm /tmp/enc.avi #&& \ + #ts_split /tmp/${dir}.ts unpackt/ && rm /tmp/${dir}.ts +} + +for dir in `ls --sort time -r | grep -v '.sh'`; do encode $dir || break; done + diff --git a/scripts/graph.py b/scripts/graph.py new file mode 100644 index 0000000..8c74fcc --- /dev/null +++ b/scripts/graph.py @@ -0,0 +1,8 @@ +import os, sys + +print 'digraph {' +for i in os.listdir(sys.argv[1] if len(sys.argv) > 1 else '.'): + parts = i.rsplit('.', 1)[0].split('=') + print ' -> '.join(parts[:2]) + # TODO: add label (optional section 3) +print '}'