Skip to content

Instantly share code, notes, and snippets.

@0mark
Last active December 21, 2015 08:59
Show Gist options
  • Save 0mark/6282256 to your computer and use it in GitHub Desktop.
Save 0mark/6282256 to your computer and use it in GitHub Desktop.
Recode video files, record from dvb
#!/bin/sh
if [ "$1" == "-h" ]; then
echo "recoder RESOLUTION QUALITY [crop] FILETYPE"
echo
echo "Resolutions:"
echo " llow: 170x* , mencoder"
echo " low: 320x* , mencoder"
echo " mid: 528x* , mencoder"
echo " high: 720x* , mencoder"
echo " 720: *x720 , mencoder"
echo " hd720: *x720 , ffmpeg"
echo " hd480: *x480 , ffmpeg"
echo " keep: *x* , mencoder"
echo " tv2wide: 1024x576, ffmpeg"
echo
echo "Qualities: (only with mencoder)"
echo " llq: 3.5"
echo " lq: 4.5"
echo " nq: 6.5"
echo " hq: 10, audio 8"
echo
echo "Crop uses mplayer to find and crop black borders. Only available with mencoder."
exit
fi
mkdir -p /home/mark/r
if [ "$3" == "crop" ]; then
cropcom="\`mplayer \\\"\"\$0\"\\\" -vo null -ao null -endpos 5 -vf cropdetect|cut -d '(' -f 2|cut -d ')' -f 1|grep crop|tail -1\`;crop=\\\"\$crop,\\\""
SRC="$4"
if [ $# -lt 4 ]; then
echo "Falsch"
exit 1
fi
else
cropcom="\\\"-vf \\\""
SRC="$3"
if [ $# -lt 3 ]; then
echo "Falsch"
exit 1
fi
fi
ENC="mplayer"
FMT="avi"
case "$1" in
llow)
MODE="-oac copy \${crop}denoise3d,pp=md,scale=170:-3 -ovc lavc -lavcopts vcodec=mpeg4:vhq"
;;
low)
MODE="-oac copy \${crop}denoise3d,pp=md,scale=320:-3 -ovc lavc -lavcopts vcodec=mpeg4:vhq"
;;
mid)
MODE="-oac copy \${crop}denoise3d,pp=md,scale=528:-3 -ovc lavc -lavcopts vcodec=mpeg4:vhq"
;;
high)
MODE="-oac copy \${crop}denoise3d,pp=md,scale=720:-3 -ovc lavc -lavcopts vcodec=mpeg4:vhq"
;;
720)
MODE="-oac copy \${crop}scale=-3:720 -ovc lavc -lavcopts vcodec=mpeg4:vhq"
;;
hd720)
ENC="ffmpeg"
FFMODE="-vtag DIVX -f avi -vcodec mpeg4 -vf \\\"scale=-1:720\\\" -b 1000000 -acodec libmp3lame -ab 160000 -ar 48000 -ac 2"
;;
sd480)
ENC="ffmpeg"
FFMODE="-vtag DIVX -f avi -vcodec mpeg4 -vf \\\"scale=-1:480\\\" -b 900000 -acodec libmp3lame -ab 120000 -ar 48000 -ac 2"
;;
sd320)
ENC="ffmpeg"
FFMODE="-vtag DIVX -f avi -vcodec mpeg4 -vf \\\"scale=-1:320\\\" -b 700000 -acodec libmp3lame -ab 120000 -ar 48000 -ac 2"
;;
keep)
MODE="-oac copy \${crop}denoise3d,pp=md -ovc lavc -lavcopts vcodec=mpeg4:vhq"
;;
tv2wide)
ENC="ffmpeg"
FFMODE="-vtag DIVX -f avi -vcodec mpeg4 -aspect 16:9 -s 1024x576 -b 1000000 -acodec libmp3lame -ab 160000 -ar 48000 -ac 2"
;;
palm)
ENC="ffmpeg"
FFMODE="-vtag DIVX -f avi -vcodec mpeg4 -vf "scale=320:-1" -vb 50000 -acodec libmp3lame -ab 50000 -ac 2"
;;
rockbox)
ENC="ffmpeg"
FMT="mpg"
FFMODE="-s 220x166 -vcodec mpeg2video -vb 200k -ab 128k -ar 44100 -acodec libmp3lame"
;;
esac
case "$2" in
hq)
MODE="$MODE:vqscale=3.5"
;;
nq)
MODE="$MODE:vqscale=4.5"
;;
lq)
MODE="$MODE:vqscale=6.5"
;;
llq)
MODE="$MODE:vqscale=10 -lameopts q=8:mode=3"
;;
esac
tmpf=/tmp/$USER-recoder-$$.sh
case "$ENC" in
mplayer)
ls *.$SRC | awk -F "[.]$SRC" "{print \"crop=$cropcom; nice mencoder $MODE \\\"\"\$1\".$SRC\\\" -o \\\"/home/mark/r/\"\$1\".$FMT\\\"\"}" > $tmpf
;;
ffmpeg)
ls *.$SRC | awk -F "[.]$SRC" "{print \"nice ffmpeg -i \\\"\"\$1\".$SRC\\\" $FFMODE \\\"/home/mark/r/\"\$1\".$FMT\\\"\"}" > $tmpf
;;
esac
sh $tmpf
rm $tmpf
#!/bin/sh
help() {
echo "recoder RESOLUTION QUALITY CHANNEL"
echo
echo "Resolutions:"
echo " llow: 170x* , mencoder"
echo " low: 320x* , mencoder"
echo " mid: 528x* , mencoder"
echo " high: 720x* , mencoder"
echo
echo "Qualities:"
echo " llq: 3.5"
echo " lq: 4.5"
echo " nq: 6.5"
echo " hq: 10, audio 8"
echo
exit
}
error() {
echo "Bad parameter. Try recorder -h"
exit 1
}
if [ "$1" == "-h" ]; then
help
fi
mkdir -p /home/mark/r
if [ $# -lt 3 ]; then
error
fi
ENC="mplayer"
FMT="avi"
case "$1" in
llow)
RES=160
;;
low)
RES=320
;;
mid)
RES=432
;;
high)
RES=576
;;
*)
error
;;
esac
case "$2" in
hq)
VBR=2000
;;
nq)
VBR=1400
;;
lq)
VBR=800
;;
llq)
VBR=400
;;
*)
error
;;
esac
mencoder -cache 4000 dvb://$3 -o "${3}_$(date +"%Y-%m-%d_%H%M")_$RES_$VBR.mp4" -oac mp3lame -lameopts br=112:cbr:mode=0 -ovc lavc -lavcopts vcodec=mpeg4:vhq:vbitrate=$VBR -vf scale=-10:$RES
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment