# ********* Copyright Jan Panteltje 2004 ********** #mount /dev/dvd /dvd # USING English based version as reference, via PVAStrumento #cat /dvd/$FILENAME.ts | ts2pes 4416 4417 > 4416-4417.pes #cat /dvd/$FILENAME.ts | ts2pes 4416 4418 > 4416-4418.pes #cat /dvd/$FILENAME.ts | ts2pes 4416 4419 > 4416-4419.pes #cat /dvd/$FILENAME.ts | ts2pes 4416 4420 > 4416-4420.pes #es_demux 4416-4418.pes tamil.mp2 /dev/zero #rm 4416-4418.pes #es_demux 4416-4419.pes dutch.mp2 /dev/zero #rm 4416-4419.pes #es_demux 4416-4420.pes catalan.mp2 /dev/zero #rm 4416-4420.pes # Use PVAStrumento in Linux wine # xhost + # telnet localhost # user xxxxx # pass yyyyy # ./pva # demux 4416-4417.pes to 4416.mpv russian.mpa FILENAME=big-movie-dutch echo $FILENAME #exit #mpg123 -w /root/.subtitles/$FILENAME-dvd/sound.wav -r 44100 english.mpa #mpg123 -w english.wav english.mpa #mpg123 -w spanish.wav spanish.mp2 #mpg123 -w french.wav frenchmp2 #mpg123 -w italian.wav italian.mp2 #mpg123 -w hebrew.wav hebrew.mp2 #mpg123 -w german.wav german.mp2 #mpg123 -w greek.wav greek.mp2 #mpg123 -w russian.wav russian.mp2 #mpg123 -w tamil.wav tamil.mp2 #mpg123 -w dutch.wav dutch.mp2 #mpg123 -w catalan.wav catalan.mp2 #exit ## Get the time difference of all languages versus the main English channel, ## both at start used part, and at very end used part, ## these should be the same else some dropout needs to be fixed. ## get delay at start IN MATERIAL YOU WANT, SO AFTER ANY ABRUPT SWITCHES. ## This because these abrupt switches often cause severe sync loss. #combine_wave -a -l english.wav -r spanish.wav -s 30000000 ## get delay at end (find the very last minute!) #combine_wave -a -l english.wav -r spanish.wav -s 150000000 ## and so on for any other audio channels. #combine_wave -a -l english.wav -r french.wav -s 30000000 #combine_wave -a -l english.wav -r italian.wav -s 30000000 #combine_wave -a -l english.wav -r hebrew.wav -s 30000000 #combine_wave -a -l english.wav -r german.wav -s 30000000 #combine_wave -a -l english.wav -r greek.wav -s 30000000 #combine_wave -a -l english.wav -r russian.wav -s 30000000 #combine_wave -a -l english.wav -r tamil.wav -s 30000000 #combine_wave -a -l english.wav -r dutch.wav -s 30000000 #combine_wave -a -l english.wav -r catalan.wav -s 30000000 ## If a time difference is found, say 1 video frame dropped (40 milli seconds), then ## that much must be cut from the other recordings audio channels too. ## Use combine_wave in the same way, using succesive approximation, to find the point. ## You could also try demuxing without using PVAStrumento. ## If PVAstrumento was instructed to completely drop defective GOPs, the error may ## be bigger then 40 ms. # TIME CHECK AT END OK ## Enter delays found here, English is always reference (the one done with PVAStrumento), so zero. # DELAYS let DELAY_ENGLISH=0 let DELAY_SPANISH=962 let DELAY_FRENCH=871 let DELAY_ITALIAN=871 let DELAY_HEBREW=758 let DELAY_GERMAN=734 let DELAY_GREEK=710 # THESE ARE NEGATIVE!!!!!!!!!!!!!!!!!!!!!!!!!!!! so we prepend silence let DELAY_RUSSIAN=133597 let DELAY_TAMIL=133382 let DELAY_DUTCH=133482 let DELAY_CATALAN=133479 echo "delays: $DELAY_ENGLISH $DELAY_SPANISH $DELAY_FRENCH $DELAY_ITALIAN $DELAY_HEBREW $DELAY_GERMAN $DELAY_GREEK $DELAY_RUSSIAN $DELAY_TAMIL $DELAY_DUTCH $DELAY_CATALAN" # SAMPLES_TAMIL=649x48 let SAMPLES_ENGLISH=48*$DELAY_ENGLISH let SAMPLES_SPANISH=48*$DELAY_SPANISH let SAMPLES_FRENCH=48*$DELAY_FRENCH let SAMPLES_ITALIAN=48*$DELAY_ITALIAN let SAMPLES_HEBREW=48*$DELAY_HEBREW let SAMPLES_GERMAN=48*$DELAY_GERMAN let SAMPLES_GREEK=48*$DELAY_GREEK let SAMPLES_RUSSIAN=48*$DELAY_RUSSIAN let SAMPLES_TAMIL=48*$DELAY_TAMIL let SAMPLES_DUTCH=48*$DELAY_DUTCH let SAMPLES_CATALAN=48*$DELAY_CATALAN echo "samples: $SAMPLES_ENGLISH $SAMPLES_SPANISH $SAMPLES_FRENCH $SAMPLES_ITALIAN $SAMPLES_HEBREW $SAMPLES_GERMAN $SAMPLES_GREEK $SAMPLES_RUSSIAN $SAMPLES_TAMIL $SAMPLES_DUTCH $SAMPLES_CATALAN" #exit # record some 3 minutes silence # rec -r 48000 -c 1 -s w /reiser/silence.wav #exit # There is about 52 seconds of 1 kHz tone in the second recording, cut 52 seconds from these channels let CUT_OUT=52 #wavcut -bt $CUT_OUT -if russian.wav -of russian-late.wav #wavcut -bt $CUT_OUT -if tamil.wav -of tamil-late.wav #wavcut -bt $CUT_OUT -if dutch.wav -of dutch-late.wav #wavcut -bt $CUT_OUT -if catalan.wav -of catalan-late.wav let EXTRA_SAMPLES=$CUT_OUT*1000*48 echo "extra samples=$EXTRA_SAMPLES" #exit let SILENCE_SAMPLES_RUSSIAN=$EXTRA_SAMPLES+$SAMPLES_RUSSIAN let SILENCE_SAMPLES_TAMIL=$EXTRA_SAMPLES+$SAMPLES_TAMIL let SILENCE_SAMPLES_DUTCH=$EXTRA_SAMPLES+$SAMPLES_DUTCH let SILENCE_SAMPLES_CATALAN=$EXTRA_SAMPLES+$SAMPLES_CATALAN echo "silence: $SILENCE_SAMPLES_RUSSIAN $SILENCE_SAMPLES_TAMIL $SILENCE_SAMPLES_DUTCH $SILENCE_SAMPLES_CATALAN" #exit # make silence part of the correct length for the second recording, that starts much later. #wavcut -bs 0 -es $SILENCE_SAMPLES_RUSSIAN -if /reiser/silence.wav -of silence$SAMPLES_RUSSIAN.wav #wavcut -bs 0 -es $SILENCE_SAMPLES_TAMIL -if /reiser/silence.wav -of silence$SAMPLES_TAMIL.wav #wavcut -bs 0 -es $SILENCE_SAMPLES_DUTCH -if /reiser/silence.wav -of silence$SAMPLES_DUTCH.wav #wavcut -bs 0 -es $SILENCE_SAMPLES_CATALAN -if /reiser/silence.wav -of silence$SAMPLES_CATALAN.wav #exit # prepend silence parts #pwavecat silence$SAMPLES_RUSSIAN.wav russian-late.wav > russian$DELAY_RUSSIAN.wav #pwavecat silence$SAMPLES_TAMIL.wav tamil-late.wav > tamil$DELAY_TAMIL.wav #pwavecat silence$SAMPLES_DUTCH.wav dutch-late.wav > dutch$DELAY_DUTCH.wav #pwavecat silence$SAMPLES_CATALAN.wav catalan-late.wav > catalan$DELAY_CATALAN.wav #exit # align english based recording files #wavcut -bs $SAMPLES_SPANISH -if spanish.wav -of spanish$DELAY_SPANISH.wav #wavcut -bs $SAMPLES_FRENCH -if french.wav -of french$DELAY_FRENCH.wav #wavcut -bs $SAMPLES_ITALIAN -if italian.wav -of italian$DELAY_ITALIAN.wav #wavcut -bs $SAMPLES_HEBREW -if hebrew.wav -of hebrew$DELAY_HEBREW.wav #wavcut -bs $SAMPLES_GERMAN -if german.wav -of german$DELAY_GERMAN.wav #wavcut -bs $SAMPLES_GREEK -if greek.wav -of greek$DELAY_GREEK.wav #exit #multimux -o english-dutch.wav english.wav dutch$DELAY_DUTCH.wav #exit #multimux -o /reiser/english-spanish-french-italian-dutch.wav \ #english.wav \ #spanish$DELAY_SPANISH.wav \ #french$DELAY_FRENCH.wav \ #italian$DELAY_ITALIAN.wav \ #dutch$DELAY_DUTCH.wav #ffmpeg \ #-i /reiser/english-spanish-french-italian-dutch.wav \ #-ab 320 \ #-ac 5 \ #-acodec ac3 \ #english-spanish-french-italian-dutch.ac3 #exit #rm /reiser/english-spanish-french-italian-dutch.wav #multimux -o /reiser/english-german-russian-greek-catalan.wav \ #english.wav \ #german$DELAY_GERMAN.wav \ #russian$DELAY_RUSSIAN.wav \ #greek$DELAY_GREEK.wav \ #catalan$DELAY_CATALAN.wav #ffmpeg \ #-i /reiser/english-german-russian-greek-catalan.wav \ #-ab 320 \ #-ac 5 \ #-acodec ac3 \ #english-german-russian-greek-catalan.ac3 #exit #rm /reiser/english-german-russian-greek-catalan.wav #multimux -o /reiser/english-hebrew-tamil-dutch-german.wav \ #english.wav \ #hebrew$DELAY_HEBREW.wav \ #tamil$DELAY_TAMIL.wav \ #dutch$DELAY_DUTCH.wav \ #german$DELAY_GERMAN.wav #ffmpeg \ #-i /reiser/english-hebrew-tamil-dutch-german.wav \ #-ab 320 \ #-ac 5 \ #-acodec ac3 \ #english-hebrew-tamil-dutch-german.ac3 #exit #rm /reiser/english-hebrew-tamil-dutch-german.wav #multimux -o /reiser/english-spanish-french-german-dutch.wav \ #english.wav \ #spanish$DELAY_SPANISH.wav \ #french$DELAY_FRENCH.wav \ #german$DELAY_GERMAN.wav \ #dutch$DELAY_DUTCH.wav #ffmpeg \ #-i /reiser/english-spanish-french-german-dutch.wav \ #-ab 320 \ #-ac 5 \ #-acodec ac3 \ #english-spanish-french-german-dutch.ac3 #exit #rm /reiser/english-spanish-french-german-dutch.wav #multimux -o /reiser/english-dutch-russian-catalan-hebrew.wav \ #english.wav \ #dutch$DELAY_DUTCH.wav \ #russian$DELAY_RUSSIAN.wav \ #catalan$DELAY_CATALAN.wav \ #hebrew$DELAY_HEBREW.wav #ffmpeg \ #-i /reiser/english-dutch-russian-catalan-hebrew.wav \ #-ab 320 \ #-ac 5 \ #-acodec ac3 \ #english-dutch-russian-catalan-hebrew.ac3 #exit #rm /reiser/english-dutch-russian-catalan-hebrew.wav #multimux -o /reiser/english-dutch-german-russian-greek.wav \ #english.wav \ #dutch$DELAY_DUTCH.wav \ #german$DELAY_GERMAN.wav \ #russian$DELAY_RUSSIAN.wav \ #greek$DELAY_GREEK.wav #ffmpeg \ #-i /reiser/english-dutch-german-russian-greek.wav \ #-ab 320 \ #-ac 5 \ #-acodec ac3 \ #english-dutch-german-russian-greek.ac3 #exit #rm /reiser/english-dutch-german-russian-greek.wav ##mp2enc -b 64 -r 48000 -m -o tamil$DELAY_TAMIL.mp2 < tamil$DELAY_TAMIL.wav ##mp2enc -b 64 -r 48000 -m -o dutch$DELAY_DUTCH.mp2 < dutch$DELAY_DUTCH.wav ##mp2enc -b 64 -r 48000 -m -o catalan$DELAY_CATALAN.mp2 < catalan$DELAY_CATALAN.wav ##mp2enc -b 128 -r 48000 -o russian-tamil.mp2 < russian-tamil.wav ##mp2enc -b 128 -r 48000 -o russian-dutch.mp2 < russian-dutch.wav ##mp2enc -b 128 -r 48000 -o russian-catalan.mp2 < russian-catalan.wav #mp2enc -b 128 -r 48000 -o english-dutch.mp2 < english-dutch.wav #exit #rm english-dutch.wav # DVD #tcmplex-panteltje \ #-m d \ #-o $FILENAME.vob \ #-i 4416.mpv \ #-0 english.mpa \ #-1 english-dutch.mp2 \ #-2 english-spanish-french-italian-dutch.ac3 \ #-3 english-german-russian-greek-catalan.ac3 \ #-4 english-hebrew-tamil-dutch-german.ac3 \ #-5 english-spanish-french-german-dutch.ac3 \ #-6 english-dutch-russian-catalan-hebrew.ac3 \ #-7 english-dutch-german-russian-greek.ac3 \ #-c 184-1931 ## first mux without -c flag, then use mplayer to find start and end, then specify -c ## start at 3:03 = 183s ## end 32:11 = 1931s #exit # Add Dutch subtitles made with xste-3.3.1, in 4 screen postions (a.o. for wide screen) #echo "use xste to make and output vfactor 0 subs, then press ENTER" #read user_reply #cd /root/.subtitles/$FILENAME-dvd #submux-dvd \ #-v 3 \ #-s 0 \ #-t .180 \ #/video/vie/$FILENAME-dvd/$FILENAME.vob \ #/root/.subtitles/$FILENAME-dvd/$FILENAME-dvd.sub \ #/video/vie/$FILENAME-dvd/$FILENAME-subbed.vob #echo "use xste to make and output vfactor .022 subs, then press ENTER" #read user_reply #rm /video/vie/$FILENAME-dvd/$FILENAME.vob #cd /root/.subtitles/$FILENAME-dvd #submux-dvd \ #-v 3 \ #-s 1 \ #-t .180 \ #/video/vie/$FILENAME-dvd/$FILENAME-subbed.vob \ #/root/.subtitles/$FILENAME-dvd/$FILENAME-dvd.sub \ #/video/vie/$FILENAME-dvd/$FILENAME-subbed1.vob #echo "use xste to make and output vfactor .042 subs, then press ENTER" #read user_reply #rm /video/vie/$FILENAME-dvd/$FILENAME-subbed.vob #cd /root/.subtitles/$FILENAME-dvd #submux-dvd \ #-v 3 \ #-s 2 \ #-t .180 \ #/video/vie/$FILENAME-dvd/$FILENAME-subbed1.vob \ #/root/.subtitles/$FILENAME-dvd/$FILENAME-dvd.sub \ #/video/vie/$FILENAME-dvd/$FILENAME-subbed2.vob #echo "use xste to make and output vfactor .113 subs, then press ENTER" #read user_reply #rm /video/vie/$FILENAME-dvd/$FILENAME-subbed1.vob #cd /root/.subtitles/$FILENAME-dvd #submux-dvd \ #-v 3 \ #-s 3 \ #-t .180 \ #/video/vie/$FILENAME-dvd/$FILENAME-subbed2.vob \ #/root/.subtitles/$FILENAME-dvd/$FILENAME-dvd.sub \ #/video/vie/$FILENAME-dvd/$FILENAME-subbed3.vob #rm /video/vie/$FILENAME-dvd/$FILENAME-subbed2.vob #exit #cd /video/vie/$FILENAME-dvd #clear-dvd #dvdauthor -a mp2+en+1ch,mp2+nl+2ch,ac3+es+5ch,ac3+ru+5ch,ac3+el+5ch,ac3+iw+5ch,ac3+de+5ch,ac3+ca+5ch -s nl,nl,nl,nl,xx -p xste-palette.dat /video/vie/$FILENAME-dvd/$FILENAME-subbed3.vob #dvdauthor -T #makedvdimage #dvdimagecmp /dev/dvd /video/dvd_images/dvd_image #reburn-dvd-video #exit # XSVCD # simple VCD with 2 audio channels, 'burn-svcd' uses vcdimager. #tcmplex-panteltje \ #-m s \ #-o $FILENAME.mpg \ #-i 4416.mpv \ #-0 english.mpa \ #-1 english-dutch.mp2 \ #-c 184-1931 #burn-svcd $FILENAME.mpg #reburn-svcd #exit