Encode-ng.sh

From digital-bit.ch's wiki
Jump to: navigation, search

encode-ng.sh

#!/bin/sh
# encode-ng.sh - version 0.0.1 26/08/2008
# based on encode.sh - version 0.0.5
# nice modification by smg/gentoo.de/freenode
#
#      Converts all avis in directory to DVD or 
#	SVCD BIN file with cuesheet.
#	VCD and burning will be implemented soon.
# 	Just loosy script optimized for private use
#	nice modification by smg
#
#      Needed packages (gentoo style)
#      media-video/transcode
#      media-video/mjpegtools
#      media-video/vcdimager
#	app-cdr/cdrdao
#	media-video/mplayer
#
#      feel free to distribute or change code
#       mail: t4c[at]ghcif[dot]de


# ERROR Constants
 
E_EXIT_SUCCESS=0
E_MISSING_TOOLS=23
E_UNEXPECTED_ERROR=42

# Cleans up build environment

cleanup() {

   echo -n "Cleanup ${1}? (y/n): "
   read answer

   case $answer in
       y*|Y*)
           rm -iv "${1}"
           rm -iv "${1%.*}.bin"
           exit $E_EXIT_SUCCESS
           ;;
       *)
           exit $E_EXIT_SUCCESS
           ;;
   esac

}

# Burn the images

burn() {

   echo -n "Ready to burn ${1}? (y/n): "
   read answer

   case $answer in
       y*|Y*)
           $CDRDAO write --device 0,1,0 --driver generic-mmc-raw --speed 8 "${1}" # to be set up
           ;;
       *)
           cleanup "${1}"
           ;;
   esac

}

# Check clean build environment

check_environment() {

   echo "(!!!) Warning: If you've not set your burning device now, hit CTRL-C to abort and set appropriate  device + speed (!!!)"
   for count in {5..1}; do echo -n "${count}.. "; sleep 1; done

   TRANSCODE=$(whereis transcode | awk -F: '{print $2}' | cut -d ' ' -f 2)
   MPLAYER=$(whereis mplayer | awk -F: '{print $2}' | cut -d ' ' -f 2)
   MP2ENC=$(whereis mp2enc | awk -F: '{print $2}' | cut -d ' '  -f 2)
   MPLEX=$(whereis mplex | awk -F: '{print $2}' | cut -d ' ' -f 2)
   VCDIMAGER=$(whereis vcdimager | awk -F: '{print $2}' | cut -d ' ' -f 2)
   CDRDAO=$(whereis cdrdao | awk -F: '{print $2}' | cut -d ' ' -f 2)
   tools=(transcode, mplayer, mp2enc, mplex, vcdimager, cdrdao)

   if [ -z "${TRANSCODE}" -o -z "${MPLAYER}" -o -z "${MP2ENC}" -o -z "${MPLEX}" -o -z "${VCDIMAGER}" -o -z "${cdrdao}" ]; then
       echo - "Your are missing one of the follow tools: ${tools}. Please verify you have installed all!"
       exit $E_MISSING_TOOLS
   fi

   encode

}


# Encode to fit VCD standard

encode vcd() {

# to be implemented

}

# Encode to fit SVCD standard

encode_svcd() {

for i in *\.avi; do

       ORIGINAL=$(sed "s/.avi//" <<< "${i}")
       nice -20 $TRANSCODE -i "${ORIGINAL}.avi" -x auto,auto -y ffmpeg,mp2 -F svcd -E 44100,16,2 -o "${ORIGINAL}"
       nice -20 $MPLAYER -vo null -ao pcm "${ORIGINAL}.avi"
   nice -20 mv audiodump.wav "${ORIGINAL}.wav"
   nice -20 $MP2ENC -r 44100 -b 192 -o "${ORIGINAL}.mpa" < "${ORIGINAL}.wav" 
   nice -20 $MPLEX -f 4 -o "${ORIGINAL}.mpg" "${ORIGINAL}.m2v" "${ORIGINAL}.mpa"
       nice -20 $VCDIMAGER -t svcd -v "${ORIGINAL}.mpg" -c "${ORIGINAL}.cue" -b "${ORIGINAL}.bin"
   rm -iv ${ORIGINAL}|>.wav
   rm -iv ${ORIGINAL}|>.mp2
   rm -iv ${ORIGINAL}|>.mpa
   rm -iv ${ORIGINAL}|>.mpg

   burn "${ORIGINAL}.bin"

done

}

# Encode to fit DVD standard

encode_dvd() {

for i in *\.avi; do

   ORIGINAL=$(sed "s/.avi//" <<< "${i}")
   nice -20 $TRANSCODE -i $ORIGINAL.avi -y mpeg -F d -x auto,auto -E 44100 -b 128 -o $ORIGINAL
   nice -20 $MPLEX -f 9 -o $ORIGINAL.mpg $ORIGINAL.m2v $ORIGINAL.mpa

   # burn to be implemented

done

}

# vcd/svcd/dvd - make a choise

choise() {

   echo -n "You want to create VCD/SVCD or DVD? Choise: "
   read answer
   case $answer in
       vcd|VCD)
           encode_vcd
           ;;
       svcd|SVCD)
           encode_svcd
           ;;
       dvd|DVD)
           encode_dvd
           ;;
       *)
           exit $E_UNEXPECTED_ERROR
           ;;
   esac

}

# main method

perform() {

   if [ "${1}" -e "--force"]; then
       choise
   else
       check_environment && choise
   fi

}

perform

# E-O-F

powered by

    ip-exchange.de

Personal tools