File: codiere

package info (click to toggle)
mjpegtools 1%3A2.1.0%2Bdebian-6
  • links: PTS, VCS
  • area: main
  • in suites: bullseye
  • size: 8,916 kB
  • sloc: ansic: 60,401; cpp: 32,321; sh: 13,910; makefile: 785; python: 291; asm: 103
file content (486 lines) | stat: -rw-r--r-- 13,053 bytes parent folder | download | duplicates (5)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
#!/bin/sh
#
# codiere ist ein Shellscript das entweder AVI-files bearbeitet.
# Bei AVI-Files wird der Name des AVI-Files auch fr die komprimierten
# Files verwendet - erweitert um entsprechende nderungen.
# AVI-Files beginnen - so setzt es das script voraus - mit
# einem Grossbuchstaben und enden mit Kleinbuchstaben.
# Editlisten beginnen mit Kleinbuchstaben und es wird folgendes
# Schema verwendet: ja01[a - z] wird zum ersten File zusammengefasst.
# Die Dateien ja02[a-7] werden zum zweiten File zusammengefasst.
#
# codiere is a shell-script that works with AVI-files and
# editlists. In case of AVI-Files the name of the file is used
# also for the output-Name. In case of editlists you are asked
# for the name of the output-file.
# It is mandatory that AVI-files start with a capital letter.
# It is mandatory, that editlist-files don't start with capitals.
# For editlists the following scheme is used:
# Files ja01[a-z] will be used for the first output-file
# Files ja02[a-z] will be used for the second output-file.
# 
# If you want to get rid of the German questions: I tried to
# translate everything - just browse the script for the word
# English - and change it to your preferences.
#
# A second word of warning: Change the input- and output- directories 
# to your needs
# Otherwise the script might not work :-)
#
echo -e "\n READ & ADAPT THE SHELL-SCRIPT TO YOUR NEEDS (LINE 37+38)" 
echo -e "After that: Delete lines 30 to 36\n"
echo -e "\nBitte das Shellscript anpassen Zeile 37 und 38"
echo -e "danach Zeilen 30 - 36 entfernen\n"
#
exit 0

directin=/video/   # CHANGE HERE and keep BOTH slashes
directout=/toast2/ # CHANGE HERE and keep BOTH slashes
#
# The following options are for yuvscaler - not used for now
# The variables are needed but have no meaning for now -
# that's work in Progress.
# Die folgenden Zeilen sind Arbeitsvorbereitung - die Variablen
# werden gebraucht, haben aber noch keine weitere Bedeutung!
# ---------------start work in progress--------------------------
yuvform=""
#
# yuvform="-n p" newer option - not used for now.
# yuvform not used for now
# yuvform="-n p"   # p = PAL   n = NTSC    s = SECAM
# 
# 
# for now: not used: yuvinform=
#
# yuvinform="-I INTERLACED_ODD_FIRST"
#
yuvinform=""
#
# N.B: yuvoutform new format is not used for now
#
#
# -----------------End work in progress-----------------
cd $directin
echo -e "\n  Ist der erste Buchstabe gross, werden avi-Files bearbeitet."
echo "  Ist der erste Buchstabe klein,"
echo "  werden ohne weitere Prfung editlisten vorausgesetzt"
echo -e "\n\n Welche Dateien bearbeiten? \c"
# English:
# echo -e "\n If the first letter oft the filename is a capital letter
# echo "I'll asume avi-files."
# echo "  Otherwise editlists are assumed."
# echo -e "\n\n Which files should I process? \c"
read c
#
echo -e "M = Monochrome oder ENTER = Farbe \c"
# English echo -e " M = Monochrome   ENTER = Colour \c"
read bw
if [ "$bw" = "m" ] || [ "$bw" = "M" ]
then
bwfilter="-m"
# 
# yuvscoutadd="-O MONOCHROME" # not used for now
yuvscoutadd=""
#
else
yuvscoptadd=""
bwfilter=" "
fi
#
echo -e "LAV2YUVfilter: 0 = n0 d1   1 = n1 d1   2 = n1 d2  3 = n1 d3 (Enter = 2) \c"
read filter
if [ -z "$filter" ]
then
filter=2
fi
#
# Nun folgen - absichtlich eingerckt - die verschiedenen Filterfunktionen
# Ich habe hier experimentelle Werte verwendet - bei mir ergab es so die
# besten Resultate. Fr Rckmeldungen bin ich dankbar.
#
# English
# I used the values, that proofed best for my eyes. Your mileage may vary.
# Feedback is very welcome.
#
	if [ "$filter" = "0" ] 
	then
	filter="-n 0 -d 1"
	mpegoptadd="-q 4"
	mplexoptadd="-V"
	fi
	if [ "$filter" = "1" ]
	then
	filter="-n 1 -d 1"
	mpegoptadd=" -q 5"
	mplexoptadd=" -V"
	fi
	if [ "$filter" = "2" ]
	then
	filter="-n 1 -d 2"
	mpegoptadd=" -q 5"
	mplexoptadd=" -V"
	fi
	if [ "$filter" = "3" ]
	then
	filter="-n 1 -d 3"
	mpegoptadd="-q 6"
	mplexoptadd="-V"
	fi
#

filter="${filter} ${bwfilter}"

#
#
# FRAMEOFFSET
#
echo -e "Frameoffset in Frames? (ENTER=0) \c"
read offq
if [ -z "$offq" ]
then
offset=""
else
offset="-o $offset"
fi
echo -e "Bitrate 1152 - 2500 (ENTER=2500) \c"
read brat
if [ -z "$brat" ]
then
brat=2500
fi

# Breitband-Video: Das sind die Filme, bei denen oben und unten
# ein schwarzer Rand zu sehen ist und bei manchen Fernsehern
# die Seiten ein wenig abgeschnitten werden. Also: Leinwandfilme,
# die im Fernsehen ausgestrahlt werden.
# Da empfiehlt es sich, diese fast schwarzen Rnder abzuschneiden.
# Das verbessert die Kompression weil nicht im Schwarz-Flimmern
# nach Vernderungen gesucht werden muss.
#
# Wideformat Video: Those Hollywood-Movies where you have the
# bottom and top with large black stripes.
#
echo -e "B = Breitbandfilm  V = VHS-Video   ENTER = Direkt ab Tuner \c"
#
# English 
# echo -e "B = Wideformat-movie     Enter = normal video \c"
#
read breit
if [ -z "$breit" ]
	then
	BREIT=0
	else
	if [ "$breit" = "b" ] || [ "$breit" = "B" ]
		then
		BREIT=1
		else
		BREIT=2
	fi
fi
#
# Wurde die Aufnahme bereits als vcd gemacht und enthlt die
# Hinweis darauf im Namen? Dann muss nicht viel gefragt werden,
# ausser nach der Bitrate. SVCD und XVCD knnen aus diesen
# Aufnahmen sowieso nicht mehr gemacht werden :-)
# Die Randbreiten wurden experimentell gewonnen, wenn jemand
# das genauer machen kann: Bitte verbessern!
#
# Auch bei "normalen" VHS bzw. Video - Aufnahmen wird oben und
# unten ein kleiner Rand abgeschnitten. Die obersten und untersten
# Zeilen enthalten meistens nur Geflimmer.
#
# If recorded as vcd (taken from extension):
# There i no need to ask for the kind of file, you want to
# create :-) 
# No further questions necessary, assume optimal values
# The values for the margins are experimental - I cut off some lines
# from the recorded movie, that are normaly not useful. The amount
# depends on the source you used for recording.
# Improvements are welcome.
#
VCD=""
if [ ${c} \> "Zz" ] # Dateiname mit Kleinbuchstabe First letter not a capital
	then
	VCD=$( cat ${c}* 2>/dev/null | grep vcd ) # get argument from editlist
	else
	VCD=$( ls ${c}* 2>/dev/null | grep vcd ) # get argument from filename
fi
if [ -n "$VCD" ] 
	then
	#
	# Optimale Werte einstellen - Zeit spielt keine Rolle, ist
	# sowieso rasend schnell.
	# Assume optimal values - no further questions concering quality.
	# VCD is always very fast - if recorded as VCD
	quopt="-4 1 -2 1"
	yuvscopts="$yuvform $yuvinform $yuvoutform -k VCD"
	YUVMEDIAN=1
	SCALER=0
	if [ $BREIT = "1" ]
	then
	lavopt="-s 0 $filter -a 352x202+0+43"
        else
		if [ "$BREIT" = "2" ]
		then
		lavopt="-s 0 $filter -a 352x240+0+24"
		else
		lavopt="-s 0 $filter -a 352x270+0+9"
		fi
	fi
	mpegopt="-m 1 -s -h -b $brat $quopt -r 16 "
	mplexopt="-m 1 -f 2 -S 840"
#
#
	add="${brat}_vcd"
	o="VCD MPEG 1 : $brat "
else   # According to filenames it's no VCD-record - ask more questions.
# 
# Ist keine VCD-Aufnahme - deshalb ist Abfrage sinnvoll
#

