#!/bin/sh # This script uses GStreamer (gst-launch) to convert a DV PAL input file to 4 theora streams in parallel. # The four streams are named ${outfile}-sml.ogg -med.ogg -lrg.ogg and -archive.ogg # small: 384x288@15fps low quality settings # medium: 384x288@15fps medium quality settings # lrg: 720x576@15fps, medium quality settings # archive: 720x576@25fps, maximum quality settings if [ $# -lt 2 ]; then echo "dv2ogg-all infile.dv outfile" exit 1 fi INFILE=$1 shift OUTFILE=$1 shift QUEUE="queue max-size-time=5000000000 max-size-buffers=0 max-size-bytes=0" gst-launch filesrc location=$INFILE ! dvdec name=dv .video ! \ { $QUEUE ! progressreport name=video ! video/x-raw-yuv ! ffmpegcolorspace name=f1 ! \ deinterlace ! video/x-raw-yuv,framerate=25.0 ! videorate ! tee name=vr ! \ video/x-raw-yuv,framerate=15.0 ! ffmpegcolorspace name=f2 ! \ gdkpixbufscale method=3 ! video/x-raw-rgb,width=384,height=288 ! ffmpegcolorspace ! tee name=vidout } \ { dv.audio ! queue ! progressreport name=audio ! audioconvert ! audioscale ! audio/x-raw-int,rate=32000 ! \ audioconvert ! tee name=audout } \ \ { vidout. ! $QUEUE ! theoraenc quality=8 ! $QUEUE name=q1 }\ { audout. ! $QUEUE ! rawvorbisenc managed=true quality=0.15 ! $QUEUE name=q2 } \ { q1. ! oggmux name=mux-sml ! progressreport name=small ! filesink location=${OUTFILE}-sml.ogg q2. ! mux-sml. } \ \ { vidout. ! $QUEUE ! theoraenc quality=32 ! $QUEUE name=q3 } \ { audout. ! $QUEUE ! rawvorbisenc managed=true quality=0.20 ! $QUEUE name=q4 } \ { q3. ! oggmux name=mux-med ! progressreport name=medium ! filesink location=${OUTFILE}-med.ogg q4. ! mux-med. } \ \ { vr. ! $QUEUE ! theoraenc quality=24 ! $QUEUE name=q5 }\ { audout. ! $QUEUE ! rawvorbisenc managed=true quality=0.20 ! $QUEUE name=q6 } \ { q5. ! oggmux name=mux-large ! progressreport name=large ! filesink location=${OUTFILE}-lrg.ogg q6. ! mux-large. } \ \ { vr. ! $QUEUE ! ffmpegcolorspace ! theoraenc quality=63 ! $QUEUE name=q7 }\ { audout. ! $QUEUE ! rawvorbisenc managed=true quality=0.20 ! $QUEUE name=q8 } \ { q7. ! oggmux name=mux-archive ! progressreport name=archive ! filesink location=${OUTFILE}-archive.ogg q8. ! mux-archive. }