annotate TOOLS/encode2mpeglight @ 22381:6cabac4d35b5

tv driver loading rework. As a side effect "-tv driver=help" option is implemented.
author voroshil
date Thu, 01 Mar 2007 18:38:00 +0000
parents 21b938300bf7
children 37feaaf7b7b4
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
17507
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1 #!/bin/bash
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
2 #
20867
21b938300bf7 -vop has been deprecated a long time ago.
diego
parents: 20858
diff changeset
3 # Version: 0.6.3
17507
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
4 #
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
5 # Licence: GPL
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
6 #
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
7 # 2004-05-22 Giacomo Comes <encode2mpeg at users.sourceforge.net>
20858
4e8dbc741909 update to 0.6.2, patch by Giacomo Comes, comes naic edu
diego
parents: 19614
diff changeset
8 # 2006-11-06 <encode2mpeg at email.it>
17507
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
9 #
20858
4e8dbc741909 update to 0.6.2, patch by Giacomo Comes, comes naic edu
diego
parents: 19614
diff changeset
10 # Purpose: Convert anything MPlayer can play to AVI/VCD/SVCD/DVD MPEG
17507
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
11 #
20858
4e8dbc741909 update to 0.6.2, patch by Giacomo Comes, comes naic edu
diego
parents: 19614
diff changeset
12 # encode2mpeglight is free software; you can redistribute it and/or modify
17507
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
13 # it under the terms of the GNU General Public License as published by
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
14 # the Free Software Foundation; either version 2 of the License.
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
15
20858
4e8dbc741909 update to 0.6.2, patch by Giacomo Comes, comes naic edu
diego
parents: 19614
diff changeset
16 # encode2mpeglight is distributed in the hope that it will be useful,
17507
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
17 # but WITHOUT ANY WARRANTY; without even the implied warranty of
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
18 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
19 # GNU General Public License for more details.
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
20
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
21 # You should have received a copy of the GNU General Public License
20858
4e8dbc741909 update to 0.6.2, patch by Giacomo Comes, comes naic edu
diego
parents: 19614
diff changeset
22 # along with encode2mpeglight; if not, write to the Free Software
19614
36589811e5d0 The FSF changed postal address.
diego
parents: 17507
diff changeset
23 # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
17507
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
24
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
25
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
26 ###############################################################################
20858
4e8dbc741909 update to 0.6.2, patch by Giacomo Comes, comes naic edu
diego
parents: 19614
diff changeset
27 # encode2mpeglight is a program that can create VCD/SVCD/DVD MPEGs
17507
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
28 # and eventually extract VobSub subtitles from a DVD using only
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
29 # MEncoder/MPlayer.
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
30 #
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
31 # encode2mpeglight is a stripped release of encode2mpeg and therefore the
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
32 # code is redundant in several places, with many variables defined and
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
33 # used for no apparent reason. This cannot be avoided easily.
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
34 # A command line like:
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
35 # encode2mpeglight <encode2mpeglight options>
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
36 # will produce almost the same results as:
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
37 # encode2mpeg -mpeg -mpegonly <encode2mpeglight options>
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
38 #
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
39 # If you need more features like:
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
40 # - two or more audio streams, chapters, subtitles, menu
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
41 # - creation, burn and verification of the disk image
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
42 # - creation of MPEG-4 avi and subtitles for a hardware player
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
43 # and more, consider to use the full release (http://encode2mpeg.sf.net)
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
44 #
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
45 # encode2mpeglight is mainly tested with the stable release of MPlayer,
20858
4e8dbc741909 update to 0.6.2, patch by Giacomo Comes, comes naic edu
diego
parents: 19614
diff changeset
46 # I try to make it work with SVN too, but due to the "unstable" nature of
4e8dbc741909 update to 0.6.2, patch by Giacomo Comes, comes naic edu
diego
parents: 19614
diff changeset
47 # SVN, bugs may suddenly appear. If you find any, please report them to me.
17507
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
48 ###############################################################################
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
49
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
50 ###############################################################################
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
51 #### start
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
52 ###############################################################################
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
53 export LC_ALL=POSIX
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
54 set -B +f
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
55 shopt -u xpg_echo nullglob
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
56 PROGNAME=${0##*/}
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
57 PROGFILE=$(type -p "$0")
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
58 VERSION=$(awk '$2=="Version:"{print $3;exit}' <"$PROGFILE")
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
59 BROWSER=
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
60
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
61 ###############################################################################
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
62 #### some functions
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
63 ###############################################################################
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
64 OptionsText () {
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
65 echo
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
66 echo "Arguments enclosed in [ ] are optional"
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
67 }
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
68 ###############################################################################
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
69 ModeText () {
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
70 echo
20858
4e8dbc741909 update to 0.6.2, patch by Giacomo Comes, comes naic edu
diego
parents: 19614
diff changeset
71 echo "$PROGNAME defaults to encode2mpeg's MPEG Mode, the other modes are not"
4e8dbc741909 update to 0.6.2, patch by Giacomo Comes, comes naic edu
diego
parents: 19614
diff changeset
72 echo "available."
17507
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
73 }
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
74 ###############################################################################
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
75 usage () {
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
76 echo -e "Usage: $PROGNAME options source\nOptions:"
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
77 sed -n '/^#### PARSING/,/^done/!d;/^done/q;/^[ ]*-[^)]*)/,/#-/!d;s/)$//;s/) *#/ /;s/#-/# /;s/ *#L.$//;s/#//;p' "$PROGFILE"
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
78 ModeText
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
79 OptionsText
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
80 }
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
81 ###############################################################################
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
82 shortusage () {
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
83 echo -e "\n$PROGNAME v. $VERSION Copyright (C) 2004-2006 Giacomo Comes\n"
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
84 echo "This is free software; see the source for copying conditions. There is NO"
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
85 echo "warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE,"
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
86 echo "to the extent permitted by law."
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
87 echo
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
88 echo "Usage: $PROGNAME options source"
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
89 echo "Options:"
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
90 sed -n '/^#### PARSING/,/^done/!d;/^done/q;/^[ ]*-[^)]*)/!d;s/)$//;s/) *#/ /;s/ *#L.$//;p' "$PROGFILE"
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
91 OptionsText
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
92 }
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
93 ###############################################################################
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
94 mp_identify () {
20858
4e8dbc741909 update to 0.6.2, patch by Giacomo Comes, comes naic edu
diego
parents: 19614
diff changeset
95 mplayer -msglevel identify=6 -vo md5sum:outfile=/dev/null -ao null -nocache -frames 0 "$@" 2>/dev/null
4e8dbc741909 update to 0.6.2, patch by Giacomo Comes, comes naic edu
diego
parents: 19614
diff changeset
96 }
4e8dbc741909 update to 0.6.2, patch by Giacomo Comes, comes naic edu
diego
parents: 19614
diff changeset
97 ###############################################################################
4e8dbc741909 update to 0.6.2, patch by Giacomo Comes, comes naic edu
diego
parents: 19614
diff changeset
98 id_find () {
4e8dbc741909 update to 0.6.2, patch by Giacomo Comes, comes naic edu
diego
parents: 19614
diff changeset
99 local ID=$1
4e8dbc741909 update to 0.6.2, patch by Giacomo Comes, comes naic edu
diego
parents: 19614
diff changeset
100 shift
4e8dbc741909 update to 0.6.2, patch by Giacomo Comes, comes naic edu
diego
parents: 19614
diff changeset
101 mp_identify "$@" | awk -v id=$ID -F= '$1==id{t=$2}END{print t}'
17507
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
102 }
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
103 ###############################################################################
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
104 get_aspect () {
20858
4e8dbc741909 update to 0.6.2, patch by Giacomo Comes, comes naic edu
diego
parents: 19614
diff changeset
105 mplayer -vc -mpegpes, -vo null -ao null -nocache -frames 4 "$@" 2>/dev/null | sed '/^Movie-Aspect is/!d;s/.*Movie-Aspect is //;s/:.*//'
17507
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
106 }
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
107 ###############################################################################
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
108 mlistopt () {
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
109 mplayer -list-options 2>&1 | awk '$1=="Name"{m=1}{if(m&&$1!="Name"&&$1!=""&&$1!="Total:")print "\""$1"\""}'
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
110 }
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
111 ###############################################################################
20858
4e8dbc741909 update to 0.6.2, patch by Giacomo Comes, comes naic edu
diego
parents: 19614
diff changeset
112 do_log () {
17507
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
113 echo "$1"
20858
4e8dbc741909 update to 0.6.2, patch by Giacomo Comes, comes naic edu
diego
parents: 19614
diff changeset
114 ((LG)) && echo "$1" >>"$output".log || WARN="$WARN${WARN:+\n}$1"
17507
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
115 }
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
116 ###############################################################################
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
117 isarg () {
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
118 if [[ ${2:0:1} = - || ! $2 || $2 = help ]]; then
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
119 [[ ${2:0:1} = - ]] && echo "**ERROR: [$PROGNAME] invalid argument '$2' for option '$1'"
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
120 [[ ! $2 ]] && echo "**ERROR: [$PROGNAME] invalid null argument for option '$1'"
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
121 "$PROGFILE" -norc -l | sed '/^ '$1'$/,/^ -/!d' | sed '$d'
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
122 "$PROGFILE" -norc -l | sed '/^ '$1'[ |]/,/^ -/!d' | sed '$d'
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
123 exit 1
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
124 fi
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
125 if [[ $2 = doc ]]; then
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
126 show_html ${3:+$3.html}
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
127 exit
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
128 fi
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
129 }
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
130 ###############################################################################
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
131 pr_date () {
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
132 echo "[$(date '+%Y-%m-%d %H:%M:%S')]"
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
133 }
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
134 ###############################################################################
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
135 pr_time () {
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
136 date '+%j %H %M %S' | awk '{print $1*86400+$2*3600+$3*60+$4}'
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
137 }
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
138 ###############################################################################
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
139 get_abr () {
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
140 local INFO ABR
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
141 INFO=$(mp_identify "${MPLAYEROPT[@]}" ${dvddev:+-dvd-device "$dvddev"} "$@" | grep '^ID_')
20858
4e8dbc741909 update to 0.6.2, patch by Giacomo Comes, comes naic edu
diego
parents: 19614
diff changeset
142 ABR=$(echo "$INFO" | grep '^ID_AUDIO_BITRATE' | tail -1 | cut -f2 -d=)
17507
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
143 case $(echo "$INFO" | grep '^ID_AUDIO_CODEC' | cut -f2 -d=) in
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
144 dvdpcm) abr=$((abr+ABR/1024)) ;;
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
145 *) abr=$((abr+ABR/1000)) ;;
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
146 esac
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
147 }
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
148 ###############################################################################
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
149 get_pwd () {
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
150 pushd &>/dev/null "$1"
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
151 echo "$PWD/$2"
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
152 popd &>/dev/null
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
153 }
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
154 ###############################################################################
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
155 show_html () {
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
156 local i LIST HTML PREFIX OPTION INSTDOCDIR SRCDOCDIR
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
157 INSTDOCDIR=${PROGFILE%/bin/$PROGNAME}/share/doc/encode2mpeg
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
158 SRCDOCDIR=${PROGFILE%/$PROGNAME}/doc
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
159 if [[ -f $INSTDOCDIR/encode2mpeg.html ]]; then
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
160 HTML=$(get_pwd "$INSTDOCDIR" encode2mpeg.html)
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
161 elif [[ -f $SRCDOCDIR/encode2mpeg.html ]]; then
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
162 HTML=$(get_pwd "$SRCDOCDIR" encode2mpeg.html)
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
163 else
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
164 HTML="http://encode2mpeg.sourceforge.net"
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
165 fi
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
166 if [[ -f $INSTDOCDIR/html/$1 ]]; then
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
167 HTML=$(get_pwd "$INSTDOCDIR/html" $1)
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
168 elif [[ -f $SRCDOCDIR/html/$1 ]]; then
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
169 HTML=$(get_pwd "$SRCDOCDIR/html" $1)
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
170 elif [[ $1 && ! -d $INSTDOCDIR/html && ! -d $SRCDOCDIR/html ]]; then
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
171 HTML="http://encode2mpeg.sourceforge.net/html/$1"
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
172 fi
20858
4e8dbc741909 update to 0.6.2, patch by Giacomo Comes, comes naic edu
diego
parents: 19614
diff changeset
173 LIST=(mozilla seamonkey firefox)
17507
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
174 [[ ${HTML:0:1} = / ]] && PREFIX=file:// || PREFIX=
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
175 for ((i=0;i<${#LIST[*]};i++)); do
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
176 type ${LIST[i]} &>/dev/null && ${LIST[i]} -remote 'openURL('"$PREFIX$HTML"',new-tab)' 2>/dev/null && return
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
177 done
20858
4e8dbc741909 update to 0.6.2, patch by Giacomo Comes, comes naic edu
diego
parents: 19614
diff changeset
178 LIST=(mozilla firefox seamonkey opera konqueror epiphany galeon)
17507
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
179 if [[ $BROWSER ]]; then
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
180 type "$BROWSER" &>/dev/null && LIST=("$BROWSER") || echo "++ WARN: default browser '$BROWSER' not found, using builtin browser list"
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
181 fi
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
182 for ((i=0;i<${#LIST[*]};i++)); do
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
183 if type "${LIST[i]}" &>/dev/null; then
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
184 case ${LIST[i]} in
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
185 opera) OPTION=--newpage ;;
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
186 epiphany|galeon) OPTION=--new-tab ;;
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
187 *) OPTION= ;;
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
188 esac
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
189 "${LIST[i]}" $OPTION "$HTML" &
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
190 return
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
191 fi
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
192 done
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
193 }
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
194
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
195 ###############################################################################
20858
4e8dbc741909 update to 0.6.2, patch by Giacomo Comes, comes naic edu
diego
parents: 19614
diff changeset
196 #### variable initialization
17507
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
197 ###############################################################################
20858
4e8dbc741909 update to 0.6.2, patch by Giacomo Comes, comes naic edu
diego
parents: 19614
diff changeset
198 abr=;asr=;vbr=;vfr=;videonorm=;frameformat=;output=;audioformat=;mp1=;mp2=;mp3=;ac3=;dts=;lpcm=;aac=;normalize=;volume=;multiaudio=;mpegchannels=;quiet=;resume=;blank=;encode=;ofps=;mono=;usesbr=;sbr=;clear=;keep=;frames=;avisplit=;channels=;vcustom=;acustom=;cpu=;interlaced=;mpegaspect=;intra_matrix=;inter_matrix=;fixavi=;mpeg=;crop=;audioid=;dvdaudiolang=;bframes=;firstchap=;lastchap=;dvdtrack=;addchapter=;cdi=;mpegfixaspect=;nowait=;vf=;frameres=;trick=;autocrop=;afm=;cache=;removecache=;turbo=;dvddev=;srate=;endpos=;fourcc=;menu=;menubg=;dvdtitle=;rotate=;menuvtsbg=;autosync=;telecine=;AFMT=;telesrc=;vcodec=;vrfyumnt=;burniso=;verify=;fixasync=;removedir=;MPGRES=;GOP=;TXTSUBOPT=;usespeed=;testmca=;chconf=;noodml=;pictsrc=;slideaudio=;audioonly=;norc=;rawsub=;vobsubsrc=;af=;lavf=;subrender=;harddup=;overburn=
17507
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
199 unset encsid encsdx encsla addsub addsdx addsla savecache txtsub txtsubopts
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
200 zoom=0
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
201 scale=1
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
202 fast=1
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
203 MAXSTEP=6 # burn is the default
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
204 step=$MAXSTEP
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
205 split=0
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
206 vbitrate=16000
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
207 mpegmbr=0
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
208 overscan=0
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
209 iter=0
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
210 bakiter=0
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
211 hispeed=0
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
212 BGTITLE=1
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
213 TANIM=0
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
214 TFMT=png
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
215 TMODE=0
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
216 TKFRM=0
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
217 TSECS=5
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
218 TPART=4
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
219 TPARTSEC=15
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
220 TFONTSIZE=1
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
221 TFONTBG=1
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
222 TLINES=2
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
223 TCPR=2
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
224 MENUERR=0
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
225 DVDPLAY=0
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
226 MENUOS=0
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
227 TSETB=1
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
228 DVDFS=1
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
229 VTSMBG=0
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
230 menufix=0
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
231 cdburndevice=0,0,0
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
232 dvdburndevice=/dev/cdrecorder
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
233 fsize=;fint=;ffrac=;fpre=;audiosize=0
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
234 ASPECT=(1 1 4/3 16/9 2.21)
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
235 CH6LIST=(l r ls rs c lfe)
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
236 TOOL=
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
237 MPEG2ENCOPT=;YUVSCALEROPT=;YUVDENOISE=;MPLEXOPT=;VCDIMAGEROPT=;DVDAUTHOROPT=;CDRDAOOPT=;GROWISOFSOPT=;MUSICINOPT=
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
238 unset MPLAYEROPT MPLEXSTREAM MENCODEROPT
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
239 LPCMPAR=
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
240 SUBLANG=
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
241 unset SUBTEXT AUDIOTEXT CHAPTERTEXT TITLESET EXTWAV PROFILE MSRC
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
242 unset CLEAN
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
243 DEBUG=0
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
244 LAVC=
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
245 WARN=
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
246 LOG=
20858
4e8dbc741909 update to 0.6.2, patch by Giacomo Comes, comes naic edu
diego
parents: 19614
diff changeset
247 LG=0
4e8dbc741909 update to 0.6.2, patch by Giacomo Comes, comes naic edu
diego
parents: 19614
diff changeset
248 SVN=0
17507
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
249 MAXFIX=20
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
250 timelen=0
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
251 ocrsub=0
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
252 slidefps=1
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
253 default_intra=8,16,19,22,26,27,29,34,16,16,22,24,27,29,34,37,19,22,26,27,29,34,34,38,22,22,26,27,29,34,37,40,22,26,27
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
254 default_intra=$default_intra,29,32,35,40,48,26,27,29,32,35,40,48,58,26,27,29,34,38,46,56,69,27,29,35,38,46,56,69,83
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
255 default_inter=16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
256 default_inter=$default_inter,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
257 hires_intra=8,16,18,20,24,25,26,30,16,16,20,23,25,26,30,30,18,20,22,24,26,28,29,31,20,21,23,24,26,28,31,31,21,23,24
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
258 hires_intra=$hires_intra,25,28,30,30,33,23,24,25,28,30,30,33,36,24,25,26,29,29,31,34,38,25,26,28,29,31,34,38,42
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
259 hires_inter=$default_inter
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
260 kvcd_intra=8,9,12,22,26,27,29,34,9,10,14,26,27,29,34,37,12,14,18,27,29,34,37,38,22,26,27,31,36,37,38,40,26,27,29
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
261 kvcd_intra=$kvcd_intra,36,39,38,40,48,27,29,34,37,38,40,48,58,29,34,37,38,40,48,58,69,34,37,38,40,48,58,69,79
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
262 kvcd_inter=16,18,20,22,24,26,28,30,18,20,22,24,26,28,30,32,20,22,24,26,28,30,32,34,22,24,26,30,32,32,34,36,24,26
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
263 kvcd_inter=$kvcd_inter,28,32,34,34,36,38,26,28,30,32,34,36,38,40,28,30,32,34,36,38,42,42,30,32,34,36,38,40,42,44
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
264 tmpgenc_intra=8,16,19,22,26,27,29,34,16,16,22,24,27,29,34,37,19,22,26,27,29,34,34,38,22,22,26,27,29,34,37,40,22,26,27
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
265 tmpgenc_intra=$tmpgenc_intra,29,32,35,40,48,26,27,29,32,35,40,40,58,26,27,29,34,38,46,56,69,27,29,35,38,46,56,69,83
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
266 tmpgenc_inter=16,17,18,19,20,21,22,23,17,18,19,20,21,22,23,24,18,19,20,21,22,23,24,25,19,20,21,22,23,24,26,27,20,21,22
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
267 tmpgenc_inter=$tmpgenc_inter,23,25,26,27,28,21,22,23,24,26,27,28,30,22,23,24,26,27,28,30,31,23,24,25,27,28,30,31,33
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
268 TXTSUBDEF=( languageId nolang delay 0 font arial.ttf size 28 bottom-margin 30 characterset ISO8859-1 movie-height-reduction 0 fps default )
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
269 AVISUBDEF=( format SubViewer name-extension null fileformat unix version-number off delay 0 fps default suffix default )
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
270
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
271 #### encode2mpeglight defauls
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
272 mpeg=1
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
273 encode=7:2:2
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
274
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
275 (($#)) || ! shortusage || exit 1
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
276 CMD=( "$@" )
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
277
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
278 #### options array
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
279 MOPT=( $(mlistopt | grep -v -e : -e '*')
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
280 $(mlistopt | sed -n '/:/s/:.*/"/p' | uniq)
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
281 $(mplayer -vfhelp 2>&1 | awk '/vf-/{printf("\"%s\"\n",$1)}')
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
282 $(mplayer -zrhelp 2>/dev/null | awk '$1~/^-zr/{printf("\"%s\"\n",substr($1,2))}') )
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
283
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
284 ###############################################################################
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
285 #### check rc file
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
286 ###############################################################################
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
287 if [[ -s ~/.encode2mpegrc ]]; then
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
288 for ((i=0;i<${#CMD[*]};i++)); do
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
289 [[ ${CMD[i]} = -norc ]] && norc=1 && break
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
290 done
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
291 if [[ ! $norc ]] && ! awk '{if($1~"^#")exit 1}' ~/.encode2mpegrc ; then
20858
4e8dbc741909 update to 0.6.2, patch by Giacomo Comes, comes naic edu
diego
parents: 19614
diff changeset
292 do_log "++ WARN: [$PROGNAME] ~/.encode2mpegrc appears to contain comments, ignoring it" >/dev/null
17507
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
293 norc=1
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
294 fi
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
295 [[ ! $norc ]] && set -- $(<~/.encode2mpegrc) "$@"
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
296 fi
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
297
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
298 ###############################################################################
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
299 #### arguments parsing
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
300 ###############################################################################
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
301 while (($#)) ; do
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
302 #### PARSING
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
303 case $1 in
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
304 -h|-help)
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
305 #-list the available options
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
306 [[ $2 = doc || $2 = help ]] && isarg $1 $2
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
307 shortusage
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
308 exit
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
309 ;;
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
310 -l|-longhelp)
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
311 #-print this help page
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
312 [[ $2 = doc || $2 = help ]] && isarg $1 $2
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
313 usage
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
314 exit
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
315 ;;
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
316 -doc|-documentation) #[[<browser>:][<html page>]]
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
317 #-show the html documentation
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
318 [[ $2 = doc || $2 = help ]] && isarg $1 $2
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
319 [[ ${2%:*} != $2 ]] && BROWSER=${2%:*}
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
320 show_html ${2#*:}
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
321 exit
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
322 ;;
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
323 -noshowlog)
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
324 #-do not show the log file
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
325 [[ $2 = doc || $2 = help ]] && isarg $1 $2
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
326 quiet=1
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
327 ;;
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
328 -o|-output) #<filename>
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
329 #-filename of the output stream
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
330 echo "$2" | grep -q '/' && [[ ! -d ${2%/*} ]] && echo "**ERROR: [$PROGNAME] directory ${2%/*} argument of '$1' not found" && exit 1
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
331 output=$2
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
332 shift
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
333 ;;
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
334 -a) #<n>
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
335 # aspect ratio VCD SVCD DVD
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
336 # 1 - 1:1 x * x x = mpeg2enc and mencoder
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
337 # 2 - 4:3 x x x * = mencoder only
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
338 # 3 - 16:9 x x x
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
339 #- 4 - 2.21:1 * x
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
340 MPEG2ENCOPT="$MPEG2ENCOPT -a $2"
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
341 [[ $2 -eq 0 ]] && MPEG2ENCOPT="${MPEG2ENCOPT% ${2}} 1"
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
342 mpegaspect=$2
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
343 isarg $1 "$2" direct
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
344 shift
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
345 ;;
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
346 -mpegfixaspect) #[pad|crop]
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
347 # force the aspect ratio of the source video to match the one
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
348 # specified with -a; this can be done padding the video with
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
349 #-black lines or cropping the video; the default is padding
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
350 [[ $2 = doc || $2 = help ]] && isarg $1 $2 aspect
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
351 mpegfixaspect=0
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
352 if [[ $2 = pad || $2 = crop ]]; then
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
353 [[ $2 = crop ]] && mpegfixaspect=1
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
354 shift
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
355 fi
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
356 ;;
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
357 -rotate) #<0-3>
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
358 # rotate the source video by 90 degrees; set -mpegfixaspect;
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
359 # 0 rotate clockwise and flip, 1 rotate clockwise
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
360 #-2 rotate counterclockwise, 3 rotate counterclockwise and flip
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
361 rotate=1
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
362 echo "$2" | grep -q '^[0-3]$' && rotate=$2
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
363 isarg $1 "$2" aspect
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
364 shift
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
365 : ${mpegfixaspect:=0}
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
366 ;;
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
367 -overscan) #<n>
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
368 # shrink the video of n% and surround it with black borders,
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
369 # n can be 1-99, using 10 should make visible on a TV the full video
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
370 # image; if n is negative, the result is a magnification of the
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
371 # central part of the image; n>0 set -mpegfixaspect pad, n<0 set
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
372 #--mpegfixaspect crop; in Avi Mode n can only be positive
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
373 echo "$2" | grep -qE '^-?[0-9]?[0-9]$' && overscan=$2
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
374 [[ ${2:0:1} = - ]] && mpegfixaspect=1 || mpegfixaspect=0
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
375 isarg $1 "${2#-}" $( ((step==1)) && echo Avi || echo aspect)
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
376 shift
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
377 ;;
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
378 -abr) #<n>
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
379 #-audio bit rate of the VCD/SVCD/DVD [MP2:224,MP3:128,AC3:448]
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
380 if [[ $2 = list ]]; then
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
381 sed '/^check_abr/,/case/!d;/'"$audioformat"':/!d;/[^0-9]'"$asr"'/!d;s/[^)]*)//;s/ */ /g;s/^/'"$audioformat $asr"'/' "$PROGFILE"
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
382 exit
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
383 fi
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
384 abr=$2
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
385 isarg $1 "$2" direct
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
386 shift
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
387 ;;
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
388 -asr) #<n>
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
389 #-audio sample rate of the VCD/SVCD/DVD [MP2/MP3:44100,AC3:48000]
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
390 asr=$2
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
391 isarg $1 "$2" direct
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
392 shift
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
393 ;;
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
394 -vbr) #<n>
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
395 #-video bit rate of the VCD/SVCD/DVD [VCD:1152,SVCD:2500,DVD:7500]
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
396 vbr=$2
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
397 isarg $1 "$2" direct
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
398 shift
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
399 ;;
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
400 -vfr) #<n>
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
401 # video frame rate of the output stream
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
402 # [NTSC/VCD:4,NTSC/SVCD-DVD:1,PAL:3,AVI:2]
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
403 # 1 - 24000.0/1001.0 (NTSC 3:2 pulldown converted FILM)
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
404 # 2 - 24.0 (NATIVE FILM)
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
405 # 3 - 25.0 (PAL/SECAM VIDEO / converted FILM)
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
406 # 4 - 30000.0/1001.0 (NTSC VIDEO)
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
407 # 5 - 30.0
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
408 # 6 - 50.0 (PAL FIELD RATE)
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
409 # 7 - 60000.0/1001.0 (NTSC FIELD RATE)
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
410 #- 8 - 60.0
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
411 vfr=$2
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
412 isarg $1 "$2" direct
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
413 shift
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
414 ;;
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
415 -n|-video-norm) #<n|p|s>
20858
4e8dbc741909 update to 0.6.2, patch by Giacomo Comes, comes naic edu
diego
parents: 19614
diff changeset
416 # set the video norm of the VCD/SVCD/DVD; NTSC is USA standard,
4e8dbc741909 update to 0.6.2, patch by Giacomo Comes, comes naic edu
diego
parents: 19614
diff changeset
417 # PAL is European standard and SECAM is French standard; concerning
4e8dbc741909 update to 0.6.2, patch by Giacomo Comes, comes naic edu
diego
parents: 19614
diff changeset
418 #-VCD/SVCD/DVD encoding, SECAM is equivalent to PAL
17507
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
419 case $2 in
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
420 n|N|ntsc|NTSC) videonorm=n ;;
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
421 p|P|pal|PAL) videonorm=p ;;
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
422 s|S|secam|SECAM) videonorm=s ;;
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
423 doc|help) isarg $1 $2 direct ;;
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
424 *) echo "**ERROR: [$PROGNAME] invalid argument '$2' for option '$1'" ; "$PROGFILE" -norc $1 help ; exit 1 ;;
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
425 esac
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
426 shift
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
427 ;;
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
428 -p|-pulldown|-telecine) #
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
429 # set a flag in the output stream of the SVCD/DVD that tell the
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
430 # decoder to play the movie as NTSC video using "3:2 pull-down"
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
431 #-instead of "-vfr 4" use "-vfr 1 -p" (smaller output stream)
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
432 [[ $2 = doc || $2 = help ]] && isarg $1 $2 direct
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
433 telecine=1
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
434 ;;
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
435 -res) #<1-7>
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
436 # force one of the following video resolutios:
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
437 # PAL NTSC
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
438 # 1 352x288 352x240 (VCD)
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
439 # 2 352x576 352x480 (CVD)
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
440 # 3 480x576 480x480 (SVCD)
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
441 # 4 528x576 528x480 (KVCD)
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
442 # 5 544x576 544x480 (KVCD)
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
443 # 6 704x576 704x480 (DVB)
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
444 #- 7 720x576 720x480 (DVD)
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
445 isarg $1 "$2" direct
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
446 echo "$2" | grep -q '^[1-7]$' && MPGRES=$2
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
447 shift
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
448 ;;
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
449 -gop) #<n>
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
450 # set the number of pictures per GOP; the default value is the one
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
451 #-required by the standard
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
452 isarg $1 "$2" direct
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
453 GOP=$2
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
454 shift
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
455 ;;
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
456 -kvcd) #<1-4>
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
457 # generate KVCD (www.kvcd.net) compliant frames on output; the
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
458 # following resolutions are possible:
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
459 # PAL NTSC GOP
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
460 # 1 528x576 528x480 24
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
461 # 2 528x576 528x480 def
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
462 # 3 544x576 544x480 24
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
463 #- 4 544x576 544x480 def
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
464 isarg $1 "$2" direct
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
465 a=1
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
466 echo "$2" | grep -q '^[1-4]$' && a=$2
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
467 shift 2
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
468 set -- " " -qmatrix kvcd -res $((3+(a+1)/2)) $([[ $a == [13] ]] && echo "-gop 24") "$@"
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
469 ;;
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
470 -vcd) #
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
471 #-generate VCD compliant frames on output (default)
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
472 [[ $2 = doc || $2 = help ]] && isarg $1 $2 direct
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
473 frameformat=VCD
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
474 ;;
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
475 -svcd) #[1-2]
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
476 # generate SVCD compliant frames on output; the following resolutions
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
477 # are possible: PAL NTSC
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
478 # 1 480x576 480x480
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
479 # 2 352x288 352x240
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
480 #-default is 1
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
481 [[ $2 = doc || $2 = help ]] && isarg $1 $2 direct
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
482 frameformat=SVCD
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
483 frameres=1
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
484 echo "$2" | grep -q '^[1-2]$' && frameres=$2 && shift
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
485 ;;
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
486 -svcdht) #
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
487 # enable the VCD header trick; this trick could allow to play SVCD on
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
488 # DVD player that does not support SVCD. For more details see:
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
489 #-http://www.videohelp.com/svcd
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
490 [[ $2 = doc || $2 = help ]] && isarg $1 $2 direct
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
491 trick=1
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
492 ;;
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
493 -dvd) #[1-5]
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
494 # generate DVD compliant frames on output; the following resolutions
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
495 # are possible: PAL NTSC
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
496 # 1 720x576 720x480
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
497 # 2 704x576 704x480
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
498 # 3 480x576 480x480 (non standard DVD-SVCD)
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
499 # 4 352x576 352x480
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
500 # 5 352x288 352x240
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
501 #-default is 1
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
502 [[ $2 = doc || $2 = help ]] && isarg $1 $2 direct
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
503 frameformat=DVD
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
504 frameres=1
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
505 echo "$2" | grep -q '^[1-5]$' && frameres=$2 && shift
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
506 ;;
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
507 -vcodec) #<mpeg1|mpeg2|mpeg4>
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
508 #-force the selected video codec [VCD:mpeg1,SVCD-DVD:mpeg2,AVI:mpeg4]
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
509 isarg $1 "$2" Avi
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
510 [[ $2 == mpeg[124] ]] && vcodec=$2 && [[ ${vcodec:4:1} == [12] ]] && vcodec=${vcodec}video
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
511 shift
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
512 ;;
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
513 -qmatrix) #<kvcd|tmpgenc|default|hi-res>
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
514 # mpeg2enc custom quantization matrices: kvcd produce a smaller
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
515 #-output stream, hi-res is good for hi-quality source material
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
516 case $2 in
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
517 kvcd|tmpgenc|default|hi-res)
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
518 MPEG2ENCOPT="$MPEG2ENCOPT -K $2"
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
519 intra_matrix=$(eval echo \$${2/-}_intra)
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
520 inter_matrix=$(eval echo \$${2/-}_inter)
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
521 ;;
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
522 *)
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
523 MPEG2ENCOPT="$MPEG2ENCOPT -K default"
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
524 intra_matrix=
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
525 inter_matrix=
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
526 ;;
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
527 esac
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
528 isarg $1 "$2" direct
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
529 shift
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
530 ;;
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
531 -mpeg1vbr) #
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
532 # produce a VCD/MPEG-1 variable bit rate stream, the output stream
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
533 # is smaller and a complete movie could fit in one VCD; check if
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
534 #-your hardware player support variable bit rate VCD
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
535 [[ $2 = doc || $2 = help ]] && isarg $1 $2 direct
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
536 MPEG2ENCOPT="$MPEG2ENCOPT -q 8"
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
537 LAVC=":vrc_buf_size=327"
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
538 ;;
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
539 -mpegmbr) #<n>
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
540 # set the maximum video bit rate; the default is the value of vbr;
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
541 #-a value of 0 remove the limit
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
542 mpegmbr=$2
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
543 [[ $2 -eq 0 ]] && mpegmbr=
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
544 isarg $1 "$2" mpeg
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
545 shift
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
546 ;;
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
547 -mpegchannels) #<1-6>
20858
4e8dbc741909 update to 0.6.2, patch by Giacomo Comes, comes naic edu
diego
parents: 19614
diff changeset
548 # number of channels of the MPEG audio stream, 1-6 for ac3 and lpcm;
17507
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
549 # 1-2 for mp1, mp2 and mp3; 3-6 for mp2 Multichannel Audio; for the
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
550 #-avi audio stream use MPlayer's option -channels
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
551 mpegchannels=2
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
552 isarg $1 "$2" direct
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
553 echo "$2" | grep -q '^[1-6]$' && mpegchannels=$2
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
554 shift
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
555 ;;
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
556 -normalize)
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
557 #-normalize to the audio stream(s)
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
558 [[ $2 = doc || $2 = help ]] && isarg $1 $2 $([[ $encode ]] && echo Avi || echo direct)
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
559 normalize=1
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
560 ;;
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
561 -volume) #<n>
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
562 # change amplitude of the audio stream; less than 1.0 decreases,
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
563 #-greater than 1.0 increases (float)
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
564 volume=$2
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
565 isarg $1 "$2" direct
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
566 shift
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
567 ;;
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
568 -noscale) #
20858
4e8dbc741909 update to 0.6.2, patch by Giacomo Comes, comes naic edu
diego
parents: 19614
diff changeset
569 # encode2mpeg automatically scales the video according to the MPEG
4e8dbc741909 update to 0.6.2, patch by Giacomo Comes, comes naic edu
diego
parents: 19614
diff changeset
570 # profile chosen, this option disables this feature; used mainly
4e8dbc741909 update to 0.6.2, patch by Giacomo Comes, comes naic edu
diego
parents: 19614
diff changeset
571 # for debug purposes.
17507
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
572 [[ $2 = doc || $2 = help ]] && isarg $1 $2 direct
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
573 scale=
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
574 ;;
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
575 -monochrome)
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
576 #-create B/W video or avoid color artifacts in B/W source streams
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
577 [[ $2 = doc || $2 = help ]] && isarg $1 $2 direct
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
578 YUVSCALEROPT="$YUVSCALEROPT -O MONOCHROME"
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
579 ;;
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
580 -split) #<n>
20858
4e8dbc741909 update to 0.6.2, patch by Giacomo Comes, comes naic edu
diego
parents: 19614
diff changeset
581 #-split the resulting MPEG stream in <n> MB chunks.
17507
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
582 split=$2
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
583 isarg $1 "$2" direct
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
584 shift
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
585 ;;
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
586 -encode) #<n:m:i[,b]>
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
587 # the parameter n:m:i selects the audio codec, video codec options
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
588 # and number of pass for mencoder, possible values are:
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
589 # n m i
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
590 # 0 copy 0 copy 1
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
591 # 1 pcm 1 libavcodec/mpeg 2
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
592 # 2 mp3lame/fast 2 as 1 + mbd=2 3
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
593 # 3 mp3lame/standard 3 as 1 + compression opts
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
594 # 4 libavcodec/mp2 4 as 1 + quality opts
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
595 # 5 libavcodec/mp3
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
596 # 6 libavcodec/ac3 for m=[2-4] and i>1 turbo is on
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
597 # 7 toolame/mp2
20858
4e8dbc741909 update to 0.6.2, patch by Giacomo Comes, comes naic edu
diego
parents: 19614
diff changeset
598 # 8 libfaac/aac
17507
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
599 #- with n=[3-7] b specify the audio bit rate
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
600 encode=5:3:2
20858
4e8dbc741909 update to 0.6.2, patch by Giacomo Comes, comes naic edu
diego
parents: 19614
diff changeset
601 echo "$2" | grep -qE '^[0-8]:[0-4]:[1-9](,[0-9]+)?$' && encode=$2
17507
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
602 isarg $1 "$2" $([[ $mpeg ]] && echo mpeg || echo Avi)
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
603 shift
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
604 ;;
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
605 -telecinesrc) #
20858
4e8dbc741909 update to 0.6.2, patch by Giacomo Comes, comes naic edu
diego
parents: 19614
diff changeset
606 # if you use -encode n:0:i in MPEG Mode, encode2mpeg needs to know
4e8dbc741909 update to 0.6.2, patch by Giacomo Comes, comes naic edu
diego
parents: 19614
diff changeset
607 # if the source NTSC MPEG is telecined, otherwise the stream copy may
17507
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
608 # not work properly; normally encode2mpeg is able to detect telecined
20858
4e8dbc741909 update to 0.6.2, patch by Giacomo Comes, comes naic edu
diego
parents: 19614
diff changeset
609 # sources, but, if the source MPEG is mixed, part not telecined and
17507
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
610 # part telecined, encode2mpeg may fail to detect it. In such case,
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
611 #-you can use this option to specify a telecined source.
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
612 [[ $2 = doc || $2 = help ]] && isarg $1 $2 mpeg
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
613 telesrc=1
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
614 ;;
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
615 -turbo) #<0-1>
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
616 # disable (0) or force (1) turbo mode for the first pass of N pass
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
617 #-encoding (N>1)
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
618 echo "$2" | grep -q '^[0-1]$' && turbo=$2
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
619 isarg $1 "$2" Avi
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
620 shift
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
621 ;;
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
622 -hispeed) #
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
623 # increase the encoding speed of 25-50% (with -encode n:1:1); the
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
624 # output video stream will be bigger and can have poor quality; this
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
625 # option is mainly intented for testing, but it can be used if you
20858
4e8dbc741909 update to 0.6.2, patch by Giacomo Comes, comes naic edu
diego
parents: 19614
diff changeset
626 #-want to create more quickly an MPEG-4/AVI or a DVD.
17507
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
627 [[ $2 = doc || $2 = help ]] && isarg $1 $2 Avi
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
628 hispeed=1
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
629 ;;
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
630 -bframes) #<0-4>
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
631 # specify the number of B frames; if -encode is n:3:i the default 2,
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
632 #-otherwise the default is no B frames; for VCD the default is 2
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
633 echo "$2" | grep -q '^[0-4]$' && bframes=$2
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
634 isarg $1 "$2" Avi
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
635 shift
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
636 ;;
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
637 -vcustom) #<libavcodec options>
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
638 # specify a custom set of video options for libavcodec, use with
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
639 #--encode n:1:i
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
640 vcustom=$2
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
641 isarg $1 "$2" Avi
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
642 shift
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
643 ;;
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
644 -acustom) #<mp3lame options>
20858
4e8dbc741909 update to 0.6.2, patch by Giacomo Comes, comes naic edu
diego
parents: 19614
diff changeset
645 # specify a custom set of lame options (with -encode 2:m:i) or faac
4e8dbc741909 update to 0.6.2, patch by Giacomo Comes, comes naic edu
diego
parents: 19614
diff changeset
646 #-options (with -encode 8:m:i)
17507
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
647 acustom=$2
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
648 isarg $1 "$2" Avi
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
649 shift
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
650 ;;
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
651 -encsid) #<sid0,sid1,...>
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
652 #-dump the DVD vobsub, sid is the number you give the -sid option
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
653 # of MPlayer.
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
654 encsid=( ${2//,/ } )
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
655 isarg $1 "$2" subtitle
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
656 shift
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
657 ;;
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
658 -encsdx) #<sid0,sid1,...>
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
659 # if you dump subtitle 2 and 4 and you want them to have id 0 and 1
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
660 #-use -encsid 2,4 -encsdx 0,1
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
661 encsdx=( ${2//,/ } )
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
662 isarg $1 "$2" subtitle
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
663 shift
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
664 ;;
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
665 -encsla) #<sla0,sla1,...>
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
666 #-see doc/html/subtitle.html
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
667 encsla=( ${2//,/ } )
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
668 isarg $1 "$2" subtitle
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
669 shift
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
670 ;;
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
671 -usespeed) #
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
672 # do frame rate conversion changing the playback speed; this option
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
673 # can be used if you are converting from NTSC 24fps, with or without
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
674 # telecine, to PAL 25fps and viceversa; during normal frame rate
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
675 # conversion, frames are skipped or duplicated as needed; with this
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
676 #-option all the frames are encoded
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
677 [[ $2 = doc || $2 = help ]] && isarg $1 $2 mpeg
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
678 usespeed=1
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
679 ;;
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
680 -usesbr) #[1-6|>100]
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
681 # use the suggested video bitrate to set the output stream size
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
682 # 1 - for 650MB CD 4 - for 2 x 650MB CD
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
683 # 2 - for 700MB CD (default) 5 - for 2 x 700MB CD
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
684 # 3 - for 800MB CD 6 - for 2 x 800MB CD
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
685 # n where n > 100 will set the file size to n MB
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
686 #-with -multiaudio you must to set the streamsize in MB
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
687 usesbr=2
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
688 SBR=(650 700 800 "2 x 650" "2 x 700" "2 x 800")
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
689 echo "$2" | grep -q '^[1-6]$' && usesbr=$2 && shift
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
690 echo "$2" | grep -qE '^[1-9][0-9]{2,}$' && usesbr=$2 && shift
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
691 [[ $2 = doc || $2 = help ]] && isarg $1 $2 Avi
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
692 ;;
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
693 -cpu) #<n>
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
694 #-number of cpu to use, default all the cpu present in the system
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
695 cpu=1
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
696 echo "$2" | grep -q '^[1-8]$' && cpu=$2
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
697 isarg $1 "$2" Avi
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
698 shift
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
699 ;;
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
700 -interlaced)
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
701 #-turn on optimization for interlaced source video.
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
702 [[ $2 = doc || $2 = help ]] && isarg $1 $2 $([[ $mpeg ]] && echo mpeg || echo Avi)
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
703 interlaced=1
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
704 ;;
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
705 -slidefps) #<n>
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
706 # fps to use when creating video from pictures, default is 1; if
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
707 # there is a audio file associated with a picture, the duration of
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
708 #-the audio file is used
20858
4e8dbc741909 update to 0.6.2, patch by Giacomo Comes, comes naic edu
diego
parents: 19614
diff changeset
709 isarg $1 "$2" images
17507
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
710 slidefps=$(awk -v a=$2 'BEGIN{printf("%.3f",1/a)}')
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
711 shift
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
712 ;;
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
713 -slideaudio) #<audio file>
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
714 # use the content of <audio file> as audio stream when creating video
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
715 #-from pictures; it works correctly only if used with mf://singlepic
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
716 slideaudio=$2
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
717 if [[ ! -f $2 && $2 != /dev/null ]]; then
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
718 [[ $2 = doc || $2 = help || ! $2 ]] && isarg $1 "$2" images || ! echo "**ERROR: [$PROGNAME] slide audio file '$2' not found" || exit 1
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
719 fi
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
720 shift
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
721 ;;
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
722 -norc)
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
723 #-do not use the settings in the file $HOME/.encode2mpegrc
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
724 [[ $2 = doc || $2 = help ]] && isarg $1 $2 rc
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
725 ;;
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
726 -debug)
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
727 # make a more verbose log file and creates a debug file; if you are
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
728 # submitting a bug report, use this option and compress and send the
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
729 #-log file and the debug file
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
730 [[ $2 = doc || $2 = help ]] && isarg $1 $2
20858
4e8dbc741909 update to 0.6.2, patch by Giacomo Comes, comes naic edu
diego
parents: 19614
diff changeset
731 echo "$2" | grep -q '^[0-7]$' && DEBUG=$2 && shift || DEBUG=3
17507
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
732 ;;
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
733 (-frames)
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
734 frames=$2
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
735 isarg $1 $2
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
736 shift
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
737 ;;
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
738 (-channels)
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
739 channels=$2
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
740 isarg $1 $2
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
741 shift
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
742 ;;
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
743 (-srate)
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
744 MPLAYEROPT=( "${MPLAYEROPT[@]}" -srate $2 -af-adv force=1 )
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
745 srate=$2
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
746 isarg $1 $2
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
747 shift
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
748 ;;
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
749 (-endpos)
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
750 endpos=$2
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
751 isarg $1 $2
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
752 shift
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
753 ;;
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
754 (-hr-edl-seek)
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
755 MENCODEROPT=( "${MENCODEROPT[@]}" $1 )
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
756 ;;
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
757 (-vf)
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
758 vf="-vf $2"
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
759 MPLAYEROPT=( "${MPLAYEROPT[@]}" $vf )
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
760 isarg $1 $2
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
761 shift
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
762 ;;
20858
4e8dbc741909 update to 0.6.2, patch by Giacomo Comes, comes naic edu
diego
parents: 19614
diff changeset
763 (-af)
4e8dbc741909 update to 0.6.2, patch by Giacomo Comes, comes naic edu
diego
parents: 19614
diff changeset
764 af="-af $2"
4e8dbc741909 update to 0.6.2, patch by Giacomo Comes, comes naic edu
diego
parents: 19614
diff changeset
765 isarg $1 $2
4e8dbc741909 update to 0.6.2, patch by Giacomo Comes, comes naic edu
diego
parents: 19614
diff changeset
766 shift
4e8dbc741909 update to 0.6.2, patch by Giacomo Comes, comes naic edu
diego
parents: 19614
diff changeset
767 ;;
17507
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
768 (-dvd-device)
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
769 dvddev=$2
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
770 isarg $1 $2
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
771 shift
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
772 ;;
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
773 (mf://*)
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
774 MPLAYEROPT[${#MPLAYEROPT[*]}]=$1
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
775 pictsrc=1
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
776 a=$IFS
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
777 IFS=,
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
778 PICTSRC=( ${1#mf://} )
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
779 IFS=$a
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
780 srate=48000
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
781 ;;
20858
4e8dbc741909 update to 0.6.2, patch by Giacomo Comes, comes naic edu
diego
parents: 19614
diff changeset
782 (-sub)
4e8dbc741909 update to 0.6.2, patch by Giacomo Comes, comes naic edu
diego
parents: 19614
diff changeset
783 [[ ! -f $2 ]] && echo "**ERROR: [$PROGNAME] subtitle file '$2' not found" && exit 1
4e8dbc741909 update to 0.6.2, patch by Giacomo Comes, comes naic edu
diego
parents: 19614
diff changeset
784 MPLAYEROPT=( "${MPLAYEROPT[@]}" $1 "$2" )
4e8dbc741909 update to 0.6.2, patch by Giacomo Comes, comes naic edu
diego
parents: 19614
diff changeset
785 subrender=1
4e8dbc741909 update to 0.6.2, patch by Giacomo Comes, comes naic edu
diego
parents: 19614
diff changeset
786 shift
4e8dbc741909 update to 0.6.2, patch by Giacomo Comes, comes naic edu
diego
parents: 19614
diff changeset
787 ;;
17507
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
788 (-mpeg|-mpegonly|-nosplit) ;;
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
789 *)
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
790 if [[ ! $TOOL ]]; then
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
791 [[ ${1:0:1} = - ]] && ! echo "${MOPT[@]}" | grep -q "\"${1#-}\"" && \
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
792 echo -e "Unknown option $1\nIf this is a valid MPlayer option add '-toolopts mplayer' in front of it" && exit 1
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
793 MPLAYEROPT[${#MPLAYEROPT[*]}]=$1
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
794 else
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
795 case $TOOL in
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
796 *)
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
797 MPLAYEROPT[${#MPLAYEROPT[*]}]=$1
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
798 ;;
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
799 esac
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
800 fi
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
801 ;;
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
802 esac
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
803 shift
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
804 done
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
805
20858
4e8dbc741909 update to 0.6.2, patch by Giacomo Comes, comes naic edu
diego
parents: 19614
diff changeset
806 [[ -s ~/.encode2mpegrc && ! $norc ]] && do_log " INFO: [$PROGNAME] using .encode2mpegrc settings: '$(<~/.encode2mpegrc)'"
4e8dbc741909 update to 0.6.2, patch by Giacomo Comes, comes naic edu
diego
parents: 19614
diff changeset
807 if [[ $subrender || $harddup ]]; then
4e8dbc741909 update to 0.6.2, patch by Giacomo Comes, comes naic edu
diego
parents: 19614
diff changeset
808 if [[ $vf ]]; then
4e8dbc741909 update to 0.6.2, patch by Giacomo Comes, comes naic edu
diego
parents: 19614
diff changeset
809 vf=$vf${subrender:+,expand=::::1}
4e8dbc741909 update to 0.6.2, patch by Giacomo Comes, comes naic edu
diego
parents: 19614
diff changeset
810 [[ $harddup ]] && ! echo $vf | grep -q harddup && vf=$vf,harddup
4e8dbc741909 update to 0.6.2, patch by Giacomo Comes, comes naic edu
diego
parents: 19614
diff changeset
811 for ((a=0;a<${#MPLAYEROPT[*]};a++)); do
4e8dbc741909 update to 0.6.2, patch by Giacomo Comes, comes naic edu
diego
parents: 19614
diff changeset
812 [[ ${MPLAYEROPT[a]} = -vf ]] && MPLAYEROPT[a+1]=${vf#-vf }
4e8dbc741909 update to 0.6.2, patch by Giacomo Comes, comes naic edu
diego
parents: 19614
diff changeset
813 done
4e8dbc741909 update to 0.6.2, patch by Giacomo Comes, comes naic edu
diego
parents: 19614
diff changeset
814 else
4e8dbc741909 update to 0.6.2, patch by Giacomo Comes, comes naic edu
diego
parents: 19614
diff changeset
815 vf="-vf ${subrender:+expand=::::1}${harddup:+${subrender:+,}harddup}"
4e8dbc741909 update to 0.6.2, patch by Giacomo Comes, comes naic edu
diego
parents: 19614
diff changeset
816 MPLAYEROPT=( "${MPLAYEROPT[@]}" $vf )
4e8dbc741909 update to 0.6.2, patch by Giacomo Comes, comes naic edu
diego
parents: 19614
diff changeset
817 fi
4e8dbc741909 update to 0.6.2, patch by Giacomo Comes, comes naic edu
diego
parents: 19614
diff changeset
818 fi
17507
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
819
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
820 ###############################################################################
20858
4e8dbc741909 update to 0.6.2, patch by Giacomo Comes, comes naic edu
diego
parents: 19614
diff changeset
821 #### debug part
17507
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
822 ###############################################################################
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
823 if ((DEBUG)); then
20858
4e8dbc741909 update to 0.6.2, patch by Giacomo Comes, comes naic edu
diego
parents: 19614
diff changeset
824 if ((DEBUG & 1)); then
4e8dbc741909 update to 0.6.2, patch by Giacomo Comes, comes naic edu
diego
parents: 19614
diff changeset
825 #### redirect stdout and stderr to the debug file
17507
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
826 exec 3>&1
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
827 rm -f "$output".debug.fifo
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
828 mkfifo "$output".debug.fifo
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
829 tee "$output".debug <"$output".debug.fifo >&3 &
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
830 PROCTEE=$!
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
831 exec &>"$output".debug.fifo
20858
4e8dbc741909 update to 0.6.2, patch by Giacomo Comes, comes naic edu
diego
parents: 19614
diff changeset
832 trap 'rm "$output".debug.fifo' 0
4e8dbc741909 update to 0.6.2, patch by Giacomo Comes, comes naic edu
diego
parents: 19614
diff changeset
833 fi
4e8dbc741909 update to 0.6.2, patch by Giacomo Comes, comes naic edu
diego
parents: 19614
diff changeset
834 if ((DEBUG & 2)); then
4e8dbc741909 update to 0.6.2, patch by Giacomo Comes, comes naic edu
diego
parents: 19614
diff changeset
835 #### catch mplayer/mencoder errors
4e8dbc741909 update to 0.6.2, patch by Giacomo Comes, comes naic edu
diego
parents: 19614
diff changeset
836 mplayer () {
4e8dbc741909 update to 0.6.2, patch by Giacomo Comes, comes naic edu
diego
parents: 19614
diff changeset
837 command mplayer "$@"
4e8dbc741909 update to 0.6.2, patch by Giacomo Comes, comes naic edu
diego
parents: 19614
diff changeset
838 ret=$? ; (( ret )) && error_line "$FUNCNAME $*" || true
4e8dbc741909 update to 0.6.2, patch by Giacomo Comes, comes naic edu
diego
parents: 19614
diff changeset
839 }
4e8dbc741909 update to 0.6.2, patch by Giacomo Comes, comes naic edu
diego
parents: 19614
diff changeset
840 mencoder () {
4e8dbc741909 update to 0.6.2, patch by Giacomo Comes, comes naic edu
diego
parents: 19614
diff changeset
841 command mencoder "$@"
4e8dbc741909 update to 0.6.2, patch by Giacomo Comes, comes naic edu
diego
parents: 19614
diff changeset
842 ret=$? ; (( ret )) && error_line "$FUNCNAME $*" || true
4e8dbc741909 update to 0.6.2, patch by Giacomo Comes, comes naic edu
diego
parents: 19614
diff changeset
843 }
4e8dbc741909 update to 0.6.2, patch by Giacomo Comes, comes naic edu
diego
parents: 19614
diff changeset
844 fi
4e8dbc741909 update to 0.6.2, patch by Giacomo Comes, comes naic edu
diego
parents: 19614
diff changeset
845 ((DEBUG & 4)) && set -x
17507
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
846 fi
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
847
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
848 ###############################################################################
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
849 #### ERROR if some options conflict is detected part 1/2
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
850 ###############################################################################
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
851 #### mplayer/mencoder
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
852 for a in mplayer mencoder ; do
20858
4e8dbc741909 update to 0.6.2, patch by Giacomo Comes, comes naic edu
diego
parents: 19614
diff changeset
853 type -f $a &>/dev/null || ! echo "**ERROR: [$PROGNAME] $a missing, install $(echo ${a:0:2} | tr '[:lower:]' '[:upper:]')${a:2}" || exit 1
17507
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
854 done
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
855 #### output stream name check
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
856 [[ ! $output ]] && echo "**ERROR: [$PROGNAME] name of the output stream missing (-o name)" && exit 1
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
857 #### unspecified video norm
20858
4e8dbc741909 update to 0.6.2, patch by Giacomo Comes, comes naic edu
diego
parents: 19614
diff changeset
858 [[ ! $videonorm && step -gt 1 && ! ( $mpeg && ${encode%,*} == ?:0:? && ! $menu ) && ${#TITLESET[*]} -eq 0 ]] && \
17507
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
859 echo "**ERROR: [$PROGNAME] you must specify a video norm (-n n|p|s)" && exit 1
20858
4e8dbc741909 update to 0.6.2, patch by Giacomo Comes, comes naic edu
diego
parents: 19614
diff changeset
860 #### libfaac check
4e8dbc741909 update to 0.6.2, patch by Giacomo Comes, comes naic edu
diego
parents: 19614
diff changeset
861 if [[ ${encode%,*} == 8:?:? ]]; then
4e8dbc741909 update to 0.6.2, patch by Giacomo Comes, comes naic edu
diego
parents: 19614
diff changeset
862 ! mencoder -oac help 2>/dev/null | grep -q faac && echo "**ERROR: [$PROGNAME] missing libfaac support in mencoder [-encode 8:m:i]" && exit 1
4e8dbc741909 update to 0.6.2, patch by Giacomo Comes, comes naic edu
diego
parents: 19614
diff changeset
863 fi
4e8dbc741909 update to 0.6.2, patch by Giacomo Comes, comes naic edu
diego
parents: 19614
diff changeset
864 #### mpeg4
4e8dbc741909 update to 0.6.2, patch by Giacomo Comes, comes naic edu
diego
parents: 19614
diff changeset
865 if [[ $vcodec = mpeg4 ]]; then
4e8dbc741909 update to 0.6.2, patch by Giacomo Comes, comes naic edu
diego
parents: 19614
diff changeset
866 [[ $pictsrc && $step -gt 1 && $mpeg ]] && echo "**ERROR: [$PROGNAME] -vcodec mpeg4, -mpeg and mf://file are not compatible" && exit 1
4e8dbc741909 update to 0.6.2, patch by Giacomo Comes, comes naic edu
diego
parents: 19614
diff changeset
867 fi
17507
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
868 #### pictsrc
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
869 if [[ $pictsrc ]]; then
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
870 [[ $slideaudio != /dev/null && ${encode%,*} == 0:?:? && $mpeg ]] && \
20858
4e8dbc741909 update to 0.6.2, patch by Giacomo Comes, comes naic edu
diego
parents: 19614
diff changeset
871 echo "**ERROR: [$PROGNAME] -encode 0:m:i is not compatible with mf:// in MPEG Mode" && exit 1
17507
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
872 [[ $audioonly ]] && echo "**ERROR: [$PROGNAME] -audioonly does not work with mf://" && exit 1
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
873 fi
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
874 #### -encode 1:m:i is not allowed
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
875 [[ ${encode%,*} == 1:?:? ]] && echo "**ERROR: [$PROGNAME] do not use -encode 1:m:i" && exit 1
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
876
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
877 ###############################################################################
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
878 #### WARN if some options conflict is detected
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
879 ###############################################################################
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
880 #### missing toolame support
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
881 if [[ ${encode%,*} == 7:?:? ]]; then
20858
4e8dbc741909 update to 0.6.2, patch by Giacomo Comes, comes naic edu
diego
parents: 19614
diff changeset
882 if ! mencoder -oac help 2>/dev/null | grep -q t[wo]olame ; then
17507
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
883 encode=4:${encode#?:}
20858
4e8dbc741909 update to 0.6.2, patch by Giacomo Comes, comes naic edu
diego
parents: 19614
diff changeset
884 do_log "++ WARN: [$PROGNAME] missing toolame support in mencoder, setting -encode $encode"
4e8dbc741909 update to 0.6.2, patch by Giacomo Comes, comes naic edu
diego
parents: 19614
diff changeset
885 else
4e8dbc741909 update to 0.6.2, patch by Giacomo Comes, comes naic edu
diego
parents: 19614
diff changeset
886 mencoder -oac help 2>/dev/null | grep -q toolame && TOOLAME=toolame || TOOLAME=twolame
17507
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
887 fi
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
888 fi
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
889
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
890 ###############################################################################
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
891 #### set default values for unspecified parameters
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
892 ###############################################################################
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
893 if [[ ! $multiaudio ]]; then
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
894 audiostream=1
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
895 fi
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
896 ###############################################################################
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
897 if [[ $encode ]]; then
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
898 case ${encode%%:*} in
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
899 0) [[ ! $pictsrc ]] &&
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
900 AFMT=acopy ;;
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
901 2|3|5) AFMT=mp3 ;;
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
902 4|7) AFMT=mp2 ;;
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
903 6) AFMT=ac3 ;;
20858
4e8dbc741909 update to 0.6.2, patch by Giacomo Comes, comes naic edu
diego
parents: 19614
diff changeset
904 8) AFMT=aac ;;
17507
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
905 esac
20858
4e8dbc741909 update to 0.6.2, patch by Giacomo Comes, comes naic edu
diego
parents: 19614
diff changeset
906 [[ $AFMT ]] && eval : ${audioformat:-\${$AFMT:=copy\}}
17507
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
907 fi
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
908 : ${frameformat:=VCD}
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
909 : ${audioformat:=${AFMT:-mp2}}
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
910 : ${mp1:=mp2enc}
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
911 ((${mpegchannels:-2}>2)) && : ${mp2:=musicin} || : ${mp2:=mp2enc}
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
912 : ${mp3:=lame}
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
913 : ${ac3:=mencoder}
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
914 : ${dts:=copy}
20858
4e8dbc741909 update to 0.6.2, patch by Giacomo Comes, comes naic edu
diego
parents: 19614
diff changeset
915 : ${aac:=faac}
17507
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
916 case $audioformat in
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
917 mp1)
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
918 case ${mpegchannels:-2} in
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
919 1) : ${abr:=192} ;;
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
920 2) : ${abr:=384} ;;
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
921 esac
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
922 ;;
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
923 mp2)
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
924 case ${mpegchannels:-2} in
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
925 1) : ${abr:=112} ;;
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
926 2) : ${abr:=224} ;;
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
927 [3-6]) : ${abr:=384} ;;
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
928 esac
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
929 ;;
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
930 mp3)
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
931 case ${mpegchannels:-2} in
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
932 1) : ${abr:=64} ;;
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
933 2) : ${abr:=128} ;;
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
934 esac
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
935 ;;
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
936 ac3)
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
937 case ${mpegchannels:-2} in
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
938 1) : ${abr:=96} ;;
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
939 2) : ${abr:=192} ;;
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
940 3) : ${abr:=320} ;; # to verify
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
941 4) : ${abr:=384} ;; # to verify
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
942 5) : ${abr:=448} ;; # to verify
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
943 6) : ${abr:=448} ;;
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
944 esac
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
945 ;;
20858
4e8dbc741909 update to 0.6.2, patch by Giacomo Comes, comes naic edu
diego
parents: 19614
diff changeset
946 aac) : ${abr:=$((${mpegchannels:-2}*48))} ;;
17507
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
947 #### mplex fails with asr != 48000 for lpcm
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
948 lpcm) : ${asr:=48000} ${abr:=$((asr*16*${mpegchannels:-2}/1024))} ;;
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
949 esac
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
950 if [[ ${encode%,*} == 0:?:? && ${!audioformat} = copy ]]; then
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
951 abr=0
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
952 if [[ ! $multiaudio ]]; then
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
953 get_abr
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
954 fi
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
955 fi
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
956 [[ $mpeg && ${encode%,*} == ?:0:? ]] && \
20858
4e8dbc741909 update to 0.6.2, patch by Giacomo Comes, comes naic edu
diego
parents: 19614
diff changeset
957 vbr=$(($(id_find ID_VIDEO_BITRATE "${MPLAYEROPT[@]}" ${dvddev:+-dvd-device "$dvddev"} "$@")/1000))
17507
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
958 case $frameformat in
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
959 DVD) : ${asr:=48000} ;;
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
960 *) : ${asr:=44100} ;;
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
961 esac
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
962 case $videonorm in
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
963 p|s)
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
964 : ${vfr:=3}
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
965 ;;
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
966 n)
20858
4e8dbc741909 update to 0.6.2, patch by Giacomo Comes, comes naic edu
diego
parents: 19614
diff changeset
967 [[ $frameformat != VCD && ! $vfr && $hispeed -eq 0 && ! $testmca ]] && vfr=1 && telecine=1
17507
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
968 : ${vfr:=4}
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
969 ;;
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
970 esac
20858
4e8dbc741909 update to 0.6.2, patch by Giacomo Comes, comes naic edu
diego
parents: 19614
diff changeset
971 [[ $encode && ${encode%,*} != ?:0:? ]] && : ${vfr:=2}
17507
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
972 if [[ ! $ofps ]]; then
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
973 case $vfr in
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
974 1) ofps=24000/1001 ;;
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
975 2) ofps=24 ;;
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
976 3) ofps=25 ;;
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
977 4) ofps=30000/1001 ;;
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
978 5) ofps=30 ;;
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
979 6) ofps=50 ;;
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
980 7) ofps=60000/1001 ;;
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
981 8) ofps=60 ;;
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
982 esac
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
983 fi
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
984 if [[ $split && $split -eq 0 ]]; then
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
985 [[ $mpeg ]] && split= || split=800
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
986 fi
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
987
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
988 ###############################################################################
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
989 #### get MPlayer version
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
990 ###############################################################################
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
991 mver=$(mencoder 2>/dev/null | awk '$1=="MEncoder"{print $2;exit}')
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
992
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
993 ###############################################################################
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
994 #### threads check
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
995 ###############################################################################
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
996 if [[ ! $cpu && -f /proc/cpuinfo ]]; then
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
997 cpu=$(grep -c ^processor /proc/cpuinfo)
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
998 #### if there are 2 logical cpu but 1 physical (hyperthreading)
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
999 #### use only one thread. With kernel 2.4.x it is more efficent.
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1000 ((cpu==2)) && [[ $(uname -r | cut -f 1-2 -d .) = 2.4 ]] && \
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1001 [[ $(grep ^siblings /proc/cpuinfo | uniq | wc -l) -eq 1 ]] && \
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1002 cpu=$((cpu/$(grep ^siblings /proc/cpuinfo | uniq | awk 'END{print $NF}')))
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1003 fi
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1004 ((cpu<2)) && cpu=
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1005
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1006 ###############################################################################
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1007 #### -ao pcm arguments
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1008 ###############################################################################
20858
4e8dbc741909 update to 0.6.2, patch by Giacomo Comes, comes naic edu
diego
parents: 19614
diff changeset
1009 PCMWAV=(pcm:waveheader:fast:file=%$((${#output}+4))%"$output".wav)
4e8dbc741909 update to 0.6.2, patch by Giacomo Comes, comes naic edu
diego
parents: 19614
diff changeset
1010 PCMTMP=(pcm:waveheader:fast:file=%$((${#output}+4))%"$output".tmp)
4e8dbc741909 update to 0.6.2, patch by Giacomo Comes, comes naic edu
diego
parents: 19614
diff changeset
1011 PCMNOWYUV=(pcm:nowaveheader:fast:file=/dev/fd/4)
17507
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1012
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1013 [[ $dvddev ]] && MPLAYEROPT=( "${MPLAYEROPT[@]}" -dvd-device "$dvddev" )
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1014
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1015 ###############################################################################
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1016 #### mplayer/mencoder/mjpegtools options
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1017 ###############################################################################
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1018
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1019 #### mencoder output suffix
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1020 if [[ $encode ]]; then
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1021 [[ $mpeg ]] && SUF=mpeg || SUF=avi
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1022 fi
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1023
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1024 #### MPLAYERINFO is used for [info]
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1025 MPLAYERINFO=( "${MPLAYEROPT[@]}" )
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1026
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1027 #### mf:// case
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1028 if [[ $pictsrc ]]; then
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1029 if [[ $slideaudio && $slideaudio != /dev/null ]]; then
20858
4e8dbc741909 update to 0.6.2, patch by Giacomo Comes, comes naic edu
diego
parents: 19614
diff changeset
1030 [[ $(id_find ID_AUDIO_RATE "$slideaudio") != $asr ]] && SRATE="-srate $asr -af-adv force=1" || SRATE=
17507
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1031 CLEAN[${#CLEAN[*]}]="$output".wav
20858
4e8dbc741909 update to 0.6.2, patch by Giacomo Comes, comes naic edu
diego
parents: 19614
diff changeset
1032 mplayer "$slideaudio" $SRATE -vo null -vc dummy -ao "${PCMWAV[@]}" $afm ${mpegchannels:+-channels $mpegchannels -af channels=$mpegchannels}
4e8dbc741909 update to 0.6.2, patch by Giacomo Comes, comes naic edu
diego
parents: 19614
diff changeset
1033 MPLAYEROPT=( "${MPLAYEROPT[@]}" -fps 1/$(id_find ID_LENGTH "$output".wav) -audiofile "$output".wav )
17507
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1034 else
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1035 if [[ $slideaudio == /dev/null ]]; then
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1036 MPLAYEROPT=( "${MPLAYEROPT[@]}" -fps $slidefps )
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1037 encode=0:${encode#?:}
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1038 else
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1039 MPLAYEROPT=( "${MPLAYEROPT[@]}" -fps $slidefps -audiofile /dev/zero -audio-demuxer 20 -rawaudio format=0x1:rate=48000 )
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1040 fi
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1041 fi
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1042 fi
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1043
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1044 #### MENCODERARG is used for mencoding, vobsub dumping
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1045 MENCODERARG=( "${MPLAYEROPT[@]}" ${frames:+-frames $frames} )
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1046
20858
4e8dbc741909 update to 0.6.2, patch by Giacomo Comes, comes naic edu
diego
parents: 19614
diff changeset
1047 MENCODERARG=( "${MENCODERARG[@]}" "${MENCODEROPT[@]}" ${endpos:+-endpos $endpos} ${ofps:+-ofps $ofps} )
17507
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1048 if [[ $mpeg && $mpegchannels ]]; then
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1049 MENCODERARG=( "${MENCODERARG[@]}" -channels $mpegchannels )
20858
4e8dbc741909 update to 0.6.2, patch by Giacomo Comes, comes naic edu
diego
parents: 19614
diff changeset
1050 af=$(echo "${af:--af }${af:+,}" | sed 's/channels=[^,]*,//')channels=$mpegchannels
4e8dbc741909 update to 0.6.2, patch by Giacomo Comes, comes naic edu
diego
parents: 19614
diff changeset
1051 elif [[ $channels ]]; then
4e8dbc741909 update to 0.6.2, patch by Giacomo Comes, comes naic edu
diego
parents: 19614
diff changeset
1052 MENCODERARG=( "${MENCODERARG[@]}" -channels $channels )
4e8dbc741909 update to 0.6.2, patch by Giacomo Comes, comes naic edu
diego
parents: 19614
diff changeset
1053 af=$(echo "${af:--af }${af:+,}" | sed 's/channels=[^,]*,//')channels=$channels
17507
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1054 fi
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1055
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1056 YUVSCALEROPT="-v 1 -n $videonorm ${scale:+-O $frameformat} $YUVSCALEROPT"
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1057
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1058 MPEG2ENCOPT="${cpu:+-M $cpu }-v 1 -S ${split:-50000} -n $videonorm -F $vfr -s -r 16 ${telecine:+-p} $MPEG2ENCOPT"
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1059 case $vfr in
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1060 1|2) MPEG2ENCOPT="-g 6 -G ${GOP:-12} $MPEG2ENCOPT" ;;
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1061 3|6) MPEG2ENCOPT="-g 6 -G ${GOP:-15} $MPEG2ENCOPT" ;;
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1062 4|5|7|8) MPEG2ENCOPT="-g 9 -G ${GOP:-18} $MPEG2ENCOPT" ;;
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1063 esac
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1064 [[ $frameformat = VCD ]] && MPEG2ENCOPT="-R 2 $MPEG2ENCOPT"
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1065 echo "$MPEG2ENCOPT" | grep -q -e '-K hi-res' && YUVSCALEROPT="-M BICUBIC $YUVSCALEROPT" && \
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1066 MPEG2ENCOPT="-4 1 -2 1 $MPEG2ENCOPT" || MPEG2ENCOPT="-4 2 -2 1 $MPEG2ENCOPT"
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1067
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1068 case $frameformat in
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1069 VCD) MPGRES=${MPGRES:-1} ;;
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1070 SVCD)
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1071 case $frameres in
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1072 1) MPGRES=${MPGRES:-3} ;;
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1073 2) MPGRES=${MPGRES:-1} ;;
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1074 esac
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1075 ;;
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1076 DVD)
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1077 case $frameres in
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1078 1) MPGRES=${MPGRES:-7} ;;
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1079 2) MPGRES=${MPGRES:-6} ;;
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1080 3) MPGRES=${MPGRES:-3} ;;
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1081 4) MPGRES=${MPGRES:-2} ;;
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1082 5) MPGRES=${MPGRES:-1} ;;
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1083 esac
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1084 ;;
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1085 esac
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1086 case $MPGRES in
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1087 1) H_RES=352 ; [[ $videonorm = n ]] && V_RES=240 || V_RES=288 ;;
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1088 2) H_RES=352 ; [[ $videonorm = n ]] && V_RES=480 || V_RES=576 ;;
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1089 3) H_RES=480 ; [[ $videonorm = n ]] && V_RES=480 || V_RES=576 ;;
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1090 4) H_RES=528 ; [[ $videonorm = n ]] && V_RES=480 || V_RES=576 ;;
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1091 5) H_RES=544 ; [[ $videonorm = n ]] && V_RES=480 || V_RES=576 ;;
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1092 6) H_RES=704 ; [[ $videonorm = n ]] && V_RES=480 || V_RES=576 ;;
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1093 7) H_RES=720 ; [[ $videonorm = n ]] && V_RES=480 || V_RES=576 ;;
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1094 esac
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1095 case $frameformat in
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1096 VCD)
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1097 : ${vbr:=1152}
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1098 MPEG2ENCOPT="-f 2 -b $vbr -V 46 -B $(((abr*audiostream*101875-vbr*2819+3980000)/100000)) $MPEG2ENCOPT"
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1099 MPLEXOPT="-f 2 -V -b 46 -r $(((abr*audiostream+vbr)*4)) $MPLEXOPT"
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1100 VCDIMAGEROPT="-t vcd2 $VCDIMAGEROPT"
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1101 H_STILL=704
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1102 [[ $videonorm = n ]] && V_STILL=480 || V_STILL=576
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1103 ((MPGRES!=1)) && YUVSCALEROPT="-O SIZE_${H_RES}x${V_RES} ${YUVSCALEROPT/ -O $frameformat}"
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1104 MAXBR=1394
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1105 ;;
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1106 SVCD)
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1107 : ${vbr:=2500}
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1108 MPEG2ENCOPT="-f 5 -b $vbr -V 113 -B $(((abr*audiostream*101250+vbr*742+1665400)/100000)) $MPEG2ENCOPT"
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1109 MPLEXOPT="-V -b 113 -r $(((abr*audiostream+vbr)*4)) $MPLEXOPT"
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1110 if [[ $trick ]]; then
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1111 MPLEXOPT="-f 2 $MPLEXOPT"
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1112 VCDIMAGEROPT="-t vcd2 $VCDIMAGEROPT"
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1113 else
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1114 MPLEXOPT="-f 5 $MPLEXOPT"
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1115 VCDIMAGEROPT="-t svcd $VCDIMAGEROPT"
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1116 fi
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1117 H_STILL=704
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1118 [[ $videonorm = n ]] && V_STILL=480 || V_STILL=576
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1119 ((frameres>1||MPGRES!=3)) && YUVSCALEROPT="-O SIZE_${H_RES}x${V_RES} ${YUVSCALEROPT/ -O $frameformat}"
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1120 MAXBR=2778
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1121 ;;
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1122 DVD)
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1123 : ${vbr:=7500}
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1124 MPEG2ENCOPT="-f 8 -b $vbr -V 230 -B $(((abr*audiostream*101250+vbr*742+1665400)/100000)) $MPEG2ENCOPT"
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1125 MPLEXOPT="-f 8 -V -b 230 -r $(((abr*audiostream+vbr)*4)) $MPLEXOPT"
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1126 H_STILL=720
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1127 [[ $videonorm = n ]] && V_STILL=480 || V_STILL=576
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1128 ((frameres>1||MPGRES!=7)) && YUVSCALEROPT="-O SIZE_${H_RES}x${V_RES} ${YUVSCALEROPT/ -O $frameformat}"
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1129 MAXBR=10080
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1130 ;;
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1131 esac
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1132
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1133 ###############################################################################
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1134 #### mencoder audio/video/pass options
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1135 ###############################################################################
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1136 if [[ $encode ]]; then
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1137 OPTIONS="-noskiplimit -sws $((hispeed?1:7))"
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1138 if [[ $mpeg ]]; then
20858
4e8dbc741909 update to 0.6.2, patch by Giacomo Comes, comes naic edu
diego
parents: 19614
diff changeset
1139 # mencoder can put in the MPEG container:
17507
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1140 # video: mpeg1, mpeg2, mpeg4
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1141 # audio: mp1, mp2, mp3, ac3, aac (not yet: lpcm, dts)
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1142 [[ ${encode%,*} != ?:0:? ]] && : ${mpegaspect:=2}
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1143 #MUX="-mpegopts ${mpegaspect:+vaspect=${ASPECT[mpegaspect]}:}:vbitrate=${vbr}"
20858
4e8dbc741909 update to 0.6.2, patch by Giacomo Comes, comes naic edu
diego
parents: 19614
diff changeset
1144 MUX="-mpegopts "
4e8dbc741909 update to 0.6.2, patch by Giacomo Comes, comes naic edu
diego
parents: 19614
diff changeset
1145 if [[ $telecine ]]; then
4e8dbc741909 update to 0.6.2, patch by Giacomo Comes, comes naic edu
diego
parents: 19614
diff changeset
1146 if [[ $vcodec = mpeg2video || ! $vcodec && $frameformat != VCD ]]; then
4e8dbc741909 update to 0.6.2, patch by Giacomo Comes, comes naic edu
diego
parents: 19614
diff changeset
1147 if [[ $vfr == [12] ]]; then
4e8dbc741909 update to 0.6.2, patch by Giacomo Comes, comes naic edu
diego
parents: 19614
diff changeset
1148 [[ $videonorm = n ]] && MUX2=":telecine" || MUX2=":film2pal"
4e8dbc741909 update to 0.6.2, patch by Giacomo Comes, comes naic edu
diego
parents: 19614
diff changeset
1149 else
4e8dbc741909 update to 0.6.2, patch by Giacomo Comes, comes naic edu
diego
parents: 19614
diff changeset
1150 do_log "++ WARN: [$PROGNAME] telecine only works with 24000/1001 or 24 fps, disabling it"
4e8dbc741909 update to 0.6.2, patch by Giacomo Comes, comes naic edu
diego
parents: 19614
diff changeset
1151 fi
4e8dbc741909 update to 0.6.2, patch by Giacomo Comes, comes naic edu
diego
parents: 19614
diff changeset
1152 else
4e8dbc741909 update to 0.6.2, patch by Giacomo Comes, comes naic edu
diego
parents: 19614
diff changeset
1153 do_log "++ WARN: [$PROGNAME] telecine only works for MPEG-2, disabling it"
4e8dbc741909 update to 0.6.2, patch by Giacomo Comes, comes naic edu
diego
parents: 19614
diff changeset
1154 fi
4e8dbc741909 update to 0.6.2, patch by Giacomo Comes, comes naic edu
diego
parents: 19614
diff changeset
1155 fi
17507
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1156 case $frameformat in
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1157 VCD) MUX="${MUX}format=xvcd" LAVC="vcodec=${vcodec:-mpeg1video}${LAVC:-:vrc_buf_size=327:vrc_minrate=${vbr}:vrc_maxrate=${vbr}}" ;;
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1158 SVCD) if [[ $trick ]]; then MUX="${MUX}format=xvcd" ; else
20858
4e8dbc741909 update to 0.6.2, patch by Giacomo Comes, comes naic edu
diego
parents: 19614
diff changeset
1159 MUX="${MUX}format=xsvcd" ; fi ; LAVC="vcodec=${vcodec:-mpeg2video}:vrc_buf_size=917" ;;
17507
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1160 DVD) MUX="${MUX}format=dvd" LAVC="vcodec=${vcodec:-mpeg2video}:vrc_buf_size=1835" ;;
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1161 esac
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1162 case $vfr in
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1163 1|2) LAVC="$LAVC:keyint=$((hispeed?1:${GOP:-12}))" ;;
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1164 3|6) LAVC="$LAVC:keyint=$((hispeed?1:${GOP:-15}))" ;;
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1165 4|5|7|8) LAVC="$LAVC:keyint=$((hispeed?1:${GOP:-18}))" ;;
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1166 esac
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1167 [[ $frameformat = VCD && ! $bframes ]] && LAVC="$LAVC:vmax_b_frames=2"
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1168 [[ $mpegmbr ]] && [[ $mpegmbr -lt $vbr ]] && mpegmbr=$vbr
20858
4e8dbc741909 update to 0.6.2, patch by Giacomo Comes, comes naic edu
diego
parents: 19614
diff changeset
1169 #### -a 1 is SAR=1 (do not scale), not DAR=1
4e8dbc741909 update to 0.6.2, patch by Giacomo Comes, comes naic edu
diego
parents: 19614
diff changeset
1170 [[ $mpegaspect != 1 ]] && LAVC="${LAVC}:aspect=${ASPECT[mpegaspect]}"
17507
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1171 LAVC="${LAVC}${mpegmbr:+:vrc_maxrate=$mpegmbr}${inter_matrix:+:inter_matrix=${inter_matrix}}${intra_matrix:+:intra_matrix=${intra_matrix}}"
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1172 OF="-of mpeg"
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1173 NOSKIP=-noskip
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1174 vbitrate=$vbr
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1175 if [[ ${encode%,*} != ?:0:? ]]; then
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1176 for ((a=0;a<${#MENCODERARG[*]};a++)); do
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1177 while [[ ${MENCODERARG[a]} = -vf ]]; do
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1178 unset MENCODERARG[a] MENCODERARG[a+1]
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1179 MENCODERARG=( "${MENCODERARG[@]}" )
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1180 done
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1181 done
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1182 MENCODERARG=( "${MENCODERARG[@]}" ${vf:--vf }${vf:+,}${scale:+scale=${H_RES}:${V_RES}${interlaced:+:1},}harddup )
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1183 fi
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1184 fi
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1185
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1186 BASIC="$LAVC:vbitrate=${vbitrate}${cpu:+:threads=$cpu}${bframes:+:vmax_b_frames=$bframes}"
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1187 ((hispeed)) && BASIC="$BASIC:vme=0" || BASIC="$BASIC:psnr"
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1188 [[ $mpeg && $frameformat = VCD ]] || BASIC="$BASIC${interlaced:+:ildct:ilme}"
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1189 echo "$YUVSCALEROPT" | grep -q -e '-O MONOCHROME' && BASIC="$BASIC:gray"
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1190
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1191 HQ="${BASIC}:mbd=2"
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1192
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1193 if [[ $mpeg ]]; then
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1194 #### dia=6 could be added
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1195 BESTSIZE="${BASIC}:mbd=1:loop:mv0:vlelim=-4:vcelim=7:trell:precmp=1:cmp=1:subcmp=1"
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1196 [[ ! $bframes ]] && BESTSIZE="$BESTSIZE:vmax_b_frames=2"
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1197
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1198 #### last_pred=1-2 could be added
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1199 BESTQUALITY="${BASIC}:mbd=2:mv0:precmp=6:cmp=6:subcmp=6"
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1200 [[ $vbitrate -ge 3500 && $frameformat != VCD && $vcodec != mpeg1video ]] && BESTQUALITY="$BESTQUALITY:dc=9"
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1201 fi
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1202
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1203 case $encode in
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1204 0:?:?|0:?:?,*) AUDIOPASS="-oac copy" ;;
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1205 1:?:?|1:?:?,*) AUDIOPASS="-oac pcm" ;;
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1206 2:?:?|2:?:?,*) AUDIOPASS="-oac mp3lame -lameopts ${acustom:-fast}" ;;
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1207 3:?:?) AUDIOPASS="-oac mp3lame -lameopts preset=standard" ;;
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1208 4:?:?) AUDIOPASS="-oac lavc -lavcopts acodec=mp2:abitrate=$abr" ;;
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1209 5:?:?) AUDIOPASS="-oac lavc -lavcopts acodec=mp3:abitrate=$abr" ;;
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1210 6:?:?) AUDIOPASS="-oac lavc -lavcopts acodec=ac3:abitrate=$abr" ;;
20858
4e8dbc741909 update to 0.6.2, patch by Giacomo Comes, comes naic edu
diego
parents: 19614
diff changeset
1211 7:?:?) AUDIOPASS="-oac $TOOLAME -${TOOLAME}opts br=$abr" ;;
4e8dbc741909 update to 0.6.2, patch by Giacomo Comes, comes naic edu
diego
parents: 19614
diff changeset
1212 8:?:?) AUDIOPASS="-oac faac -faacopts ${acustom:-br=$abr}" ;;
17507
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1213 3:?:?,*) AUDIOPASS="-oac mp3lame -lameopts preset=${encode#*,}" ;;
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1214 4:?:?,*) AUDIOPASS="-oac lavc -lavcopts acodec=mp2:abitrate=${encode#*,}" ;;
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1215 5:?:?,*) AUDIOPASS="-oac lavc -lavcopts acodec=mp3:abitrate=${encode#*,}" ;;
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1216 6:?:?,*) AUDIOPASS="-oac lavc -lavcopts acodec=ac3:abitrate=${encode#*,}" ;;
20858
4e8dbc741909 update to 0.6.2, patch by Giacomo Comes, comes naic edu
diego
parents: 19614
diff changeset
1217 7:?:?,*) AUDIOPASS="-oac $TOOLAME -${TOOLAME}opts br=${encode#*,}" ;;
4e8dbc741909 update to 0.6.2, patch by Giacomo Comes, comes naic edu
diego
parents: 19614
diff changeset
1218 8:?:?,*) AUDIOPASS="-oac faac -faacopts ${acustom:-br=${encode#*,}}" ;;
17507
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1219 esac
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1220 encode=${encode%,*}
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1221 case $encode in
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1222 ?:0:?) VIDEOPASS="$OF $MUX -ovc copy $NOSKIP" ; encode=${encode%%:*}:0:1 ; turbo=0 ;; # copy uses only one pass
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1223 ?:1:?) VIDEOPASS="$OF $MUX$MUX2 -ovc lavc -lavcopts ${BASIC}${vcustom:+:$vcustom}" ; : ${turbo:=0} ;;
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1224 ?:2:?) VIDEOPASS="$OF $MUX$MUX2 -ovc lavc -lavcopts ${HQ}" ; : ${turbo:=1} ;;
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1225 ?:3:?) VIDEOPASS="$OF $MUX$MUX2 -ovc lavc -lavcopts ${BESTSIZE}" ; : ${turbo:=1} ;;
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1226 ?:4:?) VIDEOPASS="$OF $MUX$MUX2 -ovc lavc -lavcopts ${BESTQUALITY}" ; : ${turbo:=1} ;;
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1227 esac
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1228 ((turbo)) && turbo=:turbo || turbo=
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1229 PASS=${encode##*:}
20858
4e8dbc741909 update to 0.6.2, patch by Giacomo Comes, comes naic edu
diego
parents: 19614
diff changeset
1230 [[ $normalize && $encode != 0:?:? ]] && af=${af:--af }${af:+,}volnorm
17507
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1231 fi
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1232
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1233
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1234 ###############################################################################
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1235 #### more functions
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1236 ###############################################################################
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1237 status_bit () {
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1238 local a
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1239 case $1 in
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1240 avi) bit=0 ;;
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1241 mpv) bit=1 ;;
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1242 mpa) bit=2 ;;
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1243 mpg) bit=3 ;;
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1244 img) bit=4 ;;
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1245 sub) bit=5 ;;
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1246 ach) bit=6 ;;
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1247 fno) bit=7 ;;
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1248 ch0) bit=8 ;;
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1249 sbm) bit=9 ;;
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1250 spl) bit=10 ;;
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1251 esac
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1252 if [[ $2 = set ]]; then
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1253 skip=$((skip|1<<bit))
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1254 else
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1255 return $(((skip&1<<bit) && 1))
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1256 fi
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1257 }
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1258 ###############################################################################
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1259 file_size () { #fsize,fint,ffrac,fpre
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1260 local -a PRE=([1]=K M G T)
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1261 local i=0
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1262 fsize=$(ls -l "$1" | awk '{print $5}')
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1263 fint=$fsize
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1264 ffrac=0
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1265 while ((fint>=1024)) ; do
20858
4e8dbc741909 update to 0.6.2, patch by Giacomo Comes, comes naic edu
diego
parents: 19614
diff changeset
1266 ((fint/1024 < 1024)) && ffrac=$((( fint+=51 )%1024))
17507
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1267 i=$((++i))
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1268 fint=$((fint/1024))
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1269 done
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1270 ffrac=$((ffrac*10/1024))
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1271 fpre=${PRE[i]}
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1272 }
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1273 ###############################################################################
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1274 show_file_info () {
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1275 file_size "$2"
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1276 echo " $1: $2 is $fsize bytes, $fint.$ffrac ${fpre}B" >>"$output".log
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1277 }
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1278 ###############################################################################
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1279 show_finalvideo_info () {
20858
4e8dbc741909 update to 0.6.2, patch by Giacomo Comes, comes naic edu
diego
parents: 19614
diff changeset
1280 local codec TYPE i VIDEO OUT ASPECT CH FAAC SUBST
4e8dbc741909 update to 0.6.2, patch by Giacomo Comes, comes naic edu
diego
parents: 19614
diff changeset
1281 SUBST=
17507
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1282 VIDEO="$(mplayer -nocache -frames 0 -vo null -nosound "$2" 2>/dev/null | grep "^VIDEO:")"
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1283 if [[ ! $VIDEO ]]; then
20858
4e8dbc741909 update to 0.6.2, patch by Giacomo Comes, comes naic edu
diego
parents: 19614
diff changeset
1284 # MPEGs with MPEG-4 video do not show all the video informations in one line,
17507
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1285 # assebmling the informations (kbps is missing):
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1286 OUT="$(mplayer -nocache -frames 1 -vo null -nosound -v "$2" 2>/dev/null)"
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1287 if echo "$OUT" | grep -q '^\[V].*fourcc:0x10000004' ; then
20858
4e8dbc741909 update to 0.6.2, patch by Giacomo Comes, comes naic edu
diego
parents: 19614
diff changeset
1288 VIDEO="VIDEO: MPEG-4 $(echo "$OUT" | awk '$1=="VO:"&&$2=="[null]"{print $3}')"
17507
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1289 ASPECT=$(echo "$OUT" | awk '$1=="Movie-Aspect"{print $3}')
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1290 case $ASPECT in
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1291 undefined) VIDEO="$VIDEO (aspect 1)" ;;
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1292 1.33:1) VIDEO="$VIDEO (aspect 2)" ;;
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1293 1.78:1) VIDEO="$VIDEO (aspect 3)" ;;
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1294 2.21:1) VIDEO="$VIDEO (aspect 4)" ;;
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1295 *) VIDEO="$VIDEO (aspect $ASPECT)" ;;
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1296 esac
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1297 VIDEO="$VIDEO $(echo "$OUT" | awk '$1=="[V]"{print $5}')"
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1298 fi
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1299 fi
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1300 echo " $1: $VIDEO" >>"$output".log
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1301 #### removed -vc dummy
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1302 for i in $(mplayer -vo null -ao null -nocache -frames 1 -v "$2" 2>/dev/null | awk '/==> Found audio str/{print $NF}' | sort -n) ; do
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1303 echo -n " $1: AUDIO[$i]: " >>"$output".log
20858
4e8dbc741909 update to 0.6.2, patch by Giacomo Comes, comes naic edu
diego
parents: 19614
diff changeset
1304 codec=$(mplayer -ac mp3, -nocache -frames 0 -v -ao null -vo null "$2" -aid $i 2>/dev/null | \
4e8dbc741909 update to 0.6.2, patch by Giacomo Comes, comes naic edu
diego
parents: 19614
diff changeset
1305 sed '/Selected audio codec:/!d;s/[^(]*(//;s/).*//;s/AAC.*/& AAC/;s/.* //')
4e8dbc741909 update to 0.6.2, patch by Giacomo Comes, comes naic edu
diego
parents: 19614
diff changeset
1306 #### AAC info are insufficient/incorrect
4e8dbc741909 update to 0.6.2, patch by Giacomo Comes, comes naic edu
diego
parents: 19614
diff changeset
1307 if [[ $codec = AAC ]]; then
4e8dbc741909 update to 0.6.2, patch by Giacomo Comes, comes naic edu
diego
parents: 19614
diff changeset
1308 CH=$(mplayer -nocache -frames 0 -v -ao null -vo null "$2" -aid $i 2>/dev/null | awk '/FAAD: Negotiated samplerate:/{print $NF}')
4e8dbc741909 update to 0.6.2, patch by Giacomo Comes, comes naic edu
diego
parents: 19614
diff changeset
1309 if type &>/dev/null faad ; then
4e8dbc741909 update to 0.6.2, patch by Giacomo Comes, comes naic edu
diego
parents: 19614
diff changeset
1310 mplayer -dumpaudio -dumpfile "$output".audio -aid $i "$2" 2>/dev/null
4e8dbc741909 update to 0.6.2, patch by Giacomo Comes, comes naic edu
diego
parents: 19614
diff changeset
1311 FAAC=$(faad -i "$output".audio 2>&1 | tail -2 | head -n 1)
4e8dbc741909 update to 0.6.2, patch by Giacomo Comes, comes naic edu
diego
parents: 19614
diff changeset
1312 #ADTS, 4.087 sec, 103 kbps, 44100 Hz
4e8dbc741909 update to 0.6.2, patch by Giacomo Comes, comes naic edu
diego
parents: 19614
diff changeset
1313 rm -f "$output".audio
4e8dbc741909 update to 0.6.2, patch by Giacomo Comes, comes naic edu
diego
parents: 19614
diff changeset
1314 SUBST="s/AAC.*/AAC:$(echo "$FAAC" | sed 's/.*,\([^,]*Hz\).*/\1/'), "
4e8dbc741909 update to 0.6.2, patch by Giacomo Comes, comes naic edu
diego
parents: 19614
diff changeset
1315 SUBST="${SUBST}$CH ch, $(echo "$FAAC" | sed 's/,.*//'),"
4e8dbc741909 update to 0.6.2, patch by Giacomo Comes, comes naic edu
diego
parents: 19614
diff changeset
1316 SUBST="${SUBST}$(echo "$FAAC" | sed 's/.*,\([^,]*kbps\).*/\1/')"
4e8dbc741909 update to 0.6.2, patch by Giacomo Comes, comes naic edu
diego
parents: 19614
diff changeset
1317 SUBST="${SUBST}/;"
4e8dbc741909 update to 0.6.2, patch by Giacomo Comes, comes naic edu
diego
parents: 19614
diff changeset
1318 else
4e8dbc741909 update to 0.6.2, patch by Giacomo Comes, comes naic edu
diego
parents: 19614
diff changeset
1319 SUBST="s/2 ch,/$CH ch,/;"
4e8dbc741909 update to 0.6.2, patch by Giacomo Comes, comes naic edu
diego
parents: 19614
diff changeset
1320 fi
4e8dbc741909 update to 0.6.2, patch by Giacomo Comes, comes naic edu
diego
parents: 19614
diff changeset
1321 fi
17507
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1322 mplayer -ac mp3, -nocache -frames 0 -v -ao null -vo null "$2" -aid $i 2>/dev/null | sed '/^Opening audio decode/,/^AUDIO:/!d;s/\r//g' | \
20858
4e8dbc741909 update to 0.6.2, patch by Giacomo Comes, comes naic edu
diego
parents: 19614
diff changeset
1323 grep -e '^AC3:' -e '^MPEG' -e '^AUDIO:' | sed 's/AUDIO/'"$codec"'/;'"$SUBST"'q' >>"$output".log
17507
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1324 done
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1325 TYPE=$1
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1326 shift
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1327 for i ; do
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1328 show_file_info "$TYPE" "$i"
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1329 done
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1330 }
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1331 ###############################################################################
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1332 video_duration () {
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1333 mencoder "$@" -ovc copy -nosound -o /dev/null -quiet 2>&1 | awk '/^Video stream:/{print $10+$10/$12}'
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1334 }
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1335 ###############################################################################
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1336 job_exit () {
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1337 EXIT=$?
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1338 status_bit mpg || [[ ! -f ${output}.mpg && ! -f ${output}01.mpg ]] || show_finalvideo_info "MPEG" "${output}"*.mpg
20858
4e8dbc741909 update to 0.6.2, patch by Giacomo Comes, comes naic edu
diego
parents: 19614
diff changeset
1339 [[ $usesbr ]] && ((DEBUG && usesbr>6)) && awk -v u=$usesbr -v f=$fsize \
4e8dbc741909 update to 0.6.2, patch by Giacomo Comes, comes naic edu
diego
parents: 19614
diff changeset
1340 'BEGIN{b=u*1024*1024;printf("--DEBUG: [usesbr] target: %dMB (%d bytes), error: %f%%\n",u,b,(b-f)*100/b)}' >>"$output".log
17507
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1341 sec=$(($(pr_time)-STARTTIME))
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1342 echo " JOBEND: $output $(pr_date) ($((sec/3600))h$((sec/60%60))m$((sec%60))s)" >>"$output".log
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1343 rm -f "${CLEAN[@]}" psnr_??????.log
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1344 ((DEBUG)) && exec >&1- >&2- && exec >&3
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1345 if [[ -f $output.yuvscaler.log || -f $output.mpeg2enc.log ]]; then
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1346 echo
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1347 else
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1348 ((!EXIT)) && [[ ! $quiet ]] && cat "$output".log
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1349 fi
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1350 ((DEBUG)) && rm -f "$output".debug.fifo && kill $PROCTEE
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1351 }
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1352 ###############################################################################
20858
4e8dbc741909 update to 0.6.2, patch by Giacomo Comes, comes naic edu
diego
parents: 19614
diff changeset
1353 me_log () {
4e8dbc741909 update to 0.6.2, patch by Giacomo Comes, comes naic edu
diego
parents: 19614
diff changeset
1354 rm -f "$output".fifo
4e8dbc741909 update to 0.6.2, patch by Giacomo Comes, comes naic edu
diego
parents: 19614
diff changeset
1355 mkfifo "$output".fifo
4e8dbc741909 update to 0.6.2, patch by Giacomo Comes, comes naic edu
diego
parents: 19614
diff changeset
1356 tee -a /dev/stderr <"$output".fifo | sed 's/.*\r//' | \
4e8dbc741909 update to 0.6.2, patch by Giacomo Comes, comes naic edu
diego
parents: 19614
diff changeset
1357 awk '/^PSNR:|^M[EP][ln]|^There are |^\[open]|^audio stream:|^number of|^subtitle|^==> |^Recommended video bitrate/{sub(/^/," INFO: [mencoder] ");
4e8dbc741909 update to 0.6.2, patch by Giacomo Comes, comes naic edu
diego
parents: 19614
diff changeset
1358 print}' >>"$output".log &
17507
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1359 }
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1360 ###############################################################################
20858
4e8dbc741909 update to 0.6.2, patch by Giacomo Comes, comes naic edu
diego
parents: 19614
diff changeset
1361 me_bit_log () {
4e8dbc741909 update to 0.6.2, patch by Giacomo Comes, comes naic edu
diego
parents: 19614
diff changeset
1362 rm -f "$output".fifo
4e8dbc741909 update to 0.6.2, patch by Giacomo Comes, comes naic edu
diego
parents: 19614
diff changeset
1363 mkfifo "$output".fifo
4e8dbc741909 update to 0.6.2, patch by Giacomo Comes, comes naic edu
diego
parents: 19614
diff changeset
1364 tee -a /dev/stderr <"$output".fifo | sed 's/.*\r//;/^Recommended video bitrate/!d;s/^/ INFO: [mencoder] /' >>"$output".log &
17507
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1365 }
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1366 ###############################################################################
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1367 check_abr () {
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1368 # abr permitted:
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1369 # ac3: ( 8000/11025/12000) 8 16 24 32 40 48 56 64 80 96 112 128 144 160
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1370 # ac3: (16000/22050/24000) 16 24 32 40 48 56 64 80 96 112 128 160 192 224 256 288 320
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1371 # ac3: (32000/44100/48000) 32 40 48 56 64 80 96 112 128 160 192 224 256 320 384 448 512 576 640
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1372 # mp3: ( 8000/11025/12000) 8 16 24 32 40 48 56 64 80 96 112 128 144 160
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1373 # mp3: (16000/22050/24000) 8 16 24 32 40 48 56 64 80 96 112 128 144 160
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1374 # mp3: (32000/44100/48000) 32 40 48 56 64 80 96 112 128 160 192 224 256 320
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1375 # mp2: ( 8000/11025/12000)
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1376 # mp2: (16000/22050/24000) 8 16 24 32 40 48 56 64 80 96 112 128 144 160
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1377 # mp2: (32000/44100/48000) 32 48 56 64 80 96 112 128 160 192 224 256 320 384
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1378 # mp1: ( 8000/11025/12000)
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1379 # mp1: (16000/22050/24000) 32 48 56 64 80 96 112 128 144 160 176 192 224 256
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1380 # mp1: (32000/44100/48000) 32 64 96 128 160 192 224 256 288 320 352 384 416 448
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1381 case $1 in
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1382 ac3)
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1383 case $2 in
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1384 8000|11025|12000)
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1385 case $3 in
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1386 8|16|24|32|40|48|56|64|80|96|112|128|144|160) : ;;
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1387 *) return 1 ;;
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1388 esac
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1389 ;;
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1390 16000|22050|24000)
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1391 case $3 in
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1392 16|24|32|40|48|56|64|80|96|112|128|160|192|224|256|288|320) : ;;
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1393 *) return 1 ;;
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1394 esac
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1395 ;;
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1396 32000|44100|48000)
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1397 case $3 in
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1398 32|40|48|56|64|80|96|112|128|160|192|224|256|320|384|448|512|576|640) : ;;
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1399 *) return 1 ;;
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1400 esac
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1401 ;;
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1402 *) return 1 ;;
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1403 esac
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1404 ;;
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1405 mp3)
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1406 case $2 in
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1407 8000|11025|12000|16000|22050|24000)
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1408 case $3 in
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1409 8|16|24|32|40|48|56|64|80|96|112|128|144|160) : ;;
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1410 *) return 1 ;;
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1411 esac
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1412 ;;
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1413 32000|44100|48000)
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1414 case $3 in
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1415 32|40|48|56|64|80|96|112|128|160|192|224|256|320) : ;;
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1416 *) return 1 ;;
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1417 esac
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1418 ;;
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1419 *) return 1 ;;
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1420 esac
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1421 ;;
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1422 mp2)
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1423 case $2 in
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1424 16000|22050|24000)
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1425 case $3 in
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1426 8|16|24|32|40|48|56|64|80|96|112|128|144|160) : ;;
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1427 *) return 1 ;;
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1428 esac
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1429 ;;
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1430 32000|44100|48000)
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1431 case $3 in
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1432 32|48|56|64|80|96|112|128|160|192|224|256|320|384) : ;;
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1433 *) return 1 ;;
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1434 esac
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1435 ;;
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1436 *) return 1 ;;
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1437 esac
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1438 ;;
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1439 mp1)
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1440 case $2 in
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1441 16000|22050|24000)
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1442 case $3 in
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1443 32|48|56|64|80|96|112|128|144|160|176|192|224|256) : ;;
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1444 *) return 1 ;;
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1445 esac
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1446 ;;
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1447 32000|44100|48000)
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1448 case $3 in
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1449 32|64|96|128|160|192|224|256|288|320|352|384|416|448) : ;;
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1450 *) return 1 ;;
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1451 esac
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1452 ;;
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1453 *) return 1 ;;
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1454 esac
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1455 ;;
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1456 *) return 1 ;;
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1457 esac
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1458 }
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1459 ###############################################################################
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1460 debug_line () {
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1461 echo "--DEBUG: [$PROGNAME] $2($1) $(eval echo $(sed -n $1p "$PROGFILE" | sed 's/ |.*//;s/.>.*//;s/</\\\</'))" >>"$output".log
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1462 }
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1463 ###############################################################################
20858
4e8dbc741909 update to 0.6.2, patch by Giacomo Comes, comes naic edu
diego
parents: 19614
diff changeset
1464 error_line () {
4e8dbc741909 update to 0.6.2, patch by Giacomo Comes, comes naic edu
diego
parents: 19614
diff changeset
1465 echo "--DEBUG: [$PROGNAME] $1"
4e8dbc741909 update to 0.6.2, patch by Giacomo Comes, comes naic edu
diego
parents: 19614
diff changeset
1466 echo "**ERROR: [$PROGNAME] there has been an error during the execution of the previous line, this should not happen"
4e8dbc741909 update to 0.6.2, patch by Giacomo Comes, comes naic edu
diego
parents: 19614
diff changeset
1467 echo "possible causes:"
4e8dbc741909 update to 0.6.2, patch by Giacomo Comes, comes naic edu
diego
parents: 19614
diff changeset
1468 echo " 0) missing or misspelled input stream"
4e8dbc741909 update to 0.6.2, patch by Giacomo Comes, comes naic edu
diego
parents: 19614
diff changeset
1469 echo " 1) the input stream is corrupted"
4e8dbc741909 update to 0.6.2, patch by Giacomo Comes, comes naic edu
diego
parents: 19614
diff changeset
1470 echo " -> try a different input stream"
4e8dbc741909 update to 0.6.2, patch by Giacomo Comes, comes naic edu
diego
parents: 19614
diff changeset
1471 echo " 2) one of the options used has triggered a bug present only on your combination of architecture/compiler/distribution"
4e8dbc741909 update to 0.6.2, patch by Giacomo Comes, comes naic edu
diego
parents: 19614
diff changeset
1472 echo " -> try to recompile MPlayer with a different compiler version or try another distribution"
4e8dbc741909 update to 0.6.2, patch by Giacomo Comes, comes naic edu
diego
parents: 19614
diff changeset
1473 if ((SVN)); then
4e8dbc741909 update to 0.6.2, patch by Giacomo Comes, comes naic edu
diego
parents: 19614
diff changeset
1474 echo " 3) one of the options used is not valid or is buggy for your SVN/unsupported version of MPlayer/MEncoder"
4e8dbc741909 update to 0.6.2, patch by Giacomo Comes, comes naic edu
diego
parents: 19614
diff changeset
1475 echo " -> check MPlayer's man page and/or try a supported release of MPlayer"
4e8dbc741909 update to 0.6.2, patch by Giacomo Comes, comes naic edu
diego
parents: 19614
diff changeset
1476 fi
4e8dbc741909 update to 0.6.2, patch by Giacomo Comes, comes naic edu
diego
parents: 19614
diff changeset
1477 echo
4e8dbc741909 update to 0.6.2, patch by Giacomo Comes, comes naic edu
diego
parents: 19614
diff changeset
1478 echo "submit a bugreport if you think this is a bug in $PROGNAME"
4e8dbc741909 update to 0.6.2, patch by Giacomo Comes, comes naic edu
diego
parents: 19614
diff changeset
1479 exit $ret
4e8dbc741909 update to 0.6.2, patch by Giacomo Comes, comes naic edu
diego
parents: 19614
diff changeset
1480 }
4e8dbc741909 update to 0.6.2, patch by Giacomo Comes, comes naic edu
diego
parents: 19614
diff changeset
1481 ###############################################################################
17507
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1482 check_mencoder_abr () {
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1483 local codec lib ASR
20858
4e8dbc741909 update to 0.6.2, patch by Giacomo Comes, comes naic edu
diego
parents: 19614
diff changeset
1484 codec=([4]=mp2 mp3 ac3 mp2 aac)
4e8dbc741909 update to 0.6.2, patch by Giacomo Comes, comes naic edu
diego
parents: 19614
diff changeset
1485 lib=([4]=libavcodec libavcodec libavcodec lib${TOOLAME} libfaac)
17507
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1486 ASR=${encode%%:*}
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1487 check_abr ${codec[ASR]} $1 $2 || ! echo "**ERROR: [$PROGNAME] ${lib[ASR]} does not support $2 kbps / $1 Hz for ${codec[ASR]}" || exit 1
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1488 }
20858
4e8dbc741909 update to 0.6.2, patch by Giacomo Comes, comes naic edu
diego
parents: 19614
diff changeset
1489 ###############################################################################
4e8dbc741909 update to 0.6.2, patch by Giacomo Comes, comes naic edu
diego
parents: 19614
diff changeset
1490 is_film2pal () {
4e8dbc741909 update to 0.6.2, patch by Giacomo Comes, comes naic edu
diego
parents: 19614
diff changeset
1491 local a
4e8dbc741909 update to 0.6.2, patch by Giacomo Comes, comes naic edu
diego
parents: 19614
diff changeset
1492 a=$(mplayer -nocache "$@" -vo null -nosound -benchmark -frames 60 -noquiet 2>/dev/null | tr '\015' '\012' | tail | \
4e8dbc741909 update to 0.6.2, patch by Giacomo Comes, comes naic edu
diego
parents: 19614
diff changeset
1493 awk -F/ '$1~/^V:/{s=$1;t=$2}END{match(s,/ [0-9]+$/);n=substr(s,RSTART+1);match(t,/[0-9]+ /);m=substr(t,1,RLENGTH-1);r=n/m;if(r>1.02)print "24"}')
4e8dbc741909 update to 0.6.2, patch by Giacomo Comes, comes naic edu
diego
parents: 19614
diff changeset
1494 [[ $a ]] && a=$(mplayer -nocache "$@" -vo null -nosound -benchmark -frames 1500 -noquiet 2>/dev/null | tr '\015' '\012' | tail | \
4e8dbc741909 update to 0.6.2, patch by Giacomo Comes, comes naic edu
diego
parents: 19614
diff changeset
1495 awk -F/ '$1~/^V:/{s=$1;t=$2}END{match(s,/ [0-9]+$/);n=substr(s,RSTART+1);match(t,/[0-9]+ /);m=substr(t,1,RLENGTH-1);r=n/m;
4e8dbc741909 update to 0.6.2, patch by Giacomo Comes, comes naic edu
diego
parents: 19614
diff changeset
1496 if(r>1.042)print "24000/1001fps";if(r<1.042&&r>1.041)print "24fps"}')
4e8dbc741909 update to 0.6.2, patch by Giacomo Comes, comes naic edu
diego
parents: 19614
diff changeset
1497 echo "$a"
4e8dbc741909 update to 0.6.2, patch by Giacomo Comes, comes naic edu
diego
parents: 19614
diff changeset
1498 }
17507
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1499
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1500 ###############################################################################
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1501 #### ERROR if some options conflict is detected part 2/2
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1502 ###############################################################################
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1503 #### libavcodec codec/asr/abr
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1504 #### libtoolame asr/abr
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1505 #### libmp3lame asr
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1506 #### no check is done on the other channel in case of multiaudio
20858
4e8dbc741909 update to 0.6.2, patch by Giacomo Comes, comes naic edu
diego
parents: 19614
diff changeset
1507 if [[ $encode == [2-8]:?:? ]]; then
17507
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1508 if [[ $srate ]]; then
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1509 r=$srate
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1510 else
20858
4e8dbc741909 update to 0.6.2, patch by Giacomo Comes, comes naic edu
diego
parents: 19614
diff changeset
1511 r=$(id_find ID_AUDIO_RATE "${MPLAYERINFO[@]}")
4e8dbc741909 update to 0.6.2, patch by Giacomo Comes, comes naic edu
diego
parents: 19614
diff changeset
1512 if [[ ! $r ]]; then
4e8dbc741909 update to 0.6.2, patch by Giacomo Comes, comes naic edu
diego
parents: 19614
diff changeset
1513 do_log "++ WARN: [$PROGNAME] failure to detect the audio sample rate of the input stream"
4e8dbc741909 update to 0.6.2, patch by Giacomo Comes, comes naic edu
diego
parents: 19614
diff changeset
1514 [[ ! $multiaudio && ! $audioid ]] && do_log "++ WARN: [$PROGNAME] if your source video does not have audio use -encode 0:${encode#*:}" || \
4e8dbc741909 update to 0.6.2, patch by Giacomo Comes, comes naic edu
diego
parents: 19614
diff changeset
1515 do_log "++ WARN: [$PROGNAME] probably is incorrect the audio stream selected with -${audioid:+aid}${multiaudio:+multiaudio}"
4e8dbc741909 update to 0.6.2, patch by Giacomo Comes, comes naic edu
diego
parents: 19614
diff changeset
1516 fi
17507
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1517 if [[ $mpeg && ! $usespeed ]]; then
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1518 case $frameformat in
20858
4e8dbc741909 update to 0.6.2, patch by Giacomo Comes, comes naic edu
diego
parents: 19614
diff changeset
1519 *VCD) ((r != 44100)) && do_log "++ WARN: [$PROGNAME] $frameformat standard requires 44100kHz audio, add -srate 44100" ;;
4e8dbc741909 update to 0.6.2, patch by Giacomo Comes, comes naic edu
diego
parents: 19614
diff changeset
1520 DVD) ((r != 48000)) && do_log "++ WARN: [$PROGNAME] $frameformat standard requires 48000kHz audio, add -srate 48000" ;;
17507
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1521 esac
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1522 fi
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1523 fi
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1524 if [[ $encode == [4-7]:?:? ]]; then
20858
4e8dbc741909 update to 0.6.2, patch by Giacomo Comes, comes naic edu
diego
parents: 19614
diff changeset
1525 check_mencoder_abr "$r" ${AUDIOPASS##*=}
4e8dbc741909 update to 0.6.2, patch by Giacomo Comes, comes naic edu
diego
parents: 19614
diff changeset
1526 elif [[ $encode == 8:?:? ]]; then
4e8dbc741909 update to 0.6.2, patch by Giacomo Comes, comes naic edu
diego
parents: 19614
diff changeset
1527 case $r in
4e8dbc741909 update to 0.6.2, patch by Giacomo Comes, comes naic edu
diego
parents: 19614
diff changeset
1528 8000|11025|12000|16000|22050|24000|32000|44100|48000|64000|88200|96000) : ;;
4e8dbc741909 update to 0.6.2, patch by Giacomo Comes, comes naic edu
diego
parents: 19614
diff changeset
1529 *) echo "**ERROR: [$PROGNAME] libfaac does not support $r Hz sample rate" ; exit 1 ;;
4e8dbc741909 update to 0.6.2, patch by Giacomo Comes, comes naic edu
diego
parents: 19614
diff changeset
1530 esac
17507
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1531 else
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1532 case $r in
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1533 8000|11025|12000|16000|22050|24000|32000|44100|48000) : ;;
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1534 *) echo "**ERROR: [$PROGNAME] libmp3lame does not support $r Hz sample rate" ; exit 1 ;;
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1535 esac
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1536 fi
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1537 fi
20858
4e8dbc741909 update to 0.6.2, patch by Giacomo Comes, comes naic edu
diego
parents: 19614
diff changeset
1538 #### copy of non-MPEG audio in a VCD
17507
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1539 if [[ $step -gt 1 && $frameformat = VCD && $encode == 0:?:? && ( $mpeg || ${!audioformat} = copy ) && ! $testmca && ! $pictsrc ]]; then
20858
4e8dbc741909 update to 0.6.2, patch by Giacomo Comes, comes naic edu
diego
parents: 19614
diff changeset
1540 a=$(id_find ID_AUDIO_CODEC "${MPLAYERINFO[@]}")
17507
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1541 [[ $a != mp3 ]] && echo "**ERROR: [$PROGNAME] you cannot copy $a audio in a $frameformat" && exit 1
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1542 fi
20858
4e8dbc741909 update to 0.6.2, patch by Giacomo Comes, comes naic edu
diego
parents: 19614
diff changeset
1543 #### mpegchannels > 2 only with ac3 and aac
17507
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1544 [[ $mpeg && ${mpegchannels:-2} -gt 2 && $encode == [2-57]:?:? ]] && CODEC=([2]=mp3 mp3 mp2 mp3 [7]=mp2) && \
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1545 echo "**ERROR: [$PROGNAME] audio codec ${CODEC[${encode%%:*}]} selected with -encode $encode do not support more than 2 audio channels" && exit 1
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1546 ###############################################################################
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1547 #### set cleanup
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1548 ###############################################################################
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1549 trap 'job_exit' 0
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1550 CLEAN[${#CLEAN[*]}]="$output".fifo
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1551
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1552 skip=0
20858
4e8dbc741909 update to 0.6.2, patch by Giacomo Comes, comes naic edu
diego
parents: 19614
diff changeset
1553 LG=1
17507
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1554
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1555 ###############################################################################
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1556 #### start the log file
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1557 ###############################################################################
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1558 if [[ ! $resume ]] ; then
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1559 { if [[ $LOG ]]; then
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1560 echo "$LOG"
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1561 else
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1562 STARTTIME=$(pr_time)
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1563 echo "### LOG: $output $(pr_date)"
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1564 fi
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1565 echo -n " INFO: [$PROGNAME] version $VERSION running in "
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1566 if ((${#TITLESET[*]})); then
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1567 echo -n "Titleset Mode"
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1568 else
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1569 if [[ $mpeg ]]; then
20858
4e8dbc741909 update to 0.6.2, patch by Giacomo Comes, comes naic edu
diego
parents: 19614
diff changeset
1570 [[ $testmca ]] && echo -n "Testmca Mode" || echo -n "MPEG Mode"
17507
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1571 fi
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1572 fi
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1573 echo "${cpu:+ (cpu=$cpu)}"
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1574 echo " INFO: [$PROGNAME] command line: '${CMD[@]}'"
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1575 } >"$output".log
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1576 fi
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1577
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1578 ###############################################################################
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1579 #### WARNING if some requested tools are missing and can be replaced
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1580 ###############################################################################
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1581 #### WARN
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1582 if [[ $WARN ]]; then
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1583 echo -e "$WARN" >>"$output".log
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1584 fi
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1585 #### volume and audio copy
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1586 if [[ $volume ]]; then
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1587 [[ $encode == 0:?:? && ( ${!audioformat} = copy || $step -eq 1 || $mpeg ) || ${!audioformat} = copy && ! $encode ]] && \
20858
4e8dbc741909 update to 0.6.2, patch by Giacomo Comes, comes naic edu
diego
parents: 19614
diff changeset
1588 do_log "++ WARN: [$PROGNAME] you cannot modify the volume of the output audio stream if you are making a copy the input audio stream"
17507
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1589 fi
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1590 #### cpu and bframes
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1591 if [[ $cpu && $bframes ]]; then
20858
4e8dbc741909 update to 0.6.2, patch by Giacomo Comes, comes naic edu
diego
parents: 19614
diff changeset
1592 ((bframes)) && do_log "++ WARN: [$PROGNAME] with bframes>0 the encoding will be faster with cpu=1"
17507
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1593 fi
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1594 #### -usespeed
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1595 if [[ $usespeed && ( $encode == 0:?:? || $encode == ?:0:? ) ]]; then
20858
4e8dbc741909 update to 0.6.2, patch by Giacomo Comes, comes naic edu
diego
parents: 19614
diff changeset
1596 do_log "++ WARN: [$PROGNAME] -usespeed may not work if you do not encode both audio and video." && echo -n "Press return to proceed" && read
17507
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1597 fi
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1598 #### total br
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1599 [[ $encode != ?:0:? ]] && ((step>1&&abr*audiostream*1024/1000+vbr>MAXBR)) && \
20858
4e8dbc741909 update to 0.6.2, patch by Giacomo Comes, comes naic edu
diego
parents: 19614
diff changeset
1600 do_log "++ WARN: [$PROGNAME] total video+audio bitrate ($vbr+$((abr*audiostream*1024/1000))kbps) exceed $frameformat specifications (${MAXBR}kbps)"
17507
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1601 #### -slideaudio/single picture
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1602 if [[ $slideaudio && $slideaudio != /dev/null && $pictsrc ]]; then
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1603 ((${#PICTSRC[*]}!=1||$(ls ${PICTSRC[0]} | wc -l)!=1)) && \
20858
4e8dbc741909 update to 0.6.2, patch by Giacomo Comes, comes naic edu
diego
parents: 19614
diff changeset
1604 do_log "++ WARN: [$PROGNAME] you should use only one source image if you use the option -slideaudio"
17507
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1605 fi
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1606
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1607 ###############################################################################
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1608 #### dump some info in the log file
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1609 ###############################################################################
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1610 { VARS=(frameformat ${split:+split} vfr vbr abr asr ${mpegchannels:+mpegchannels} ${GOP:+GOP} audioformat) # audioformat must be the last
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1611 VARS[${#VARS[*]}]=${!VARS[${#VARS[*]}-1]}
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1612 [[ $volume && ! $encode ]] && VARS[${#VARS[*]}]=volume
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1613 echo -n " MPEG: "
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1614 for ((i=0;i<${#VARS[*]};i++)) ; do
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1615 echo -n "${VARS[i]}:${!VARS[i]} "
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1616 done
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1617 echo -n "${multiaudio:+multiaudio:${multiaudio// /,} }"
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1618 echo -n "mpegencoder:$([ $mpeg ] && echo mencoder || echo mpeg2enc)"
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1619 [[ $mpegaspect ]] && echo -n " aspect:${ASPECT[mpegaspect]}"
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1620 [[ $cdi && $frameformat = VCD ]] && echo -n " CD-i"
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1621 [[ $telecine ]] && echo -n " telecine"
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1622 echo
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1623 VARS=(encode ${vcodec:+vcodec} ${volume:+volume} ${usesbr:+usesbr} ${avisplit:+avisplit} ${channels:+channels} AUDIOPASS VIDEOPASS PASS)
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1624 if [[ $encode ]]; then
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1625 echo -n " $([ $mpeg ] && echo MPEG || echo \ AVI): "
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1626 for ((i=0;i<${#VARS[*]};i++)) ; do
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1627 echo -n "${VARS[i]}:${!VARS[i]} "
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1628 done
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1629 if ((PASS>1)); then
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1630 [[ $turbo ]] && echo -n "TURBO:on " || echo -n "TURBO:off "
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1631 fi
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1632 txt=
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1633 [[ $(echo $encode | cut -f 2 -d:) = 1 && $vcustom ]] && txt="libavcodec"
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1634 [[ ${encode%%:*} = 2 && $acustom ]] && txt=${txt:+${txt} and} && txt="$txt lame"
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1635 txt=${txt:+(custom ${txt} options)}
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1636 echo $txt
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1637 fi
20858
4e8dbc741909 update to 0.6.2, patch by Giacomo Comes, comes naic edu
diego
parents: 19614
diff changeset
1638 [[ ! $resume ]] && { [[ $audioonly ]] && mp_identify "$audioonly" || mp_identify "${MPLAYERINFO[@]}" -frames 1 ; } | \
4e8dbc741909 update to 0.6.2, patch by Giacomo Comes, comes naic edu
diego
parents: 19614
diff changeset
1639 sed -n '/^ID_/s/^/ INFO: [identify] /p' | uniq
17507
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1640 VARS=(${encode:+MENCODERARG} MPLAYERYUVOPT)
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1641 VARS=(${encode:+MENCODERARG})
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1642 for ((i=0;i<${#VARS[*]};i++)) ; do
20858
4e8dbc741909 update to 0.6.2, patch by Giacomo Comes, comes naic edu
diego
parents: 19614
diff changeset
1643 s="INFO: \[${VARS[i]}] \${${VARS[i]}[*]}"
17507
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1644 eval echo "\ \ \ $s"
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1645 done
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1646 } >>"$output".log
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1647 h_res=$(grep ID_VIDEO_WIDTH "$output".log | tail -1 | cut -f2 -d=)
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1648 v_res=$(grep ID_VIDEO_HEIGHT "$output".log | tail -1 | cut -f2 -d=)
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1649 if [[ $pictsrc ]]; then
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1650 v_res=$(mplayer -vo null "${MPLAYERINFO[@]}" -frames 1 2>/dev/null | awk '/^VO:/{print $3}' | head -n 1)
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1651 h_res=${v_res%x*}
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1652 v_res=${v_res#*x}
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1653 fi
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1654 [[ $mpeg && ${encode%,*} == ?:0:? ]] && H_RES=$h_res && V_RES=$v_res
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1655
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1656 ###############################################################################
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1657 #### put the volume in DB
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1658 ###############################################################################
20858
4e8dbc741909 update to 0.6.2, patch by Giacomo Comes, comes naic edu
diego
parents: 19614
diff changeset
1659 if [[ $volume ]]; then
4e8dbc741909 update to 0.6.2, patch by Giacomo Comes, comes naic edu
diego
parents: 19614
diff changeset
1660 volume=$(awk -v a=$volume 'BEGIN{if(a>0) print 20*log(a)/log(10) ; else print 0}')
4e8dbc741909 update to 0.6.2, patch by Giacomo Comes, comes naic edu
diego
parents: 19614
diff changeset
1661 af=${af:--af }${af:+,}volume=$volume
4e8dbc741909 update to 0.6.2, patch by Giacomo Comes, comes naic edu
diego
parents: 19614
diff changeset
1662 fi
4e8dbc741909 update to 0.6.2, patch by Giacomo Comes, comes naic edu
diego
parents: 19614
diff changeset
1663
4e8dbc741909 update to 0.6.2, patch by Giacomo Comes, comes naic edu
diego
parents: 19614
diff changeset
1664 [[ ${mver:0:5} = 1.0rc ]] || SVN=1
17507
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1665
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1666 ###############################################################################
20858
4e8dbc741909 update to 0.6.2, patch by Giacomo Comes, comes naic edu
diego
parents: 19614
diff changeset
1667 #### telecined (NTSC/PAL) MPEG copy/speed encoding change
17507
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1668 ###############################################################################
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1669 if [[ $mpeg && ( $encode == ?:0:? || $usespeed ) || $usespeed && ! $encode && $step -gt 1 ]]; then
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1670 FPS=($(grep ID_VIDEO_FPS "$output".log | cut -f2 -d=) [1]=23.976 24.000 25.000 29.970 30.000 50.000 59.940 60.000)
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1671 for ((i=1;i<9;i++)); do
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1672 a=$(awk -v a=${FPS[0]} -v b=${FPS[i]} 'BEGIN{if (sqrt((a-b)*(a-b))<.02) print b}')
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1673 if [[ $a ]]; then
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1674 if [[ ${FPS[0]} != ${FPS[i]} ]]; then
20858
4e8dbc741909 update to 0.6.2, patch by Giacomo Comes, comes naic edu
diego
parents: 19614
diff changeset
1675 do_log "++ WARN: [$PROGNAME] input video frame rate is not exactly ${FPS[i]}fps"
17507
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1676 FPS[0]=${FPS[i]}
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1677 fi
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1678 FPS[10]=$i
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1679 break
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1680 fi
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1681 done
20858
4e8dbc741909 update to 0.6.2, patch by Giacomo Comes, comes naic edu
diego
parents: 19614
diff changeset
1682 [[ $usespeed && $i -eq 9 ]] && do_log "++ WARN: [$PROGNAME] input video frame rate is not a valid NTSC/PAL value; disabling -usespeed" && usespeed=
17507
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1683
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1684 if [[ ${FPS[0]} = ${FPS[4]} || ${FPS[0]} = ${FPS[5]} ]]; then
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1685 FPS[9]=$(mplayer -nocache -quiet "${MPLAYERINFO[@]}" -vo null -nosound -benchmark -frames 60 2>/dev/null | awk '/^demux_mpg:/{print $2}')
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1686 [[ ${FPS[9]} = 24fps || ${FPS[9]} = 24000/1001fps ]] && FPS[10]=$((FPS[10]-3))
20858
4e8dbc741909 update to 0.6.2, patch by Giacomo Comes, comes naic edu
diego
parents: 19614
diff changeset
1687 elif [[ ${FPS[0]} = ${FPS[3]} ]]; then
4e8dbc741909 update to 0.6.2, patch by Giacomo Comes, comes naic edu
diego
parents: 19614
diff changeset
1688 FPS[9]=$(is_film2pal "${MPLAYERINFO[@]}")
4e8dbc741909 update to 0.6.2, patch by Giacomo Comes, comes naic edu
diego
parents: 19614
diff changeset
1689 if [[ ${FPS[9]} ]]; then
4e8dbc741909 update to 0.6.2, patch by Giacomo Comes, comes naic edu
diego
parents: 19614
diff changeset
1690 [[ ${FPS[9]} = 24fps ]] && FPS[10]=2 || FPS[10]=1
4e8dbc741909 update to 0.6.2, patch by Giacomo Comes, comes naic edu
diego
parents: 19614
diff changeset
1691 fi
17507
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1692 fi
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1693 if [[ $usespeed ]]; then
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1694 if ((vfr!=${FPS[10]})); then
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1695 NSPEEDCOEF=([1]=1001 1001 5 1001 1001 5 1001 25 1250 5 25 2500 5 1200 6 2 2400 12 1001 1001 2 1001 5 2000 2 1200 6 1001 )
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1696 MSPEEDCOEF=([1]=1000 960 4 800 480 2 400 24 1001 4 12 1001 2 1001 5 1 1001 5 1000 200 1 500 3 1001 1 1001 5 1000 )
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1697 DCOEF=([1]=-2 3 7 10 12 13 13)
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1698 if ((vfr>${FPS[10]})); then
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1699 #### black magic here ;-)
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1700 n=$((vfr+${FPS[10]}+${DCOEF[${FPS[10]}]}))
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1701 a=${NSPEEDCOEF[n]}/${MSPEEDCOEF[n]}
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1702 else
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1703 n=$((vfr+${FPS[10]}+${DCOEF[vfr]}))
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1704 a=${MSPEEDCOEF[n]}/${NSPEEDCOEF[n]}
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1705 fi
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1706 MENCODERARG=( -speed $a -srate $asr -af-adv force=1 "${MENCODERARG[@]}" )
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1707 MPLAYERYUVOPT=("${MPLAYERYUVOPT[@]}" -speed $a )
20858
4e8dbc741909 update to 0.6.2, patch by Giacomo Comes, comes naic edu
diego
parents: 19614
diff changeset
1708 do_log " INFO: [usespeed] using speed factor $a"
17507
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1709 fi
20858
4e8dbc741909 update to 0.6.2, patch by Giacomo Comes, comes naic edu
diego
parents: 19614
diff changeset
1710 elif [[ ${FPS[0]} = ${FPS[4]} || ${FPS[0]} = ${FPS[5]} || ${FPS[0]} = ${FPS[3]} ]]; then
17507
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1711 if [[ ${FPS[9]} = 24fps || ${FPS[9]} = 24000/1001fps || $telesrc ]]; then
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1712 { echo -n " INFO: [$PROGNAME] "
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1713 [[ ${FPS[9]} = 24fps || ${FPS[9]} = 24000/1001fps ]] && echo -n "detected" || echo -n "user selected"
20858
4e8dbc741909 update to 0.6.2, patch by Giacomo Comes, comes naic edu
diego
parents: 19614
diff changeset
1714 [[ ${FPS[0]} = ${FPS[3]} ]] && echo -n " PAL" || echo -n " NTSC"
17507
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1715 echo " telecined source"
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1716 } | tee -a "$output".log
20858
4e8dbc741909 update to 0.6.2, patch by Giacomo Comes, comes naic edu
diego
parents: 19614
diff changeset
1717 [[ ${FPS[10]} = 1 ]] && MENCODERARG=( "${MENCODERARG[@]}" -ofps 24000/1001 -mc 0 ) || MENCODERARG=( "${MENCODERARG[@]}" -ofps 24 -mc 0 )
17507
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1718 fi
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1719 fi
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1720 fi
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1721
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1722 ###############################################################################
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1723 #### scale and expand/crop to adapt the aspect ratio
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1724 #### added rotation and overscan
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1725 ###############################################################################
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1726 if [[ $mpegfixaspect && $step -gt 1 ]]; then
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1727 a=$(get_aspect "${MPLAYERINFO[@]}")
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1728 [[ ${a:0:9} = undefined ]] && a=$(awk -v a=$h_res -v b=$v_res 'BEGIN{printf("%f",a/b)}')
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1729 [[ $mpegaspect == 1 ]] && b=$(awk -v a=$H_RES -v b=$V_RES 'BEGIN{printf("%f",a/b)}') || b=${ASPECT[${mpegaspect:-2}]}
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1730 vfilter=$(awk -v a=$a -v A=$b -v W=$H_RES -v H=$V_RES -v crop=$mpegfixaspect -v i=${interlaced:-0} -v r=$rotate -v o=$overscan -v logfile="$(echo "$output" | sed 's/\\/\\\\/g')".log 'BEGIN{
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1731 ko=(1-o/100)
20858
4e8dbc741909 update to 0.6.2, patch by Giacomo Comes, comes naic edu
diego
parents: 19614
diff changeset
1732 if(a==1.78||a==1.74)a=16/9
4e8dbc741909 update to 0.6.2, patch by Giacomo Comes, comes naic edu
diego
parents: 19614
diff changeset
1733 if(a==1.33||a==1.30)a=4/3
17507
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1734 if(A=="4/3")A=4/3
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1735 if(A=="16/9")A=16/9
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1736 if(r!=""){
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1737 A=1/A
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1738 tmp=W
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1739 W=H
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1740 H=tmp
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1741 }
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1742 if(a>A&&crop==0||a<A&&crop==1){
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1743 Eh=A*H/a
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1744 Ew=W
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1745 }else{
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1746 Ew=W*a/A
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1747 Eh=H
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1748 }
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1749 Ew=2*int(Ew*ko/2+0.50)
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1750 Eh=2*int(Eh*ko/2+0.50)
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1751 printf("-vf scale=%d:%d",Ew,Eh)
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1752 printf(" INFO: [mpegfixaspect] -vf scale=%d:%d",Ew,Eh) >>logfile
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1753 if(i==1)printf(":1")
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1754 if(i==1)printf(":1") >>logfile
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1755 if(crop==0){
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1756 printf(",expand=%d:%d",W,H)
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1757 printf(",expand=%d:%d",W,H) >>logfile
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1758 }else{
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1759 printf(",crop=%d:%d",W,H)
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1760 printf(",crop=%d:%d",W,H) >>logfile
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1761 }
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1762 if(r!=""){
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1763 printf(",rotate=%d",r)
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1764 printf(",rotate=%d",r) >>logfile
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1765 }
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1766 if(o!=0) printf(" [overscan=%d]",o) >>logfile
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1767 printf("\n") >>logfile
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1768 }')
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1769 if [[ $mpeg ]]; then
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1770 for ((a=0;a<${#MENCODERARG[*]};a++)); do
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1771 if [[ ${MENCODERARG[a]} = -vf ]]; then
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1772 MENCODERARG[a+1]=$(echo ${MENCODERARG[a+1]} | sed 's/scale=[^,]*,//;s/^/'"${vfilter#-vf }"',/')
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1773 fi
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1774 done
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1775 fi
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1776 fi
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1777
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1778 ###############################################################################
20858
4e8dbc741909 update to 0.6.2, patch by Giacomo Comes, comes naic edu
diego
parents: 19614
diff changeset
1779 #### warn for aspect ratio
4e8dbc741909 update to 0.6.2, patch by Giacomo Comes, comes naic edu
diego
parents: 19614
diff changeset
1780 ###############################################################################
4e8dbc741909 update to 0.6.2, patch by Giacomo Comes, comes naic edu
diego
parents: 19614
diff changeset
1781 if [[ ( $mpeg && $encode != ?:0:? || ! $mpeg && $step -gt 1 ) && ! $mpegfixaspect && ${#TITLESET[*]} -eq 0 && ! $testmca ]]; then
4e8dbc741909 update to 0.6.2, patch by Giacomo Comes, comes naic edu
diego
parents: 19614
diff changeset
1782 a=$(get_aspect "${MPLAYERINFO[@]}")
4e8dbc741909 update to 0.6.2, patch by Giacomo Comes, comes naic edu
diego
parents: 19614
diff changeset
1783 [[ ${mpegaspect:-2} = 2 && $a != 1.33 && $a != 1.30 || ${mpegaspect:-2} = 3 && $a != 1.78 && $a != 1.74 || ${mpegaspect:-2} = 4 && $a != 2.21 ]] && \
4e8dbc741909 update to 0.6.2, patch by Giacomo Comes, comes naic edu
diego
parents: 19614
diff changeset
1784 do_log "++ WARN: [$PROGNAME] selected aspect ratio [${ASPECT[${mpegaspect:-2}]}] and source aspect ratio [$a] are different"
4e8dbc741909 update to 0.6.2, patch by Giacomo Comes, comes naic edu
diego
parents: 19614
diff changeset
1785 fi
4e8dbc741909 update to 0.6.2, patch by Giacomo Comes, comes naic edu
diego
parents: 19614
diff changeset
1786
4e8dbc741909 update to 0.6.2, patch by Giacomo Comes, comes naic edu
diego
parents: 19614
diff changeset
1787 ###############################################################################
17507
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1788 #### dvd vobsub
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1789 ###############################################################################
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1790 #### function to select the vobsub to extract
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1791 next_vobsub_idx () {
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1792 if ((${#SID[*]})); then
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1793 if ((idx < ${#encsid[*]})); then
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1794 SID=(-sid ${encsid[idx]} -vobsuboutindex ${encsdx[idx]} ${encsla:+-vobsuboutid ${encsla[idx]}} -vobsubout "$output")
20858
4e8dbc741909 update to 0.6.2, patch by Giacomo Comes, comes naic edu
diego
parents: 19614
diff changeset
1795 do_log " INFO: [$PROGNAME] dumping subtitle ${encsid[idx]} to vobsub ${encsdx[idx]}${encsla:+ (${encsla[idx]})}"
17507
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1796 idx=$((idx+1))
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1797 else
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1798 unset SID
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1799 fi
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1800 fi
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1801 }
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1802 #### turn on vobsub extraction if encsid is given
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1803 if (( ${#encsid[*]} )) ; then
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1804 (( ${#encsdx[*]} )) || encsdx=( ${encsid[*]} )
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1805 idx=0
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1806 SID=(0000)
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1807 next_vobsub_idx
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1808 else
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1809 unset SID
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1810 fi
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1811 status_bit sub || unset SID
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1812
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1813 ###############################################################################
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1814 #### test condition "extra"
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1815 ###############################################################################
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1816 IDACOD=$(grep "ID_AUDIO_CODEC" "$output".log | tail -1 | cut -f2 -d=)
20858
4e8dbc741909 update to 0.6.2, patch by Giacomo Comes, comes naic edu
diego
parents: 19614
diff changeset
1817 [[ $IDACOD = hwdts ]] && echo "**ERROR: [$PROGNAME] dts audio support missing in MPlayer" && \
4e8dbc741909 update to 0.6.2, patch by Giacomo Comes, comes naic edu
diego
parents: 19614
diff changeset
1818 echo "**ERROR: add dts support (libdts-0.0.2.tar.gz) or select a non dts stream" && \
4e8dbc741909 update to 0.6.2, patch by Giacomo Comes, comes naic edu
diego
parents: 19614
diff changeset
1819 echo "**ERROR: example: -aid 128 (ac3), -aid 160 (lpcm), -aid 0 (mpeg)" && exit 1
4e8dbc741909 update to 0.6.2, patch by Giacomo Comes, comes naic edu
diego
parents: 19614
diff changeset
1820 [[ $mpeg && ! $pictsrc && ( $encode == 1:?:? || $multiaudio || $encode == 0:?:? && $IDACOD != mp3 && $IDACOD != a52 && $IDACOD != faad ) ]] && extra=1 || \
4e8dbc741909 update to 0.6.2, patch by Giacomo Comes, comes naic edu
diego
parents: 19614
diff changeset
1821 extra=
4e8dbc741909 update to 0.6.2, patch by Giacomo Comes, comes naic edu
diego
parents: 19614
diff changeset
1822 [[ $extra ]] && do_log "**ERROR: [$PROGNAME] output stream: unsupported audio codec $IDACOD" && exit 1
17507
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1823
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1824 CLEAN[${#CLEAN[*]}]="$output".tmp
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1825
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1826 ###############################################################################
20858
4e8dbc741909 update to 0.6.2, patch by Giacomo Comes, comes naic edu
diego
parents: 19614
diff changeset
1827 #### AVI/MPEG section
17507
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1828 ###############################################################################
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1829 if [[ $encode ]]; then
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1830 if status_bit avi ; then
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1831 find_sbr () {
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1832 local kv k ka
20858
4e8dbc741909 update to 0.6.2, patch by Giacomo Comes, comes naic edu
diego
parents: 19614
diff changeset
1833 sleep 2
4e8dbc741909 update to 0.6.2, patch by Giacomo Comes, comes naic edu
diego
parents: 19614
diff changeset
1834 [[ $mpeg ]] && kv=9888 k=33 ka=1015 || kv=10000 k=0 ka=1011
17507
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1835 if ((usesbr<=6)); then
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1836 sbr=$(awk '/for '"${SBR[usesbr-1]}"'MB CD/{print $NF}' <"$output".log)
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1837 [[ $sbr ]] && ((sbr<vbitrate)) && VIDEOPASS=${VIDEOPASS/vbitrate=$vbitrate:/vbitrate=$sbr:} && \
20858
4e8dbc741909 update to 0.6.2, patch by Giacomo Comes, comes naic edu
diego
parents: 19614
diff changeset
1838 do_log " INFO: [mencoder] using vbitrate=$sbr"
17507
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1839 else
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1840 #### usesbr is in MB
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1841 #### remind: 650-800,650-1400,800-1400
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1842 sbr[0]=650
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1843 sbr[1]=1400
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1844 sbr[2]=$(awk '/for '"${SBR[0]}"'MB CD/{print $NF}' <"$output".log)
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1845 sbr[3]=$(awk '/for '"${SBR[4]}"'MB CD/{print $NF}' <"$output".log)
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1846 [[ ${sbr[2]} && ${sbr[3]} ]] && \
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1847 sbr[4]=$(((((usesbr*kv/10000-k)-(audiosize*ka/1000))*(sbr[3]-sbr[2])+sbr[1]*sbr[2]-sbr[0]*sbr[3])/(sbr[1]-sbr[0])))
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1848 [[ ${sbr[4]} ]] && ((sbr[4]<vbitrate && sbr[4]>0)) && VIDEOPASS=${VIDEOPASS/vbitrate=$vbitrate:/vbitrate=${sbr[4]}:} && \
20858
4e8dbc741909 update to 0.6.2, patch by Giacomo Comes, comes naic edu
diego
parents: 19614
diff changeset
1849 do_log " INFO: [mencoder] using vbitrate=${sbr[4]}"
17507
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1850 fi
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1851 }
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1852 AID=
20858
4e8dbc741909 update to 0.6.2, patch by Giacomo Comes, comes naic edu
diego
parents: 19614
diff changeset
1853 if [[ ! $extra ]]; then
4e8dbc741909 update to 0.6.2, patch by Giacomo Comes, comes naic edu
diego
parents: 19614
diff changeset
1854 RAWVIDEO=( -o "$output".$SUF )
4e8dbc741909 update to 0.6.2, patch by Giacomo Comes, comes naic edu
diego
parents: 19614
diff changeset
1855 fi
17507
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1856 #### start mencoder
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1857 PLOG=( -passlogfile "$output".avi2pass.log )
20858
4e8dbc741909 update to 0.6.2, patch by Giacomo Comes, comes naic edu
diego
parents: 19614
diff changeset
1858 MSG=( -msglevel open=6:demuxer=6:demux=6 )
17507
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1859 rm -f frameno.avi
20858
4e8dbc741909 update to 0.6.2, patch by Giacomo Comes, comes naic edu
diego
parents: 19614
diff changeset
1860 [[ $encode == 0:?:? && ! $extra ]] && F= || F=$af
17507
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1861 if [[ $usesbr && ! $extra ]]; then
20858
4e8dbc741909 update to 0.6.2, patch by Giacomo Comes, comes naic edu
diego
parents: 19614
diff changeset
1862 ((DEBUG)) && debug_line $((LINENO+2)) "usesbr "
4e8dbc741909 update to 0.6.2, patch by Giacomo Comes, comes naic edu
diego
parents: 19614
diff changeset
1863 me_bit_log
4e8dbc741909 update to 0.6.2, patch by Giacomo Comes, comes naic edu
diego
parents: 19614
diff changeset
1864 mencoder $OPTIONS -ovc frameno -o /dev/null "${SID[@]}" "${MENCODERARG[@]}" $AID $AUDIOPASS $F &>"$output".fifo
17507
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1865 find_sbr
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1866 next_vobsub_idx
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1867 fi
20858
4e8dbc741909 update to 0.6.2, patch by Giacomo Comes, comes naic edu
diego
parents: 19614
diff changeset
1868 if ((PASS==1)); then
4e8dbc741909 update to 0.6.2, patch by Giacomo Comes, comes naic edu
diego
parents: 19614
diff changeset
1869 ((DEBUG)) && debug_line $((LINENO+2)) "PASS 1/$PASS"
4e8dbc741909 update to 0.6.2, patch by Giacomo Comes, comes naic edu
diego
parents: 19614
diff changeset
1870 me_log
4e8dbc741909 update to 0.6.2, patch by Giacomo Comes, comes naic edu
diego
parents: 19614
diff changeset
1871 mencoder $OPTIONS $VIDEOPASS "${RAWVIDEO[@]}" "${SID[@]}" "${MENCODERARG[@]}" $AID $AUDIOPASS $F "${MSG[@]}" >"$output".fifo
17507
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1872 next_vobsub_idx
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1873 else
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1874 #### N pass
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1875 CLEAN[${#CLEAN[*]}]="$output".avi2pass.log
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1876 ((DEBUG)) && debug_line $((LINENO+1)) "PASS 1/$PASS"
20858
4e8dbc741909 update to 0.6.2, patch by Giacomo Comes, comes naic edu
diego
parents: 19614
diff changeset
1877 mencoder $OPTIONS ${VIDEOPASS}:vpass=1$turbo -o /dev/null "${SID[@]}" "${MENCODERARG[@]}" $AID $AUDIOPASS $F "${PLOG[@]}"
17507
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1878 next_vobsub_idx
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1879 if ((PASS==2)); then
20858
4e8dbc741909 update to 0.6.2, patch by Giacomo Comes, comes naic edu
diego
parents: 19614
diff changeset
1880 ((DEBUG)) && debug_line $((LINENO+2)) "PASS 2/$PASS"
4e8dbc741909 update to 0.6.2, patch by Giacomo Comes, comes naic edu
diego
parents: 19614
diff changeset
1881 me_log
4e8dbc741909 update to 0.6.2, patch by Giacomo Comes, comes naic edu
diego
parents: 19614
diff changeset
1882 mencoder $OPTIONS ${VIDEOPASS}:vpass=2 "${RAWVIDEO[@]}" "${SID[@]}" "${MENCODERARG[@]}" $AID $AUDIOPASS $F "${PLOG[@]}" "${MSG[@]}" \
4e8dbc741909 update to 0.6.2, patch by Giacomo Comes, comes naic edu
diego
parents: 19614
diff changeset
1883 >"$output".fifo
17507
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1884 next_vobsub_idx
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1885 else
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1886 for ((a=2;a<PASS;a++)); do
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1887 ((DEBUG)) && debug_line $((LINENO+1)) "PASS $a/$PASS"
20858
4e8dbc741909 update to 0.6.2, patch by Giacomo Comes, comes naic edu
diego
parents: 19614
diff changeset
1888 mencoder $OPTIONS ${VIDEOPASS}:vpass=3 -o /dev/null "${SID[@]}" "${MENCODERARG[@]}" $AID $AUDIOPASS $F "${PLOG[@]}"
17507
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1889 next_vobsub_idx
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1890 done
20858
4e8dbc741909 update to 0.6.2, patch by Giacomo Comes, comes naic edu
diego
parents: 19614
diff changeset
1891 ((DEBUG)) && debug_line $((LINENO+2)) "PASS $PASS/$PASS"
4e8dbc741909 update to 0.6.2, patch by Giacomo Comes, comes naic edu
diego
parents: 19614
diff changeset
1892 me_log
4e8dbc741909 update to 0.6.2, patch by Giacomo Comes, comes naic edu
diego
parents: 19614
diff changeset
1893 mencoder $OPTIONS ${VIDEOPASS}:vpass=3 "${RAWVIDEO[@]}" "${SID[@]}" "${MENCODERARG[@]}" $AID $AUDIOPASS $F "${PLOG[@]}" "${MSG[@]}" \
4e8dbc741909 update to 0.6.2, patch by Giacomo Comes, comes naic edu
diego
parents: 19614
diff changeset
1894 >"$output".fifo
17507
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1895 next_vobsub_idx
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1896 fi
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1897 fi
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1898 status_bit avi set
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1899 fi
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1900 fi
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1901
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1902 ###############################################################################
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1903 #### if there are still vobsub to dump, do it now
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1904 ###############################################################################
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1905 while ((${#SID[*]})) ; do
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1906 ((DEBUG)) && debug_line $((LINENO+1)) vobsub
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1907 mencoder -ovc copy -o /dev/null $AID "${SID[@]}" "${MENCODERARG[@]}" -nosound
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1908 next_vobsub_idx
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1909 done
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1910 if status_bit sub ; then
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1911 if [[ -f $output.sub && -f $output.idx && ${#encsid[*]} -gt 0 ]]; then
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1912 #### reset the subtitles with the wrong timestamp
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1913 awk -v logfile="$(echo "$output" | sed 's/\\/\\\\/g')".log '{
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1914 if($1=="id:")id=" ("$0")"
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1915 if($1=="timestamp:"){
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1916 n=$2;
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1917 sub(/,/,"",n);
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1918 # convert the timestamp in seconds
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1919 m=3600*substr(n,1,index(n,":")-1);
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1920 sub(/[0-9]*:/,"",n);
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1921 m=m+60*substr(n,1,index(n,":")-1);
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1922 sub(/[0-9]*:/,"",n);
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1923 m=m+substr(n,1,index(n,":")-1);
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1924 sub(/[0-9]*:/,"",n);
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1925 m=m+n/1000;
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1926 # .002 is already ok
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1927 if(m+.004<t){
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1928 printf("++ WARN: [encsid] reset bad timestamp sequence: %s %s%s\n",gensub(/[^ ]* /,"",1,gensub(/,.*/,"",1,p)),substr($2,1,length($2)-1),id) >>logfile ;
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1929 id="";
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1930 p=gensub(/ [^ ]* /," 00:00:00:000, ",1,p)" #"p}
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1931 t=m}
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1932 else t=0;
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1933 if(NR>1)print p;
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1934 p=$0
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1935 }
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1936 END{print p}' <"$output".idx >"$output".idx.idx && mv "$output".idx.idx "$output".idx
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1937 status_bit sub set
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1938 fi
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1939 fi
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1940
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1941 ###############################################################################
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1942 #### if fast mode skip multiplexing
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1943 ###############################################################################
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1944 if [[ $mpeg && $fast ]]; then
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1945 if status_bit mpg ; then
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1946 if [[ ! $extra ]]; then
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1947 rm -f "$output".mpg "${output}"[0-9][0-9].mpg
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1948 status_bit mpv set
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1949 status_bit mpa set
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1950 status_bit mpg set
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1951 mv "$output".$SUF "$output".mpg
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1952 fi
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1953 fi
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1954 fi
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1955
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1956 ###############################################################################
20858
4e8dbc741909 update to 0.6.2, patch by Giacomo Comes, comes naic edu
diego
parents: 19614
diff changeset
1957 #### split the MPEG stream (for MPEG Mode)
17507
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1958 ###############################################################################
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1959 if status_bit spl ; then
20858
4e8dbc741909 update to 0.6.2, patch by Giacomo Comes, comes naic edu
diego
parents: 19614
diff changeset
1960 #### split for MPEG Mode (MPEG-4 codec not supported)
4e8dbc741909 update to 0.6.2, patch by Giacomo Comes, comes naic edu
diego
parents: 19614
diff changeset
1961 #### MEncoder does not support split as does mpeg2enc/mplex
17507
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1962 #### this solution is slow, but it seems quite accurate
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1963 if [[ $mpeg && $split && $vcodec != mpeg4 ]]; then
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1964 [[ ! $fast ]] && mv "$output"01.mpg "$output".mpg
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1965 file_size "$output".mpg
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1966 if ((split*1024*1024<fsize)); then
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1967 chunks=$((fsize/(split*1024*1024)+1))
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1968 CLEAN[${#CLEAN[*]}]="$output".framelist
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1969 mplayer "$output".mpg -vf framestep=I -vo null -nosound -benchmark 2>/dev/null | tr '\015' '\012' | \
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1970 awk '{if($1=="I!")print t,substr(f,1,index(f,"/")-1);t=$2;f=$3}' >"$output".framelist
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1971 m=0
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1972 #### removed -vc dummy
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1973 [[ $multiaudio ]] && a=$(mplayer -vo null -ao null -frames 1 -v "$output".mpg 2>/dev/null | awk '/==> Found audio str/{print $NF}' | \
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1974 sort -n | tr '\012' ',' | sed 's/,$/\n/')
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1975 for ((i=0;i<chunks;i++)); do
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1976 if ((i<chunks-1)); then
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1977 n=$(mplayer "$output".mpg -vf framestep=I -vo null -nosound -benchmark 2>/dev/null -sb $(((i+1)*split*1024*1024)) -frames 30 | \
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1978 tr '\015' '\012' | awk '{if($1=="I!"){print t;exit};t=$2}')
20858
4e8dbc741909 update to 0.6.2, patch by Giacomo Comes, comes naic edu
diego
parents: 19614
diff changeset
1979 n=$(awk '/^'"$n"'/{print $2-1;exit}' <"$output".framelist) #should be -2
17507
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1980 else
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1981 n=
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1982 fi
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1983 ((DEBUG)) && debug_line $((LINENO+1)) "mpeg_split $((i+1))/$chunks"
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1984 "$PROGFILE" -norc "$output".mpg -o "$output"$(printf "%02d" $((i+1))) -mpegonly -mpeg -encode 0:0:1 -$(echo $frameformat| tr '[:upper:]' '[:lower:]') -nosplit -noshowlog -sb $((i*split*1024*1024)) ${n:+-frames $((n-m))} -a ${mpegaspect:-2} ${multiaudio:+-multiaudio $a} -mc 0
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1985 rm "$output"$(printf "%02d" $((i+1))).log
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1986 m=$n
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1987 done
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1988 rm "$output".mpg
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1989 else
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1990 mv "$output".mpg "$output"01.mpg
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1991 fi
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1992 status_bit spl set
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1993 fi
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1994 fi
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1995
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1996 ################################################################################
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1997 #### done
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1998 ################################################################################
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
1999 exit
c658a7107209 new tool to encode to mpeg using only mencoder; patch by Giacomo Comes <comes ad naic punctum edu>
nicodvb
parents:
diff changeset
2000