SCALER=1
	echo -e 'Der yuvmedianfilter filtert zustzlich "noise" - braucht aber Zeit'
	echo -e "Yuvmdianfilter einsetzen  J = Ja   N oder ENTER = Nein \c"
	read yu 
	if [ -z "$yu" ]
		then
		YUVMEDIAN=0
		else
		if [ $yu = "j" ] || [ "$yu" = "J" ] || [ "$yu" = "y" ] 
			then
			YUVMEDIAN=1
			else
			YUVMDEIAN=0
		fi
	fi # End for YUVMEDIANFILTER ?
#
	echo -e "Felddiagnose a=optimal b=schnell=ENTER ( 30% schneller, reicht meistens) \c"
# English: echo -e "a = optimised for quality b = optimised=ENTER for speed in most cases ok \c"
	read qopt
	if [ -z "$qopt" ]
	then
	qopt=b
	fi
	if [ $qopt = "a" ] || [ "qopt" = "A" ]
		then
		quopt="-4 1 -2 1"
		else
		quopt=" "
		fi
		echo -e "\nA = SVCD    B = XVCD   C = VCD   ( ENTER = SVCD ) \c"
		read F
		if [ -z "$F" ]
			then
			F="a"
			fi
		if [ "$F" = "A" ] || [ "$F" = "a" ]
		then
		d=$brat
		yuvtarget="-k SVCD"
       	yuvscopts="$yuvform $yuvinform $yuvoutform $yuvtarget"
		f=2
		if [ "$BREIT" = "1" ]
		then
		lavopt="-s 0 $filter -a 768x406+0+85"
		else
			if [ "$BREIT" = "2" ]
			then
			lavopt="-s 0 $filter -a 768x480+0+48"
			else
			lavopt="-s 0 $filter -a 768x540+0+18"
			fi
		fi
		mpegopt=" -m 2 -b $brat $mpegoptadd $quopt -r 16 -F 0"
		mplexopt="-m 2 -f 4 -S 840 $mplexoptadd"
		o="SVCD MPEG 2 mit $brat "
		add="${brat}_m2"
	fi
	if [ "$F" = "B" ] || [ "$F" = "b" ]
		then
		d=$brat
		f=1
		yuvtarget="-k SVCD"
       	yuvscopts="$yuvform $yuvinform $yuvoutform $yuvtarget"
		if [ "$BREIT" = "1" ]
		then
		lavopt="-s 0 $filter -a 768x406+0+85"
		else
			if [ "$BREIT" = "2" ]
			then
			lavopt="-s 0 $filter -a 768x480+0+48"
			else
			lavopt="-s 0 $filter -a 768x540+0+18"
			fi
		fi
		mpegopt="-m 1 -h -b $brat $quopt -r 16 "
		mplexopt="-m 2 -f 4 -S 840"
#
#
		add="${brat}_xvcd"
		o="XVCD MPEG 1 mit $brat "
	fi
	if [ "$F" = "C" ] || [ "$F" = "c" ]
		then
		d=$brat
		yuvtarget="-k VCD"
       	yuvscopts="$yuvform $yuvinform $yuvoutform $yuvtarget"
		f=1
		if [ $BREIT = "1" ]
		then
		lavopt="-s 0 $filter -a 768x406+0+85"
       		else
			if [ "$BREIT" = "2" ]
			then
			lavopt="-s 0 $filter -a 768x480+0+48"
			else
			lavopt="-s 0 $filter -a 768x540+0+18"
			fi
		fi
		mpegopt="-m 1 -b $brat $quopt -r 16 "
		mplexopt="mplex -m 1 -f 2"
		add="${brat}_vcd"
		o="VCD MPEG 1 mit $brat "
	fi
fi  
#
# Ende Abfrage ob es eine VCD-Aufnahme ist
# End of "Is it a VCD-record or do I need more Information"
#
if [ ${c} \> "Zz" ] # Dateiname mit Kleinbuchstabe First letter not a capital
	then
	echo -e "\n Bitte Ausgabe-Name angeben \c"
# English echo -e "\n Enter Output-Name \c"
	read aus
fi
# 
#
#
echo -e "\nWartezeit in Minuten  (Enter startet sofort, CTRL-C unterbricht) \c"
# English echo -e "\n Enter delay in minutes (Just ENTER starts, CTRL-C to break \c"
read warte
if [ -z "$warte" ]
	then
	warte=0
	else
	warte=`expr $warte \* 60`
fi
sleep $warte
if [ ${c} \> "Zz" ] # Dateiname mit Kleinbuchstabe
	then
	auszahl="1"
	maches="ja"
	null=`expr $auszahl \< "10"`
	if [ -n $null ]
	then
	auszahl="0"$auszahl 
	fi
	klein=${c}${auszahl}*
	machs=`ls $klein 2>/dev/null`
	if [ -n "$machs" ]
	then
	maches="ja"
	else
    echo "Keine Dateien zur Verarbeitung gefunden"
