]> git.phdru.name Git - audio-cdr-video.git/blob - video/m_encode
Initail import
[audio-cdr-video.git] / video / m_encode
1 #! /bin/sh
2
3 if [ -z "$1" ]; then
4    echo "Usage: [vcodec=s] [vbitrate=n] [vscale=s] [aid=n] [acodec=s] [abitrate=n] [ascale=s] [pass=n] $0 [-mencoder_options] input.avi..."
5    exit 1
6 fi
7
8 if [ -z "$vcodec" ]; then
9    vcodec=lavc
10 else
11    vcodec="$vcodec"
12 fi
13
14 if [ -z "$vbitrate" ]; then
15    vbitrate=1600
16 else
17    vbitrate="$vbitrate"
18 fi
19
20 if [ -n "$vscale" ]; then
21    vscale="-vf scale=$vscale"
22 fi
23
24 if [ -z "$acodec" ]; then
25    acodec=mp3lame
26 else
27    acodec="$acodec"
28 fi
29
30 if [ -z "$abitrate" ]; then
31    abitrate=256
32 else
33    abitrate="$abitrate"
34 fi
35
36 if [ -n "$ascale" ]; then
37    ascale="-af volume=$ascale"
38 fi
39
40 if [ "$vcodec" = lavc ]; then
41    vopts="-lavcopts vcodec=mpeg4:vbitrate=$vbitrate:autoaspect"
42
43 elif [ "$vcodec" = lavc-hq ]; then
44    vcodec=lavc
45    vopts="-lavcopts vcodec=mpeg4:vbitrate=$vbitrate:autoaspect:mbd=2:trell:v4mv:last_pred=2:dia=-1:vmax_b_frames=2:vb_strategy=1:cmp=3:subcmp=3:precmp=0:vqcomp=0.6:turbo"
46
47 elif [ "$vcodec" = lavc-vhq ]; then
48    vcodec=lavc
49    vopts="-lavcopts vcodec=mpeg4:vbitrate=$vbitrate:autoaspect:mbd=2:trell:v4mv:last_pred=3:dia=2:vmax_b_frames=2:vb_strategy=1:cmp=2:subcmp=2:precmp=2:mv0:cbp:predia=2:preme=2:qns=2"
50
51 elif [ "$vcodec" = x264 ]; then
52    vopts="-x264encopts bitrate=$vbitrate"
53
54 elif [ "$vcodec" = x264-hq ]; then
55    vcodec=x264
56    vopts="-x264encopts bitrate=$vbitrate:subq=5:8x8dct:frameref=2:bframes=3:b_pyramid:weight_b"
57
58 elif [ "$vcodec" = x264-vhq ]; then
59    vcodec=x264
60    vopts="-x264encopts bitrate=$vbitrate:subq=6:8x8dct:frameref=5:bframes=3:b_pyramid:weight_b:partitions=all:me=umh"
61
62 elif [ "$vcodec" = xvid ]; then
63    vopts="-xvidencopts bitrate=$vbitrate"
64
65 elif [ "$vcodec" = xvid-hq ]; then
66    vcodec=xvid
67    vopts="-xvidencopts bitrate=$vbitrate:chroma_opt:vhq=2:bvhq=1:quant_type=mpeg"
68
69 elif [ "$vcodec" = xvid-vhq ]; then
70    vcodec=xvid
71    vopts="-xvidencopts bitrate=$vbitrate:chroma_opt:vhq=4:bvhq=1:quant_type=mpeg"
72
73 elif [ "$vcodec" = copy ]; then
74    vopts=""
75
76 else
77    echo "Unknown video codec $vcodec; known codecs are {lavc,x264,xvid}[-[v]hq], copy" >&2
78    exit 1
79 fi
80
81 if [ "$acodec" = mp3lame ]; then
82    aopts="-lameopts cbr:br=$abitrate:q=0"
83 elif [ "$acodec" = copy ]; then
84    aopts=""
85 else
86    echo "Unknown audio codec $acodec; known codecs are mp3lame and copy" >&2
87    exit 1
88 fi
89
90 if [ "$aid" ]; then
91    aopts="$aopts -aid $aid"
92 fi
93
94 if [ -z "$pass" ]; then
95    pass=1
96 else
97    pass="$pass"
98 fi
99
100 if [ "$vcodec" = lavc ]; then
101    vpass=vpass
102 elif [ "$vcodec" = x264 ]; then
103    vpass=pass
104 elif [ "$vcodec" = xvid ]; then
105    vpass=pass
106 fi
107
108 if [ "$pass" -eq 1 ]; then
109    exec mencoder -ovc "$vcodec" $vopts          $vscale -oac "$acodec" $aopts $ascale -o output.avi "$@"
110
111 elif [ "$pass" -eq 2 ]; then
112
113         mencoder -ovc "$vcodec" $vopts:$vpass=1 $vscale -nosound                      -o /dev/null "$@" &&
114    exec mencoder -ovc "$vcodec" $vopts:$vpass=2 $vscale -oac "$acodec" $aopts $ascale -o output.avi "$@"
115
116 elif [ "$pass" -eq 3 ]; then
117
118         mencoder -ovc "$vcodec" $vopts:$vpass=1 $vscale -nosound                      -o /dev/null "$@" &&
119         mencoder -ovc "$vcodec" $vopts:$vpass=3 $vscale -nosound                      -o /dev/null "$@" &&
120    exec mencoder -ovc "$vcodec" $vopts:$vpass=3 $vscale -oac "$acodec" $aopts $ascale -o output.avi "$@"
121                                        # pass=3 is not a typo!
122
123 else
124    echo "Can only do 1, 2 or 3 passes." >&2
125    exit 1
126 fi