# English echo "No files found "
	maches="nein"
	fi
	date >startzeit_$c
	while [ "$maches" = "ja" ]
	do
	if [ -f ${directout}${aus}${auszahl}_${add} ] || [ -f ${directin}${aus}${auszahl}_${add}.mpg ]
		then
		echo "MPEG-File ${directout}${aus}${auszahl}_${add} exists"
		else
	if [ "$YUVMEDIAN" = "1" ]
	then
	if [ "$SCALER" = "1" ]  # And YUVMEDIAN=1
	then
	lav2yuv $lavopt $offset $klein | yuvscaler $yuvscopts | yuvmedianfilter | mpeg2enc -h -s $mpegopt -o ${directout}${aus}${auszahl}_${add}
	else
	lav2yuv $lavopt $offset $klein | yuvmedianfilter | mpeg2enc -h -s $mpegopt -o ${directout}${aus}${auszahl}_${add} 
	fi	# end for SCALER
	else
	if [ "$SCALER" = "1" ]  # And YUVMEDIAN=0
	then
	lav2yuv $lavopt $offset $klein | yuvscaler $yuvscopts | mpeg2enc -h -s $mpegopt -o ${directout}${aus}${auszahl}_${add}
        else
	lav2yuv $lavopt $offset $klein | mpeg2enc -h -s $mpegopt -o ${directout}${aus}${auszahl}_${add}
	fi	# End for SCALER
	fi     # End for YUVMEDIAN
	fi     # End: existing file
    if [ -f ${directout}${aus}${auszahl}.snd ]
	then
	echo "Soundfile ${directout}${aus}${auszahl}.snd exists"
	else
	lav2wav $klein | mp2enc -V -o ${directout}${aus}${auszahl}.snd
	fi
	if [ -f ${directout}${aus}${auszahl}_${add}.mpg ]
	then
	echo "${directout}${aus}${auszahl}_${add}.mpg exists"
	else
	mplex -v 0 $mplexopt $mplexoptadd -o ${directin}${aus}${auszahl}_$add.mpg ${directout}${aus}${auszahl}_$add ${directout}${aus}${auszahl}.snd
	fi
	auszahl=`expr $auszahl \+ 1`
#        echo $auszahl
	null=`expr $auszahl \< "10"`
	if [ $null = "1" ]
	then
	auszahl="0"$auszahl
	fi
	klein=${c}${auszahl}*
#        echo $klein
	machs=`ls $klein 2>/dev/null`
	if [ -n "$machs" ]
	then
    maches="ja"
	else
	maches="nein"
	fi
	done
else
#
# Input-file-name starts with capital letter
# Source-Datei beginnt mit Grossbuchstabe
#
for i in ${c}*avi
do
a=`basename $i .avi`
if [ -f ${directout}${a}_${add} ] || [ -f ${directout}${a}_${add}.mpg ]
then
echo "MPEG-File ${a}_${add} exists"
else
	if [ "$YUVMEDIAN" = "1" ]
	then
	if [ "$SCALER" = "1" ]
		then
	echo "	lav2yuv $lavopt $offset $i  | yuvscaler $yuvscopts | yuvmedianfilter | mpeg2enc $mpegopt -h -s -o ${directout}${a}_${add}"
		else
		lav2yuv $lavopt $offset $i  | yuvmedianfilter | mpeg2enc $mpegopt -h -s -o ${directout}${a}_${add}
	fi	# for SCALER
	else
	if [ "$SCALER" = "1" ]   # And YUVMEDIAN = 0
		then
		lav2yuv $lavopt $offset $i  | yuvscaler $yuvscopts | mpeg2enc $mpegopt -h -s -o ${directout}${a}_${add}
		else		# SCALER 0 0 And YUVMEDIAN = 0
		lav2yuv $lavopt $offset $i  | mpeg2enc $mpegopt -h -s -o ${directout}${a}_${add}
		fi # FOR SCALER
	fi # FOR YUVMEDIAN
fi	# For existing file
if [ -f ${a}.snd ]
then
echo "Soundfile exists"
else
lav2wav $i | mp2enc -V -o ${directout}${a}${auszahl}.snd
fi
if [ -f ${directout}${a}_${add}.mpg ]
then
echo "MPLEX-File ${directout}${a}_${d}_mp${f}.mpg exists"
else
$mplexopt ${a}_${add} ${a}.snd ${directout}${a}_${add}.mpg
if [ -f ${a}_${add}.mpg ]
then
rm ${a}_${add}
fi
fi
done
fi