Mencoder

> Index <
Mencoder
De relatie tussen Mplayer en mencoder
Het FFmpeg Project
Multimediabestanden hercoderen
Compatibiliteit met gesloten codecs en containerformaten
Gevaarlijke codecs
Waarom multimedia converteren?
Multimedia converteren is vaak een ingewikkeld proces
Mencoder onder eCS gebruiken
CPU oververhitting voorkomen
Prioriteit instellen
Materiaal verzamelen
Een DVD rippen met de mplayer dump functie
Multimedia bestanden converteren
AVI's aanmaken in meerdere passages
Codering in drie stappen
Met mencoder een DVD analyseren
Extra mencoder opties opgeven
Opties voor audio
Opties voor video
Ondertitelingsbestanden aanmaken
Mencoder.conf
Een film van de vaste schijf of DVD rippen
Via Drag en drop een XVid-AVI filmpjes maken van een DVD


De relatie tussen Mplayer en mencoder

> Top <

Het programma Mplayer verzorgt de weergave van allerlei streaming media (mediaspeler). De opdracht mplayer bestand speelt dus een multimediabestand af. Of een DVD, een live TV-opname of een URL, want het woord bestand is onder UNIX een ruim begrip.

Het programma mencoder wordt gebruikt om streaming mediabestanden om te zetten in een ander bestandsformaat (mediacodering). Hierbij is mencoder gespecialiseerd in het opslaan van multimedia in het Audio Video Interleave (AVI) bestandsformaat van Microsoft.

Microsoft heeft er aanvankelijk veel aan gedaan om AVI als open standaard te promoten. Want het leek haar een minder goed idee dat Apple's Quicktime Movie bestanden (MOV) de MPEG-4 standaard (MPG en MP4) werd. Toch gebeurde dit. Microsoft is inmiddels overgestapt naar haar gesloten Active Streaming Format (ASF) bestandsformaten (WMA en WMV bestanden). Deze containerformaten worden maar gedeeltelijk door mencoder beheerst (alleen ASF 1), maar MPlayer speelt ze wel af.

Voor het (de)codeerwerk gebruiken Mplayer en Mencoder dezelfde bibliotheken. Om die reden is het bewerken van een dumpfile van Mplayer gesneden koek voor mencoder en omgekeerd kan Mplayer uitstekend met alle codecs en filters van mencoder overweg. Mplayer is bijzonder geschikt om de werking van filters te beoordelen, voordat u mencoder urenlang het materiaal bewerken laat. Terwijl de film gecodeerd wordt kunt u hem als met Mplayer bekijken.

Het FFmpeg Project

> Top <

De door mplayer en mencoder gebruikte bibliotheken maken deel uit van Fabrice Bellards FFmpeg Project (Fast Forward MPEG). Dit open source project bestaat vooral uit bibliotheken die door andere programma's (mediaspelers en codeerders) worden gebruikt. De belangrijkste bibliotheken zijn libavcodec en libavformat. De libavcodec bibliotheek bevat de audio- en videocodecs en de libavformat bevat de audio/video container mux en demux bibliotheek.

Een codec is een bibliotheek/routine die bestanden kan comprimeren en/of decomprimeren. In de regel worden decodeer-codecs (bijna) gratis als plugins (DLL bestanden) aan eindgebruikers beschikbaar gesteld en moeten ze voor de codeer software stevig betalen. Het FFmpeg project bracht hier verandering in door de meeste gebruikte closed source codecs via reversed enginering na te bootsen.

Mux slaat op multiplexer, een apparaat dat signalen van meerdere bronnen (bijv. audio en video) als een complex signaal over een geleidende draad verzendt. Denk aan uw televisieantenne die de op zich al complexe signalen van verschillende televisiezenders met beeld en geluid tegelijkertijd kan ontvangen, maar toch via een antennedraad naar de televisie verstuurd. Demux slaat op het ontrafelen van dat complexe signaal in afzonderlijke signalen.

Een demultiplexer is een apparaat (televisie) of programma (mplayer) dat het opgevangen complexe signaal weer kan ontleden in zijn afzonderlijke componenten. Bijvoorbeeld een mp3 stroom voor geluid, een mpeg4 stroom voor de video en ondertiteling.

Daarnaast bevat het FFmpeg project de mediacodeerder ffmpeg, de mediaspeler ffplay, de HTTP streamer ffserver en bibliotheken met routines voor videobewerking als scaleren (vergroten en verkleinen van het beeldformaat).

Multimediabestanden hercoderen

> Top <

Mencoder kan dus streaming media van verschillende bronnen opvangen (demuxen, decoderen) en in een ander bestandsformaat opslaan. Mencoder kan ook met andere doelbestanden dan AVI omgaan. Zo kunt u met mencoder uw thuisvideo's prima omzetten naar een MPEG-2 DVD VOB formaat. Met Paul Smedley's port van DVDAuthor kunt u ook een DVD menu aanmaken. En met cdrecord zet u het op de DVD schijf.

Een soortgelijk programma is het door Paul Smedly geporteerde ffmpeg. Mencoder en ffmepg en worden veel gebruikt om VCD's en DVD's van de schijf te rippen en om te zetten in het AVI formaat. Het in de MPEG formaten gespecialiseerde fmpeg is eenvoudiger in gebruik, maar het in AVI opslag van MPEG4 formaten gespecialiseerde mencoder kent meer filters en mogelijkheden voor conversie.

Bij het converteren van het ene naar het andere streaming multimedia bestandsformaat kan het intern om een relatief eenvoudige kopieeracties gaan, maar ook om behoorlijk complexe bewerkingen in meerdere stappen.

Een voorbeeld van het laatste is het omzetten van een DVD hoofdfilm naar een enkel sterk gecomprimeerd AVI bestand met de door u gewenste taal en ondertiteling. Hierbij zal mencoder de inhoud van de IFO en VOB bestanden met de MPEG-2 gecomprimeerde videostroom, AC3 Dolby of MP2 audiokanalen en tekststromen van bijvoorbeeld dvd//4 moeten inlezen, analyseren, demuxen, decoderen en op een gesynchroniseerde wijze als MPEG-4 video en AC3 of MP3 audio in het Audio Video Interleave containerformaat moeten opslaan.

Daarom zijn de command line utilities ffmepg en mencoder geen gemakkelijke programma's. Want u moet voor iedere conversie altijd meerdere opties moet opgeven. Niet alleen de namen van de invoer- en uitvoerbestanden (bijv. -o film.avi), maar ook de namen van de codec bibliotheken, de gewenste audio en video codecs (mp2, mp3, ac3, mpeg4 etc) en de compressietechnieken (kwaliteit versus snelheid) waarmee ze gebruikt moeten worden.

Om dit ingewikkelde proces te automatiseren, maakte ik batches aan. De best werkende batches promoveerde ik naar de sjablonen map. Verderop komen ze ruimschoots aan bod. Maar eerst een waarschuwing.

Compatibiliteit met gesloten codecs en containerformaten

> Top <

Zowel mediaplayer als mencoder kunnen via hun gemeenschappelijke bibliotheken veel gesloten codecs en bestandsformaten interpreteren. Maar als u iets in het door Windows Media Speler en Windows Movie Maker gebruikte WMV bestandsformaat wilt opslaan hebben de open source software Mplayer en Mencoder een probleem. Want Microsofts laatste videocodecs en bestandsformaten zijn zodanig gepatenteerd dat het niet de moeite loont om ze te emuleren. Microsoft achtte het nodig haar inderdaad gebrekkige (maar sinds DivX en XVID wel breed ondersteunde) AVI formaat te verbeteren op zo'n manier dat het alleen maar met haar closed source software te coderen valt.

En ook al kunnen ze elkaars bestanden en codecs lezen en interpreteren, houdt steeds in de gaten dat de reserved engineered codec en container implementaties van mencoder, ffmpeg en mplayer libavcodec bibliotheek nooit dezelfde zullen zijn als die van bijvoorbeeld Microsoft en Real Networks. Er zal dus altijd kwaliteitsverlies optreden als u een film in het wmv of rm formaat opslaat. Bovendien kennen de codecs en mediaformaten van dezelfde leverancier vaak weer verschillende versies die niet altijd compatibel met elkaar hoeven te zijn. En dus kan een film er met de ene codec goed uitzien en met de andere weer niet.

Gevaarlijke codecs

> Top <

Bij nieuwe codec versies gaat het soms om verbeteringen, maar vaker om kritische bugfixes. Als het goed is worden uw van codecbibliotheken gebruik makende mediaspelers en/of hun codecs geregeld aangepast omdat de codecs steeds weer "critical errors" blijken te bevatten. En dan bedoel ik niet fouten in de zin van minder optimaal coderen, maar fouten die het mogelijk maken om op computers te in te breken door bepaalde bestanden (exploits) in de kwetsbare software mediaspelers af te spelen.

Wat er dan gebeurt, is dat de codec bibliotheek of het programma zich verslikt in een met opzet aangebrachte verandering in een gedownload mediabestand. Het bestand bevat op een zeker moment geen multimedia maar uitvoerbare code. In het gunstigste geval zal het programma hierop vastlopen, maar het kan ook zijn dat de uitvoerbare code toegang krijgt tot de bestanden van de gebruiker of zelfs het besturingssysteem. En dat kan veel ellende veroorzaken.

Dit gevaar geldt ook voor mencoder en mplayer. Het is daarom verstandig om alleen met de meest recente versies te werken. En achterdochtig te zijn als er een wel erg sterk gecomprimeerde blotedames.avi van 1 MB op Limewire wordt aangeboden.

Waarom multimedia converteren?

> Top <

Een reden om multimediabestanden te converteren is om bandbreedte en/of schijfruimte te besparen. U wilt bijvoorbeeld een backup maken van uw DVD's, maar niet als een kopie van de IFO en VOB bestanden. Want die nemen teveel schijfruimte in (typisch 4 GB per film). Dan is het omzetten ervan in een door uw video- of mediaspeler ondersteunde MPEG-4 codec de beste keus. Met een high quality MPEG4 compressie naar een kleiner frame bespaart u na een paar uur hercoderen op de achtergrond al snel 70-90% schijfruimte.

Het komt ook voor dat uw op MS georienteerde mediaspeler slechts bepaalde bestandsformaten ondersteunt (WMV, XVID, maar niet MOV). En dan is het vervelend dat uw Panasonic fototoestel Apple's MOV-bestanden aanmaakt. Mplayer kan ze wel onder OS/2 wel afspelen, maar uw mobieltje of DVD speler misschien niet. In dat geval (niet ondersteunde video codecs of bestandsformaten) kan mencoder zowel behulpzaam zijn bij het omzetten naar een ander containerformaat (bijv. Apple's MOV containerformaat naar de DivX4 of XVID variant van Microsofts AVI) als bij het hercoderen van de gebruikte video en audio codecs.



Multimedia converteren is vaak een ingewikkeld proces

> Top <

Klinkt dit te ingewikkeld voor u? Maar dat is het ook! Het lijkt vrij simpel als u niet weet wat u doet. Al u alles aan Apple of Microsoft overlaat. Maar als u iets "op maat" wilt coderen, blijkt multimediaconversie een uitermate ingewikkeld proces te zijn. Maar juist dan is de logica van het ingewikkelde mencoder is uw beste vriend.

U moet begrijpen hoe een avi of mp4-bestand in elkaar zit.

Want waar het steeds om gaat is dat beeld en geluid op afzonderlijke manieren gecodeerd zijn (via hun video en audio codecs). En dat het "multiplexed"multimediabestand (containerformaat) waarin ze opgeslagen zijn ze in frames opslaat.

Een frame bevat (contains) een plaatje dat meestal een keer per 1/25 tot 1/50 seconden aan u wordt gepresenteerd. De videobeelden van ieder frame worden meestal als JPG of PNG (de bekende plaatjes) gecodeerd en de bijbehorende audio als MP2, MP3 of als Dolby Digital (DD) AC3.

Ieder om de zoveel tijd gepresenteerd frame kan bij een bepaalde audio en video bitrate een aantal video en audio bits bevatten. Bij de door DVD's gebruikte Variable Audio Bit Rate (VBR) wordt dit per frame aangepast. De codering van een stilte en daaropvolgende knal kan dan over meerdere frames verspreid worden.

Evenzo hoeft door tot 15 frames bestaande gebufferde Group of Frames (GOP) , een MPEG-2 bestand niet voor ieder frame de voor de benodigde scale benodigde bits op te slaan. Alleen de veranderingen in de hierop volgende GOP size frames zijn relevant. En door de GOP size aan te passen (GOP=1 bij actie, GOP=15 bij een statisch beeld) kunnen de bits beter verspreid worden.

De MPEG coderingen besparen ruimte door vooral de wijzingen in de JPEG plaatjes van ieder frame op te slaan. En bij het coderen en de coderen zal kennis van de aard van de aanstaande wijzingen (snel of langzaam) van nut zijn. Want het ene algoritme werkt beter in die ene situatie van snelle verandering dan die andere. Goede codecs houden hier rekening mee. En geven de gewijzigde video-omstandigheden aan de mediaspeler door.

Tegenwoordig ondersteunen veel mobiele telefoons en mediaspelers MPEG-4. Mijn doel was het archiveren van MPEG-2 DVD's met Nederlandse ondertiteling in een compact en bruikbaar MPEG-4 formaat. Zodat ik niet op een mediaspeler op zoek hoefde te gaan naar een ondertitelingsbestand.

Daarnaast wilde ik de van mijn Hauppauge PVR 350 televisiekaart met Emperoar TV opgenomen MPEG-2 televisieprogramma's (2 GiB / uur speeltijd) omzetten in het AVI-formaat. Om ze daarna via een flash of USB schijf op een mediaspeler af te kunnen spelen.

Bovendien zocht ik redelijk snelle methodes om die conversie door te voeren. En natuurlijk moest dat op de achtergrond. Want dan hoef je er niet op te wachten.

Mencoder onder eCS gebruiken

> Top <

Voordat u met mencoder aan de slag gaat, moet u de volgende zaken in de gaten houden. Het decodeerwerk van mencoder en ffmpeg kost veel energie en processortijd en zal als u niet uitkijkt tot vastlopers leiden: het zij door oververhitting, hetzij door een vastlopende WPS. Om dat te voorkomen moet u voorzorgsmaatregelen nemen.

CPU oververhitting voorkomen

> Top <

Op moederborden en processors zonder bescherming tegen te hoge temperaturen (thermal protection) kunt u mencoder beter niet gebruiken. De kans dat de processor oververhit raakt is groot.

Op mijn Asrock moederbord met CPU throttling staat de maximale toegestane temperatuur van de processor op 70 graden ingesteld. Dit is eigenlijk al meer dan de 3.20 GHz Intel Celeron D processor kan hebben. Zie: Processor Electrical Specifications. Zodra de processortemperatuur deze grenswaarde overschrijdt, wordt de klokfrequentie geminderd. Daalt de temperatuur niet snel genoeg, dan zal de processor opnieuw vaart minderen.

Dit proces is indirect te volgen in de XCenter Widget Health Monitor, waar de temperatuur enige malen per minuut tot een waarde van boven de 70 graden stijgt, om vervolgens weer te dalen. Ook als de koperen Zalman koeler op volle toeren draait, wordt de maximale kloksnelheid tijdens het (de)coderen zelden gehaald. Op warme dagen zal het rippen van DVD's dus langer duren.

Prioriteit instellen

> Top <

Het coderen en decoderen kost veel processortijd. De CPU-use zal aldoor nabij de 100% zijn. Hierdoor reageert de WPS traag en kunnen netwerkverbindingen vastlopen. Bovendien zal een bijna oververhitte processor, zijn kloksnelheid verminderen. Waardoor de CPU-tijd voor alle programma's verminderen en de WPS dus nog meer vastloopt.

Om al die redenen is het noodzakelijk om mencoder op te starten als een achtergrondproces met idle priority, zodat u ondertussen ook met lagere kloksnelheden vlot kunt doorwerken. Ondanks de hoge (idle) processorbelasting zal de nu met hogere (regular) prioriteit lopende WPS vlot reageren en alle tijdskritische processen (zoals uw TV opnames met EmperoarTV) zullen ongestoord verlopen. Hiertoe start u mencoder via het utility priority op.

priority 1 10 mencoder dvd://2 -dvd-device m: -o title2.avi -oac copy -ovc lavc 

Priority.exe maakt deel uit van de File Manager/2 utilities van Mark Kimes die tegenwoordig te vinden zijn op Netlabs (fm2utils.zip). Neem als eerste waarde (class) altijd de 1 van idle. De tweede waarde (delta) mag tussen de 0 en de 31 zijn. Een proces met prioriteit 1 1 zal altijd op een proces met prioriteit 1 2 wachten en een proces met prioriteit 1 31 wacht op ieder gewoon programma met prioriteit 2 0.

Voor meer informatie zie Prioriteiten stellen. Bestudeer deze leidraad goed, want u kunt er veel plezier van hebben.

De XWorkplace worker thread loopt standaard met een prioriteit class 1 en delta 31 (priority 11f in Watchcat, waarmee bedoeld wordt HEX 1 en 1F). En dat geldt voor veel PMShell idle priority OS/2 achtergrondfuncties. Om deze toch niet onbelangrijke taken niet tegen te werken en voor starvation te behoeden, stel ik een mencoder prioriteit van maximaal 1 30 voor.

Materiaal verzamelen

> Top <

Aangezien DVD spelers niet zo stil, betrouwbaar en snel zijn als vaste schijven, is het slimmer om een DVD vanaf de vaste schijf af te spelen en te bewerken. Bij het converteren van DVD materiaal naar een ander bestandsformaat, werk ik dus het liefst vanaf de harde schijf. Dat gaat het eenvoudigst door de inhoud van de DVD gewoon naar een map met de naam van de DVD titel te kopiëren. Dit staat ook wel als rippen bekend.

[I:\]xcopy m:\*.* q:\dvd\dvd_titel /s
De naam bij de opdracht XCOPY, dvdtitel, kan een directorynaam
of bestandsnaam zijn. Typ J als het gaat om een directory en N
als het gaat om een bestandsnaam.

Verwijst dvdtitel naar een directory (J/N)? j

Bronbestanden worden ingelezen...

M:\VIDEO_TS\VIDEO_TS.BUP
M:\VIDEO_TS\VIDEO_TS.IFO
M:\VIDEO_TS\VIDEO_TS.VOB
M:\VIDEO_TS\VTS_01_0.BUP
M:\VIDEO_TS\VTS_01_0.IFO

Het is verstandig om alle bestanden (BUB, IFO, VOB) mee te nemen. Bij deze methode kunnen Mplayer en Meencoder van het IFO (of indien beschadigd BUB) bestand gebruik maken om bijvoorbeeld de gesproken talen en ondertitels te vinden. In %user%\.mplayer\mencoder.conf zet u dan bijvoorbeeld:

slang=nl
alng=en

Een DVD rippen met de mplayer dump functie

> Top <

Mocht het rippen met xcopy niet lukken, maar is de DVD wel afspeelbaar met Mplayer, dan kunt u gebruik maken van de dumpsteam optie van mplayer. Mplayer kan immers met het Content Scramble System overweg. Maar weer niet met de laatste versies daarvan.

De volgende cmd-batch voegt alle VOB bestanden van de eerste vijftien filmtracks samen tot genummerde titelbestanden, die vervolgens weer aan ffmpeg of mencoder kunnen worden doorgevoerd.

De voortgang wordt bekeken met het GNI utility tail (of beter het hier geremde en verderop besproken taillog.cmd)

SET MOVIENAME=moviename

call mode co80,40
set MPLAYER_OPTIONS = -dvd-device M: -sid 20
rem Door -sid 20 op te geven is de kans minder dat het rippen van de eerste 20 ondertitels wordt gemist.
q:
cd mpg
md %MOVIENAME%
cd  %MOVIENAME%
del *.*
mplayer dvd://1  -dumpstream -dumpfile Q:\Mpg\%MOVIENAME%\%MOVIENAME%1.mpg  > %MOVIENAME%.log 2>&1
start "Tail %MOVIENAME%" /c tail -f --lines=25 %MOVIENAME%.log 
rem start "Tail %MOVIENAME%" /c taillog %MOVIENAME%.log 
mplayer dvd://2 -dumpstream -dumpfile Q:\Mpg\%MOVIENAME%\%MOVIENAME%2.mpg  >> %MOVIENAME%.log 2>&1
mplayer dvd://3 -dumpstream -dumpfile Q:\Mpg\%MOVIENAME%\%MOVIENAME%3.mpg  >> %MOVIENAME%.log 2>&1
mplayer dvd://4 -dumpstream -dumpfile Q:\Mpg\%MOVIENAME%\%MOVIENAME%4.mpg  >> %MOVIENAME%.log 2>&1
mplayer dvd://5 -dumpstream -dumpfile Q:\Mpg\%MOVIENAME%\%MOVIENAME%5.mpg  >> %MOVIENAME%.log 2>&1
mplayer dvd://6 -dumpstream -dumpfile Q:\Mpg\%MOVIENAME%\%MOVIENAME%6.mpg  >> %MOVIENAME%.log 2>&1
mplayer dvd://7 -dumpstream -dumpfile Q:\Mpg\%MOVIENAME%\%MOVIENAME%7.mpg  >> %MOVIENAME%.log 2>&1
mplayer dvd://8 -dumpstream -dumpfile Q:\Mpg\%MOVIENAME%\%MOVIENAME%8.mpg  >> %MOVIENAME%.log 2>&1
mplayer dvd://9 -dumpstream -dumpfile Q:\Mpg\%MOVIENAME%\%MOVIENAME%9.mpg  >> %MOVIENAME%.log 2>&1
mplayer dvd://10 -dumpstream -dumpfile Q:\Mpg\%MOVIENAME%\%MOVIENAME%10.mpg  >> %MOVIENAME%.log 2>&1
mplayer dvd://11 -dumpstream -dumpfile Q:\Mpg\%MOVIENAME%\%MOVIENAME%11.mpg  >> %MOVIENAME%.log 2>&1
mplayer dvd://12 -dumpstream -dumpfile Q:\Mpg\%MOVIENAME%\%MOVIENAME%12.mpg  >> %MOVIENAME%.log 2>&1
mplayer dvd://13 -dumpstream -dumpfile Q:\Mpg\%MOVIENAME%\%MOVIENAME%13.mpg  >> %MOVIENAME%.log 2>&1
mplayer dvd://14 -dumpstream -dumpfile Q:\Mpg\%MOVIENAME%\%MOVIENAME%14.mpg  >> %MOVIENAME%.log 2>&1
mplayer dvd://15 -dumpstream -dumpfile Q:\Mpg\%MOVIENAME%\%MOVIENAME%15.mpg  >> %MOVIENAME%.log 2>&1
exit

Dat levert na het rippen van DVD:/5 het volgende op in het logbestand:

Playing dvd://5.
There are 15 titles on this DVD.
There are 1 chapters in this DVD title.
There are 1 angles in this DVD title.
number of audio channels on disk: 0.
number of subtitles on disk: 0
Core dumped ;)

Exiting... (End of file)

Onder UNIX betekent core dumped meestal een vastloper. Maar hier geeft de melding Core dumped ;) gevolgd door Exiting... (End of file) een geslaagde dump van DVD:/5 aan. Vandaar de smiley ;).

Het rippen van de hoofdfilm DVD:/6 duurt langer.

Playing dvd://6.
There are 15 titles on this DVD.
There are 12 chapters in this DVD title.
There are 1 angles in this DVD title.
audio stream: 0 format: ac3 (5.1) language: en aid: 128.
audio stream: 1 format: ac3 (stereo) language: en aid: 129.
number of audio channels on disk: 2.
subtitle ( sid ): 0 language: nl
subtitle ( sid ): 1 language: fr
number of subtitles on disk: 2

U ziet dat er twee audio streams (aid) zijn, genaamd 0 en 1 voor Engelstalige AC3 5.1 surround en AC3 stereo. Daarnaast bevat de DVD twee talen voor ondertiteling (sid): 0 voor nl en 1 voor fr.

Het is goed hier notie van te nemen. Vandaar dat ik de dumpgevens log. Met het GNU utility tail.exe (te vinden in de coreutils-6.9-os2.zip en bij mij standaard gekoppeld aan de extensie .log) kunt u de door mplayer geopende logbestanden al tijdens het rippen bekijken.

Ik gebruik hiervoor meestal de hier geremde batch taillog.cmd

@echo off
rem Tail geeft de laatste beeldregels van een geopend logbestand dynamisch weer.
rem Pas de MODE CO instellingen van het VIO beeldscherm (en de tail -lines=)desgewenst aan. 
rem 132 is hier de schermbreedte en en 50 het aantal regels
MODE CO132,50
tail -f --lines=49 %1 
exit

GNU text utilities 1.19 - tail

Usage: I:\unixos2\bin\tail [OPTION]... [FILE]...
Print last 10 lines of each FILE to standard output.
With more than one FILE, precede each with a header giving the file name.
With no FILE, or when FILE is -, read standard input.

  -c, --bytes=N            output the last N bytes
  -f, --follow             output appended data as the file grows
  -n, --lines=N            output the last N lines, instead of last 10
  -q, --quiet, --silent    never output headers giving file names
  -v, --verbose            always output headers giving file names
      --help               display this help and exit
      --version            output version information and exit

If the first character of N (the number of bytes or lines) is a `+',
print beginning with the Nth item from the start of each file, otherwise,
print the last N items in the file.  N may have a multiplier suffix:
b for 512, k for 1024, m for 1048576 (1 Meg).  A first OPTION of -VALUE
or +VALUE is treated like -n VALUE or -n +VALUE unless VALUE has one of
the [bkm] suffix multipliers, in which case it is treated like -c VALUE or -c +VALUE.

Als u later dit bestand hercodeert kunt u -aid 128 en -sid 0 als mencoder opties opgeven.

Wilt u voor ffmpeg (die geen VOB bestanden aaneenvoegen kan) een dumpbestand aanmaken van de DVD kopie map q:\dvd\dvd_titel op de vaste schijf, dan geeft u in mplayer gewoon -dvd-device q:\dvd\dvd_titel. Voor drag en drop werken geeft u -dvd-device %1) op. Lange namen mogen, maar gebruik wel underscores: Bedenk dat -dvd-device q:\dvd\dvd titel waarschijnlijk niet zal werken.

De volledige DVD RIP levert hier 9 titels op, waarvan track5 t/m 6 de hoofdfilms vormen. Ze zijn samen bijna 16 GB (tegenover de 6,3 GB van de VOBs op de DVD).

film1.mpg    4427776
film2.mpg    5214208
film3.mpg    3940352
film4.mpg    4476928
film5.mpg   6182198K
film6.mpg   6182198K
film7.mpg   3993620K
film8.mpg      4096
film9.mpg      4096

Als u de tracks later tot AVI (FMP4) gaat comprimeren, dan blijft er van een 6 GB bestand maar 1 GB over.

Omdat de hoofdfilm meestal groter is dan 2 GiB hebt u het JFS (of UDF) bestandssysteem nodig om de bestanden op te slaan. Met FC/2 kunt u ze onder de WPS openen. Grote bestanden die ik via hun WPS associaties open, gingen helaas meteen verloren. De associaties van FC/2 kunt u onder Commands/ Edit Associations instellen. Met F3 activeert u de viewer (hier mplayer) en met F4 een editor of (hier) een specifieke bewerking.

[Viewer Associations]
*.{avi,wmv,mpg,mp4,vob}: start /c mplayer !
[Editor Associations]
*.{mpg,vob}: start priority 1 1 mencoder ! -o !x.mp4 -oac copy -ovc lavc -lavcopts vcodec=mpeg4

De start opdracht voorkomt dat FC/2 bezet blijft. Plaats mplayer dan wel in het PATH voor de mplayer.exe van \OS2\MDOS\WINOS2. Ik gebruik hiervoor /ecs/bin.

Multimedia bestanden converteren

> Top <

De zojuist aangemaakt titelbestanden (title1.mpg2) staan in het MPEG-2 formaat. U kunt ze nog ongeveer 3-4 maal verkleinen door ze met in het MPEG-4 formaat om te zetten.

De meest eenvoudige meencoder opdracht die ik ken om een MPEG-2 VOB-bestandsformaat naar een MPEG-4 AVI bestand te converteren is deze opdracht: mencoder film.vob -oac copy -ovc lavc -o film.avi

Mencoder zet dan bron film.vob om in het (-o van output) bestand film.avi. Maar de opdracht mencoder film.vob film.avi zonder beeld of geluidsspecificaties geeft de foutmelding: No video encoder (-ovc) selected. Select one (see -ovc help) of No audio encoder (-oac) selected. Select one (see -oac help) or use -nosound.

Oftewel als u met mencoder iets converteert (input => output), dan moet u opgeven waarmee u het wilt coderen. De codecs en het containerformaat van het invoerbestand worden al door mencoder zelf gedetecteerd. Maar u moet zelf de bibliotheken voor beeld en geluid opgeven waarmee u iets wilt converteren en de compressietechniek waarin dat gebeuren moet. En met de optie -of type geeft u het containerformaat van het uitvoerbestand op als dit niet al impliciet uit de bestandsextensie (avi, mpg) volgt.

We lopen het nog even na:

meencoder invoerbestand -o uitvoerbestand opties

Betekenis

mencoder film.vob

Film.vob is de bestandslokatie waar mencoder wat mee moet doen. Het kan een enkel bestand zijn, maar ook een reeks van bestanden, zoals bijvoorbeeld met mencoder dvd://1 -dvd-device m: waarin misschien VTS_01_0.IFO, VTS_01_0.VOB, VTS_01_1.VOB, VTS_01_2.VOB en VTS_01_3.VOB zitten. Dat laatste kan wel handih zijn voor opties als -alang en die vanuit het IFO-bestand moeten worden uitgelezen.

-oac copy

Output audio codec (aoc -copy) Het zonder gegevensverlies kopiëren van het DVD AC3 frame Dolby formaat naar het nieuwe AVI container bestandsformaat is nuttig voor de meeste met Dolby AC3 voorbespeelde DVD's. Hiermee worden synchronisatiefouten tussen beeld en geluid (ze lopen niet gelijk op) voorkomen.

De audio codec uitvoer (oac) wijzen zijn.

[F:\]mencoder -oac help
Available codecs:
 copy     - frame copy, without re-encoding (useful for AC3)
 pcm      - uncompressed PCM audio
 mp3lame  - cbr/abr/vbr MP3 using libmp3lame
 lavc     - FFmpeg audio encoder (MP2, AC3, ...)

Lavc staat voor de libavcodec codec bibliotheek die heel veel codecs bevat .

-ovc lavc -lavcopts vcodec=mpeg4

Output video codec (ovc) lavc codeert het bestand met de libavcodec bibliotheek en in het mpeg4 formaat met -lavcopts vcodec=mpeg4.

De video codec uitvoer (ovc) wijzen zijn:

[F:\]mencoder -ovc help
Available codecs:
 copy - frame copy, without re-encoding. Doesn't work with filters.
 frameno - special audio-only file for 3-pass encoding, see DOCS.
 raw - uncompressed video. Use fourcc option to set format explicitly.
 nuv - nuppel video
 lavc - libavcodec codecs - best quality!
 xvid - XviD encoding

Zoals mencoder r -ovc help al aangeeft geeft de libavcodec bibliotheek de beste kwaliteit. In ieder geval voor de aan mencoder verwante media spelers. Binnen de libavcodec bibliotheek moet u het uitvoerformaat selecteren. Zo kunt u bijvoorbeeld voor MPEG-4 compressie kiezen met -lavcopts vcodec=mpeg4.

-o film.avi

Sla het bestand film.avi op in het Audio Video Interleave (AVI) "multimedia container format" van Microsoft. Mencoder herkent het containerformaat aan de avi-extensie.

Wilt u de uitvoer als MPEG opslaan dat zou u -of mpeg -o film.mpg kunnen opgeven.

[F:\]mencoder -of help
Available output formats:
   avi      - Microsoft Audio/Video Interleaved
   mpeg     - MPEG-1/2 system stream format
   lavf     - FFmpeg libavformat muxers
   rawvideo - (video only, one stream only) raw stream, no muxing
   rawaudio - (audio only, one stream only) raw stream, no muxing

-of type

Standaard maakt mencoder een avi bestand aan. Als u dus een ander bestand wilt aanmaken, moet u dit opgeven.

-of <format> (BETA CODE!)
              Encode to the specified container format (default: AVI).
              NOTE: Use -of help to get a list of available container formats.

              EXAMPLE:
                 -of avi
                      Encode to AVI.
                 -of mpeg
                      Encode to MPEG (also see -mpegopts).
                 -of lavf
                      Encode with libavformat muxers (also see -lavfopts).
                 -of rawvideo
                      raw video stream (no muxing - one video stream only)
                 -of rawaudio
                      raw audio stream (no muxing - one audio stream only)

Voorbeeld: De opdracht:

PRIORITY 1 0 mencoder %1 -forceidx -oac copy -ovc copy -of mpeg -o %1.mpg 

maakt een nieuw geindexeerd MPEG2 bestand aan. Maar zou ik -of mpeg weggelaten hebben, dan had ik een met mp3 audio (ondanks de -oac copy !) gecodeerde AVI (met de extensie mpg).




AVI's aanmaken in meerdere passages

> Top <

De volgende opdracht maakt in een keer van track 6 van DVD device %1 een XVID en DivX compatibel AVI-bestand waarbij de audio als MP3 gecodeerd is. De audiostroom is Engels stereo (-aid 129) en de ondertiteling is Nederlands (-sid 0).

priority 1 10 mencoder dvd://6 -dvd-device %1 -aid 129 -sid 0 -sws 2 -oac mp3lame -lameopts vbr=3 -ovc lavc -lavcopts vcodec=mpeg4:mbd=2:trell:v4mv:turbo -vf crop=720:576:0:0,scale=768:432 -ffourcc XVID -o film.avi

Dergelijke bestanden zijn erg compact. De gedumpte film6.mpg van 6.182.198 KB werd tot 683.614 KB verkleind.

Nu is het probleem dat mencoder nooit van tevoren weet welk beeldmateriaal hij tegen zal komen. Daarvoor zou mencoder eigenlijk de film eerst moeten bekijken en analyseren. Om de film daarna, met die kennis te coderen. Precies dat is wat er gebeurd tijdens een 2 pass bewerking.

priority 1 10 mencoder dvd://6 -dvd-device %1 -aid 129 -sid 0 -sws 2 -oac mp3lame -lameopts vbr=3 -ovc lavc -lavcopts vcodec=mpeg4:mbd=2:trell:v4mv:turbo:vpass=1 -vf crop=720:576:0:0,scale=768:432 -ffourcc XVID -o NUL

priority 1 10 mencoder dvd://6 -dvd-device %1 -aid 129 -sid 0 -sws 2 -oac mp3lame -lameopts vbr=3 -ovc lavc -lavcopts vcodec=mpeg4:mbd=2:trell:v4mv:turbo:vpass=2 -vf crop=720:576:0:0,scale=768:432 -ffourcc XVID -o film.avi

Tijdens de eerste ronde (vpass=1) wordt geen film (-o NUL) aangemaakt, maar alleen maar een logbestand met de naam divx2pass.log. Door dat logbestand te lezen (hier 20 MB) weet mencoder welke mate van verandering hij tegen zal komen.

in:0 out:0 type:1 q:480 itex:13666 ptex:0 mv:0 misc:5019 fcode:1 bcode:1 mc-var:0 var:1672 icount:836 skipcount:0 hbits:467;
in:1 out:1 type:2 q:327 itex:0 ptex:0 mv:0 misc:841 fcode:1 bcode:1 mc-var:0 var:1672 icount:0 skipcount:836 hbits:55;
in:2 out:2 type:2 q:327 itex:0 ptex:0 mv:0 misc:841 fcode:1 bcode:1 mc-var:0 var:1672 icount:0 skipcount:836 hbits:55;

Tijdens de tweede ronde (vpass=1) waarin het AVI-bestand (-o film.avi) gecodeerd wordt kan mencoder hier rekening mee houden. Bijvoorbeeld door tijdig zijn buffers en codeertechnieken aan te passen aan het soort beeldmateriaal dat verschijnt. Hierdoor zal een two-pass codering een betere beeldkwaliteit opleveren dan een codering die in een keer tot stand kwam.

Als het bestand klaar is zal Mplayer tijdens het afspelen het volgende vermelden:

Clip info:
 Software: MEncoder dev-SVN-rUNKNOWN-3.3.5
dvdsublang...film nl
==========================================================================
Opening video decoder: [ffmpeg] FFmpeg's libavcodec codec family
Selected video codec: [ffodivx] vfm: ffmpeg (FFmpeg MPEG-4)
==========================================================================
==========================================================================
Opening audio decoder: [mp3lib] MPEG layer-2, layer-3
AUDIO: 48000 Hz, 2 ch, s16le, 32.0 kbit/2.08% (ratio: 4000->192000)
Selected audio codec: [mp3] afm: mp3lib (mp3lib MPEG layer-2, layer-3)
==========================================================================
AO: [dart] 48000Hz 2ch s16le (2 bytes per sample)
Starting playback...
Compiler did not align stack variables. Libavcodec has been miscompiled
and may be very slow or crash. This is not a bug in libavcodec,
but in the compiler. You may try recompiling using gcc >= 4.2.
Do not report crashes to FFmpeg developers.
VDec: vo config request - 704 x 304 (preferred colorspace: Planar YV12)
VDec: using Planar YV12 as output csp (no 0)
Movie-Aspect is 2.32:1 - prescaling to correct movie aspect.
VO: [kva] 704x304 => 704x304 Planar YV12
[swscaler @ 0x177ecd8]SwScaler: using unscaled yuv420p -> bgr24 special converter
A: 629.9 V: 629.9 A-V: -0.001 ct:  0.073 15748/15748  0%  0%  0.0% 67 0



Codering in drie stappen

> Top <

De beste beeldkwaliteit wordt bereikt met een 3-pass codering. Tijdens de eerste ronde met de mp3lame bibliotheek wordt alleen het AC3 of MP2 audiomateriaal geript. Dat wordt als mp3 vastgelegd in een containerbestand met een vaste bestandsnaam: frameno.avi. Oftewel een AVI zonder frames (frames no), maar wel met MP3 geluid.

priority 1 10 mencoder dvd://6 -dvd-device M: -aid 128 -sid 0 -sws 2 -oac mp3lame -lameopts vbr=3 -ovc frameno -ffourcc XVID -o frameno.avi

In de volgende stap (met vpass=1) wordt het beeldmateriaal geanalyseerd. De processor hoeft zich niet met de audio bezig te houden. Die wordt gewoon vanuit het bestand frameno overgenomen (-oac copy). De output mag een al meteen met mplayer te controleren film.avi bestand zijn, maar ook het NUL device (-o NUL). Want waar het in deze gang om gaat is het divx2pass.log dat de analyse van het beeldmateriaal bevat.

priority 1 10 mencoder dvd://6 -dvd-device M: -aid 128 -sid 0 -sws 2 -oac copy -ovc lavc -lavcopts vcodec=mpeg4:mbd=2:trell:v4mv:turbo:vpass=1 -vf crop=720:576:0:0,scale=704:304 -ffourcc XVID -o NUL

Ten slotte wordt in de derde gang met (met vpass=2) aan de hand van divx2pass.log het bestand film.avi aangemaakt (en of een oudere versie) overschreven.

priority 1 10 mencoder dvd://6 -dvd-device M: -aid 128 -sid 0 -sws 2 -oac copy -ovc lavc -lavcopts vcodec=mpeg4:mbd=2:trell:v4mv:turbo:vpass=2 -vf crop=720:576:0:0,scale=704:304 -ffourcc XVID -o film.avi

Met deze methode weet mencoder op ieder ogenblik welke compressie methode het gunstigst is. Door de codering van de video van het geluid af te splitsen is de methode ook relatief snel (kleinere werkset). Maar de 3-pass rip geeft vaak problemen met de synchronisatie van beeld en geluid.

Een voorbeeld: Ik heb hier de DVD M: naar de map K:\DVD\film gekopieerd om sneller te kunnen werken. Verder heb ik -aid 129 gekozen omdat ik het 5.1 surround AC3 geluid van aid 128 niet nodig heb. Tenslotte heb ik de prioriteit wat aangepast om sneller te kunnen werken (de codering met priority 1 10 op de achtergrond moet maar even wachten) .

[Q:\var\rip\6]priority 1 30 mencoder dvd://6 -dvd-device K:\DVD\film -aid 129 -sid 0 -sws 2 -oac
mp3lame -lameopts vbr=3 -ovc frameno -o frameno.avi
Starting priority:  class 2, delta 0
Adjusted priority:  class 1, delta 31
Starting /C mencoder dvd://6 -dvd-device K:\DVD\film -aid 129 -sid 0 -sws 2 -oac mp3lame -lameopt s vbr=3 -ovc frameno -o frameno.avi
MEncoder dev-SVN-rUNKNOWN-3.3.5 (C) 2000-2006 MPlayer Team
CPU: Intel(R) Celeron(R) CPU 3.20GHz (Family: 15, Model: 4, Stepping: 9)
CPUflags: Type: 15 MMX: 1 MMX2: 1 3DNow: 0 3DNow2: 0 SSE: 0 SSE2: 0
Compiled with runtime CPU detection.
There are 15 titles on this DVD.
There are 12 chapters in this DVD title.
There are 1 angles in this DVD title.
audio stream: 0 format: ac3 (5.1) language: en aid: 128.
audio stream: 1 format: ac3 (stereo) language: en aid: 129.
number of audio channels on disk: 2.
subtitle ( sid ): 0 language: nl
subtitle ( sid ): 1 language: fr
number of subtitles on disk: 2
success: format: 2  data: 0x0 - 0x7b1b6000
MPEG-PS file format detected.
VIDEO:  MPEG2  720x576  (aspect 3)  25.000 fps  6000.0 kbps (750.0 kbyte/s)
[V] filefmt:2  fourcc:0x10000002  size:720x576  fps:25.00  ftime:=0.0400
==========================================================================
Opening audio decoder: [liba52] AC3 decoding with liba52
No accelerated IMDCT transform found
Using MMX optimized resampler
AUDIO: 48000 Hz, 2 ch, s16le, 224.0 kbit/14.58% (ratio: 28000->192000)
Selected audio codec: [a52] afm: liba52 (AC3-liba52)
==========================================================================
Forcing output FourCC to 44495658 [XVID].
MP3 audio selected.
Writing header...
ODML: Aspect information not (yet?) available or unspecified, not writing vprp header.
Writing header...
ODML: Aspect information not (yet?) available or unspecified, not writing vprp header.
Pos:   0.9s     22f ( 0%)  0.00fps Trem:   0min   0mb  A-V:0.084 [0:117]
Skipping frame!
Pos:   1.3s     34f ( 0%)  0.00fps Trem:   0min   0mb  A-V:0.081 [0:119]
Skipping frame!
Pos: 520.5s  13015f ( 5%) 140.37fps Trem:  25min 147mb  A-V:0.061 [0:133]

We lezen hier na 520 s film dat de AC3 codering in frameno.avi over 25 minuten iets van 147 MB zal zijn.

Pos:5464.2s 136607f (62%) 133.55fps Trem:  10min 144mb  A-V:0.063 [0:132]

15 minuten en 123592 frames later is dat bijgesteld tot 144 MB. De informatie wordt opgeslagen in frameno.avi dat uiteindelijk maar 106.077 KB (103,6 MB) groot blijkt te zijn.

Dit MPEG-4 bestand is af te spelen door mplayer, maar frameno.avi bevat natuurlijk alleen maar geluid:

[mpeg4 @ 0x1784180]header damaged  0.072  70/ 70  0%  0%  0.0% 0 0
Error while decoding frame!

Vervolgens wordt de film in de tweede stap geanalyseerd. Ik laat niet alles zien, want mijn scherm bevat te weinig regels. Als u fouten opsporen wilt gebruikt u -o film.avi >> mencoder.log 2>&1 .

subtitle ( sid ): 0 language: nl
subtitle ( sid ): 1 language: fr
number of subtitles on disk: 2
success: format: 2  data: 0x0 - 0x7b1b6000
MPEG-PS file format detected.
VIDEO:  MPEG2  720x576  (aspect 3)  25.000 fps  6000.0 kbps (750.0 kbyte/s)
[V] filefmt:2  fourcc:0x10000002  size:720x576  fps:25.00  ftime:=0.0400
==========================================================================
Opening audio decoder: [liba52] AC3 decoding with liba52
No accelerated IMDCT transform found
Using MMX optimized resampler
AUDIO: 48000 Hz, 2 ch, s16le, 224.0 kbit/14.58% (ratio: 28000->192000)
Selected audio codec: [a52] afm: liba52 (AC3-liba52)
==========================================================================
Opening video filter: [expand osd=1]
Expand: -1 x -1, -1 ; -1, osd: 1, aspect: 0.000000, round: 1
Opening video filter: [scale w=704 h=304]
Opening video filter: [crop w=720 h=576 x=0 y=0]
Crop: 720 x 576, 0 ; 0
==========================================================================
Opening video decoder: [mpegpes] MPEG 1/2 Video passthrough
VDec: vo config request - 720 x 576 (preferred colorspace: Mpeg PES)
Could not find matching colorspace - retrying with -vf scale...
Opening video filter: [scale]
The selected video_out device is incompatible with this codec.
Try adding the scale filter, e.g. -vf spp,scale instead of -vf spp.
VDecoder init failed :(
Opening video decoder: [libmpeg2] MPEG 1/2 Video decoder libmpeg2-v0.4.0b
Selected video codec: [mpeg12] vfm: libmpeg2 (MPEG-1 or 2 (libmpeg2))
==========================================================================
Forcing output FourCC to 44495658 [XVID].
audiocodec: framecopy (format=2000 chans=2 rate=48000 bits=16 B/s=28000 sample-1)
VDec: vo config request - 720 x 576 (preferred colorspace: Planar YV12)
VDec: using Planar YV12 as output csp (no 0)
Movie-Aspect is 1.78:1 - prescaling to correct movie aspect.
SwScaler: reducing / aligning filtersize 6 -> 8
SwScaler: reducing / aligning filtersize 6 -> 8
SwScaler: reducing / aligning filtersize 9 -> 8
SwScaler: reducing / aligning filtersize 9 -> 8
SwScaler: BICUBIC scaler, from yuv420p to yuv420p using MMX2
SwScaler: using 8-tap MMX scaler for horizontal luminance scaling
SwScaler: using 8-tap MMX scaler for horizontal chrominance scaling
SwScaler: using n-tap MMX scaler for vertical scaling (YV12 like)
SwScaler: 720x576 -> 704x304
videocodec: libavcodec (704x304 fourcc=44495658 [XVID])
[VE_LAVC] High quality encoding selected (non-realtime)!
Compiler did not align stack variables. Libavcodec has been miscompiled
and may be very slow or crash. This is not a bug in libavcodec,
but in the compiler. Do not report crashes to FFmpeg developers.
Writing header...2f ( 0%)  0.00fps Trem:   0min   0mb  A-V:0.004 [0:0]
ODML: Aspect information not (yet?) available or unspecified, not writing vprp header.
Writing header...
ODML: Aspect information not (yet?) available or unspecified, not writing vprp header.

1 duplicate frame(s)!
Pos:   0.8s     22f ( 0%)  0.00fps Trem:   0min   0mb  A-V:0.084 [0:224]
Skipping frame!
Pos:   2.2s     56f ( 0%) 45.34fps Trem:   0min   0mb  A-V:0.080 [759:224]
Skipping frame!
Pos:  49.0s   1230f ( 0%) 62.38fps Trem:  70min 1369mb  A-V:0.003 [859:224]]

Even later worden de statistieken aangepast:

Pos:3199.6s  79994f (36%) 58.03fps Trem:  40min 1074mb  A-V:-0.002 [798:224]

Het lijkt erop dat de eerste versie van AVI-bestand met audio en video over 40 minuten gereed zal zijn en 1074 MB groot zal zijn. Omdat het naar het NUL device gestuurd wordt zult u daar nog niets van merken. Maar houdt in ieder geval die ruimte vrij voor de derde ronde...

In het stukje A-V:-0.002 [798:224] onderaan geeft A-V:0.002 de audio (A) staat op video (V) verhouding van het op dit moment gecodeerde frame aan. Dus de positie 3199.6 seconden met het framenummer 79994 op 36% van de film. De bitrate van de audio is hier 798 kbits/s en die van de audio 224 kbits/s. Maar ik had 128 kbits/s opgegeven!

Als u dit vergelijkt met de MPEG-2 standaarden die Emperoar TV aanmaakt, ziet u dat er relatief veel bits per seconde naar de audio gaan. En die 224 kbits/s is typisch voor de AC3 decoding zoals mencoder eerder al aangaf:

Opening audio decoder: [liba52] AC3 decoding with liba52
No accelerated IMDCT transform found
Using MMX optimized resampler
AUDIO: 48000 Hz, 2 ch, s16le, 224.0 kbit/14.58% (ratio: 28000->192000)
Selected audio codec: [a52] afm: liba52 (AC3-liba52)

In de eerder besproken 1-pass rip wordt meteen de efficiënte MP3 codec van mp3lame gebruikt. Daardoor wordt de A-V verhouding gunstiger, waardoor het bestand aanzienlijk (986 versus 1074) kleiner wordt:

Pos:1703.8s  42600f (19%) 17.58fps Trem: 168min 986mb  A-V:0.021 [800:132]]

Maar goed: we zijn er nog niet. Op dit moment word de in de eerste ronde opgeslagen audio alleen maar naar device NULL gekopieerd. En de derde ronde van vpass=2 na de analyse van het nu gegeneerde logbestand moet nog komen. En dan zal blijken dat een 3 pass codering een kleiner AVI-bestand (747.018 K) van hogere beeldkwaliteit zal opleveren. Maar het geluid bleef AC3: 2.0 (stereo) 48000 Hz 224.0 kbit/s. Oftewel: lamemp3 werd niet door deze 3 pass RIP ondersteund.



Met mencoder een DVD analyseren

> Top <

Als u een DVD met mencoder in een groot venster opent, krijgt u meteen al heel veel informatie. Die informatie kunt u gebruiken om uw DVD-film beter af te spelen of in AVI formaat op te slaan.

There are 6 titles on this DVD.
There are 32 chapters in this DVD title.
There are 1 angles in this DVD title.

De DVD bevat 6 titels. Kijkwijzer en copyright filmpjes inbegrepen. U kunt met het DVD menu van vaste DVD speler 32 hoofdstukken selecteren. En er is een kijkhoek (angle).

DVD's met meerdere kijkhoeken hebben meerdere videostromen voor dezelfde scène. Ze kunnen dan dezelfde scènes onder een ander perspectief afspelen. Ik ben ze (sexfilms?) nog nooit tegengekomen.

Door de VOB's in Mplayer te openen beoordeelt u welke films u hebben wilt. Als bijvoorbeeld VTS_03_1.VOB t/m VTS_03_4.VOB de hoofdfilm vormen, dan geeft u aan mplayer of mencoder dvd://3 op.

Mencoder meldt vervolgens dat de DVD vijf geluidskanalen (audio channels) bevat die opgeslagen zijn als Dolby Digital of AC-3 (stereo):

audio stream: 0 format: ac3 (stereo) language: en aid: 128.
audio stream: 1 format: ac3 (stereo) language: de aid: 129.
audio stream: 2 format: ac3 (stereo) language: fr aid: 130.
audio stream: 3 format: ac3 (stereo) language: it aid: 131.
audio stream: 4 format: ac3 (stereo) language: es aid: 132.
number of audio channels on disk: 5.

Wilt u de DVD in de Engelse taal afspelen en of opslaan, dan kiest u voor -aid 128. Dit is de eerste audio ID (ze tellen vanaf 128) van de DVD.

Het geluid van DVD's kan als twee sporen in het MPEG-2 bestandssysteem worden opgeslagen (stereo). Maar de meeste DVD's slaan het 5.1 surround geluid op via de AC3 en minder vaak de DTS (Digital Theater System) codering.

Het hier gebruikte Dolby Digital (AC-3) 5.1 surround audio stromen bevatten per opname (audio channel, aid) op zich weer zes geluidskanalen (of sporen in tape recorder terminologie), om vijf gewone speakers te bedienen (rechtsvoor, voor, linksvoor, rechtsachter en linksachter) en een subwoofer voor de lage tonen.

AC3 slaat het surround geluid gecomprimeerd in frames op en de mencoder ripping methode -oac -lavc copy is de beste manier om dit 5.1 geluid zonder gegevensverlies of synchronisatiefouten in een AVI of MPEG bestand op te slaan. Maar het kost honderden megabytes.

Het omzetten van dit zes kanaals geluid naar het compactere 2 sporen MP3 stereo systeem kost meer rekenwerk en gaat ook met kwaliteitsverlies gepaard. Maar als u onder OS/2 niet over een 5.1 surround geluidssysteem beschikt, dan hoeft de conversie van mp3lame naar mp3 niet minder te klinken. Lame is beroemd vanwege zijn goed in het gehoor liggende codecs.

Vervolgens zien we een opgave van de DVD ondertitels (althans volgens het DVD-menu):

subtitle ( sid ): 0 language: en
subtitle ( sid ): 1 language: en
subtitle ( sid ): 2 language: de
subtitle ( sid ): 3 language: de
subtitle ( sid ): 4 language: fr
subtitle ( sid ): 5 language: it
subtitle ( sid ): 6 language: es
subtitle ( sid ): 7 language: nl
subtitle ( sid ): 8 language: sv
subtitle ( sid ): 9 language: fi
subtitle ( sid ): 10 language: no
subtitle ( sid ): 11 language: da
subtitle ( sid ): 12 language: pt
subtitle ( sid ): 13 language: pl
subtitle ( sid ): 14 language: en
subtitle ( sid ): 15 language: de
subtitle ( sid ): 16 language: fr
subtitle ( sid ): 17 language: it
subtitle ( sid ): 18 language: es
number of subtitles on disk: 19

De Nederlandse ondertiteling zou met -sid 7 (of zelfs met -slang nl) gevonden moeten worden. Er zijn twee Engelse ondertitelingen. De tweede (-aid 1) is voor doven. Maar wilt u de DVD met Nederlandse ondertiteling rippen, ga dan eerst na of -sid 7 werkt. Dat kunt u doen met Mplayer (j-toggle) of via een 5 minuten proefdraai met mencoder (-endpos 5:00).

Daarna wordt het MPEG bestandformaat geanalyseerd: hier gaat het om MPEG-PS bestandsformaat waarin video met MPEG2 compressie opgeslagen is. De bandbreedte is 9780,0 kbits/s of 9,551 Mbits/s (1,2 Mib/s).

success: format: 2  data: 0x0 - 0xb9b0800
MPEG-PS file format detected.
VIDEO:  MPEG2  720x576  (aspect 3)  25.000 fps  9780.0 kbps (1222.5 kbyte/s)
[V] filefmt:2  fourcc:0x10000002  size:720x576  fps:25.00  ftime:=0.0400

Het 720x576 (aspect 3) met 25 beelden/s is typisch voor een PAL DVD. De 720x576 betekent niet dat dit een 4:3 film is. Als u de het Mplayer logbestand ziet, dan blijkt het om 1024x576 breedbeeld te gaan. Dat zou tijdens de compressie naar 512x288 vertaald kunnen worden.

Starting playback...
VDec: vo config request - 720 x 576 (preferred colorspace: Planar YV12)
Trying filter chain: vo
VDec: using Planar YV12 as output csp (no 0)
Movie-Aspect is 1.78:1 - prescaling to correct movie aspect.
VO Config (720x576->1024x576,flags=0,'MPlayer',0x32315659)
VO: [kva] 720x576 => 1024x576 Planar YV12 

De gebruikte audiocodec op deze DVD is AC3 (48 kHz).

Opening audio decoder: [liba52] AC3 decoding with liba52
No accelerated IMDCT transform found
Using MMX optimized resampler
AUDIO: 48000 Hz, 2 ch, s16le, 256.0 kbit/16.67% (ratio: 32000->192000)
Selected audio codec: [a52] afm: liba52 (AC3-liba52)
==========================================================================
audiocodec: framecopy (format=2000 chans=2 rate=48000 bits=16 B/s=32000 sample-1)
Writing header...
ODML: Aspect information not (yet?) available or unspecified, not writing vprp header.
Writing header...
ODML: Aspect information not (yet?) available or unspecified, not writing vprp header.
Pos:   0.9s     22f ( 0%)  0.00fps Trem:   0min   0mb  A-V:0.084 [0:256]
Skipping frame!
Pos:   2.2s     55f ( 0%)  0.00fps Trem:   0min   0mb  A-V:0.080 [0:256]
Skipping frame!
Pos: 352.5s   8815f ( 6%) 431.81fps Trem:   4min 160mb  A-V:0.041 [0:256]]

Met een binaire viewer een DVD analyseren

> Top <

Met de binaire viewer van FM/2 kunt u elementaire informatie achterhalen over de DVD. Dit kan nuttig zijn als Mplayer en mencoder het IFO bestand niet kunnen interpreteren. De VOB bestanden zijn dan meestal nog wel te openen, maar maar wat mencoder en mplayer missen is de informatie uit het IFO bestand.





Extra mencoder opties opgeven

> Top <

Opties voor audio

> Top <

Mencoder kan op verschillende manieren audio coderen. Dit geeft u aan met de optie -oac (van Output Audio Codec). Met de opdracht mencoder -oac help kunt u nagaan welke codec bibliotheken ondersteund worden.

Deze is van Paul Smedley (Mencoder SVN build)

I:\os2bin\mmos2\mencoder>mencoder -oac help
MEncoder dev-SVN-rUNKNOWN-3.3.5 (C) 2000-2006 MPlayer Team
CPU: Intel(R) Celeron(R) CPU 3.20GHz (Family: 15, Model: 4, Stepping: 9)
CPUflags: Type: 15 MMX: 1 MMX2: 1 3DNow: 0 3DNow2: 0 SSE: 0 SSE2: 0
Compiled with runtime CPU detection.

Available codecs:
   copy     - frame copy, without re-encoding (useful for AC3)
   pcm      - uncompressed PCM audio
   mp3lame  - cbr/abr/vbr MP3 using libmp3lame
   lavc     - FFmpeg audio encoder (MP2, AC3, ...)

Mp3lame wordt niet in alle versies ondersteund. Dit is de audio ondersteuning van mplayer-dev-svn-r25520-os2-3.3.5.zip.

[F:\]mencoder -oac help
MEncoder dev-SVN-r25520-OS2-3.3.5 (C) 2000-2007 MPlayer Team
CPU: Intel(R) Celeron(R) CPU 3.20GHz (Family: 15, Model: 4, Stepping: 9)
CPUflags: Type: 15 MMX: 1 MMX2: 1 3DNow: 0 3DNow2: 0 SSE: 0 SSE2: 0
Compiled with runtime CPU detection.

Available codecs:
   copy     - frame copy, without re-encoding (useful for AC3)
   pcm      - uncompressed PCM audio
   lavc     - FFmpeg audio encoder (MP2, AC3, ...)

En dit is de presentatie van http://hobbes.nmsu.edu/pub/incoming/mplayer-k-dev-svn-r26012-mybuild-20080822.zip

[F:\]mencoder -oac help
MEncoder dev-SVN-r26012-OS2-3.3.5 (C) 2000-2008 MPlayer Team
CPU: Intel(R) Celeron(R) CPU 3.20GHz (Family: 15, Model: 4, Stepping: 9)
CPUflags: Type: 15 MMX: 1 MMX2: 1 3DNow: 0 3DNow2: 0 SSE: 1 SSE2: 1
Compiled with runtime CPU detection.
Available codecs:
   copy     - frame copy, without re-encoding (useful for AC3)
   pcm      - uncompressed PCM audio
   mp3lame  - cbr/abr/vbr MP3 using libmp3lame
   lavc     - FFmpeg audio encoder (MP2, AC3, ...)
   faac     - FAAC AAC audio encoder

Op zich heeft lavc veel mogelijkheden:

lavc (-lavcopts)
Many libavcodec (lavc for short) options are tersely documented.  Read the source for full details.
    EXAMPLE: vcodec=msmpeg4:vbitrate=1800:vhq:keyint=250
acodec=<value> audio codec (default: mp2)
     mp2           MPEG Layer 2
     mp3           MPEG Layer 3
     ac3           AC3
     adpcm_ima_wav IMA Adaptive PCM (4bits per sample, 4:1 compression)
     sonic         Experimental lossy/lossless codec

Maar in sommige ports ontbreekt in de praktijk de mp3 ondersteuning. En dat is jammer, omdat mp3 de audio met veel lagere bitrates (en dus met minder schijfruimte gebruik) coderen kan. Bekende bitrate waarden zijn 192, 224 en 384 kbits/s voor MPEG-1 Audio Layer II audio codec (MP2), 96, 128 of 196 kbits/s voor MPEG-1 Audio Layer III audio codec (MP3) en 196 (stereo) t/m 448 kbits/s voor Digitale Dolby (AC3). Op een DVD ligt de bitrate van AC3 ligt tussen de 64 en 448 kbps. De lavc default is 224 kbits/s mp2.



EXAMPLES OF MENCODER USAGE
       Encode DVD title #2, only selected chapters:
       mencoder dvd://2 -chapter 10-15 -o title2.avi -oac copy -ovc lavc -lavcopts vcodec=mpeg4

       Encode DVD title #2, resizing to 640x480:
       mencoder dvd://2 -vf scale=640:480 -o title2.avi -oac copy -ovc lavc -lavcopts vcodec=mpeg4

       Encode DVD title #2, resizing to 512xHHH (keep aspect ratio):
       mencoder dvd://2 -vf scale -zoom -xy 512 -o title2.avi -oac copy -ovc lavc -lavcopts vcodec=mpeg4

       The same, but with bitrate set to 1800kbit and optimized macroblocks:
       mencoder dvd://2 -o title2.avi -oac copy -ovc lavc -lavcopts vcodec=mpeg4:mbd=1:vbitrate=1800

       The same, but with MJPEG compression:
       mencoder dvd://2 -o title2.avi -oac copy -ovc lavc -lavcopts vcodec=mjpeg:mbd=1:vbitrate=1800

       Encode all *.jpg files in the current directory:
       mencoder "mf://*.jpg" -mf fps=25 -o output.avi -ovc lavc -lavcopts vcodec=mpeg4

       Encode from a tuner (specify a format with -vf format):
       mencoder -tv driver=v4l:width=640:height=480 tv:// -o tv.avi -ovc raw

       Encode from a pipe:
       rar p test-SVCD.rar | mencoder -ovc lavc -lavcopts vcodec=mpeg4:vbitrate=800 -ofps 24 -





Optie

Uitleg

-oac copy

De -oac copy methode kopieert van ieder frame van het invoerbestand de zich hierin bevindende audio naar het gelijkluidende frame van het uitvoerbestand zonder ze verder te bewerken.

De frame copy methode is geschikt om al goed gecomprimeerde digitale audiosignalen (bijv. AC3 stereo of 5.1 surround van een DVD of digitale viderorecorder) zonder gegevensverlies in de frames van het AVI bestand te zetten.

De audiokenmerken van de bron (bijv. een hoge bitrate) blijven bewaard. Hiervoor zal de A-V verhouding in het AVI-bestand wel scheef groeien (prima AC3 audio, maar matige JPG video). Maar een voordeel van de frame copy methode is dat de timing van het geluid altijd perfect blijft.

-oac pcm








PCM staat voor pulse-code modulation, de oudste manier om analoge audio digitaal op te slaan. Iedere geluidssignaal kan als een golf weergeven worden. Hoog frequente tonen hebben korte golflengtes en laag freqente tonen hebben langere goflengtes. Lage tonen met boventonen hebben weer korte golfjes op de golf van de grondtoon.

Het voor de mens hoorbare gebied heeft een frequentie van 50-16.000 Hz. De voor de spraak belangrijkste tonen liggen tussen de 500 en 4000 Hz. Rond de 5000 Hz (ruis en geknisper) horen we het scherpt (tenzij we oud en/of lawaaidoof worden).

Als op frequente tijdstippen (de sample rate) een meting van de hoogte van een golf gemaakt wordt, kan muziek digitaal worden vastgelegd. Typische sample rates zijn 44.1 KHz (CD) en 48 KHz (DVD), waarmee ook hoogfrequente (boven)tonen "genoteerd" kunnen worden.

Bij 44,1 KHz PCM wordt de grafiek van een toon van 2 KHz dus door 44,1/4=22 beeldpunten (samples) weergeven. Deze sample waarden worden als 16 of 20 bits getallen opgeven. Daaruit kan later door een digitaal naar analoog converter (DAC) chip een hierop gelijkend analoog signaal worden gereconstrueerd.

De eenvoudige digitale PCM geluidscodering kan gemakkelijk als een stroom van sample waarden worden opgeslagen in een of via pipes en andere seriële transmissiewegen worden overgebracht.

PCM stromen worden typisch opgeslagen in WAV-bestanden. Een simpele batch om een real media audiobestand in WAV (PVC) op te slaan is:

rem RM2WAV.CMD
rem %1 is het rm-bestand
mplayer -ao pcm %1


De hoogste frequentie die theoretisch nog te coderen valt staat bekend als de Nyquist frequency. Deze is 22050 Hz bij een sampling rate van 44100 Hz. Maar dan gaat het wel om een zuivere toon. Kortom audiofielen die ook de eigenheid (lees de boventonen) van iedere de toonladder van iedere stem of muziekinstrument waarderen, kunnen om die reden analoge buizenversterkers en platenspelers nog wel waarderen. Want de digitale weergave van zowel audio als video blijft in essentie geblokt.

Bitrates

Het nadeel van PCM is dat die sample waarden aldoor moeten worden doorgegeven. Dus ook als er niets verandert of als er stilte heerst. Vandaar dat 2 kanaals PCM stereo een veel hogere bitrate heeft dan het 6 kanaals Dolby Digital (AC3). Zie de bij de verschillende audio opslagmethoden behorende Bitrates hieronder:

PCM: 2 kanalen 16 bits 44,1 kHz 1411 kb/s (geen compressie 1:1)

LPCM: 2 kanalen 16 bits 48 kHz 1536 kb/s (geen compressie 0:0)

LPCM: 2 kanalen 20 bits 48 kHz 1920 kb/s (geen compressie 1:1)

AC3: 6 kanalen 20 bits 44,1 kHz 384 kb/s (compressie 9:1)

AC3: 6 kanalen 20 bits 44,1 kHz 448 kb/s (compressie 8:1)

DTS: 6 kanalen 20 bits 48 kHz 1509 kb/s (compressie 4:1)

DTS: 6 kanalen 20 bits 48 kHz 754 kb/s (compressie 8:1)

Vanwege de benodigde bandbreedte wordt PCM in de praktijk alleen nog maar gebruikt op blue-ray discs en niet op DVD's. En het coderen in PCM

-oac mp3lame

De mp3lame bibliotheek is fameus vanwege zijn implementatie MPEG-1 Audio Layer 3 audio codec. Het rippen van een audio CD (700 MB) tot ongecomprimeerde PCM WAV en het daarna hercoderen met een recente lame bibliotheek tot wel 10 maal kleinere MP3 bestanden is een koud kunstje voor leechmp3.

De door mp3lame gebruikte geniale akoestische (MP3) compressie techniek van Karlheinz Brandenburg filtert (negeert bij voorkeur) de vele door de microfoon maar niet door het menselijk gehoor opgemerkte geluidskenmerken en slaat alleen de voor ons hoorbare rest op. Daarnaast codeert MP3 het aan beide oren gehoorde geluid als het even kan eenmalig op (mono), waardoor de benodigde bitrate van een deel van het hoorbare geluid weer gehalveerd kan worden.

De met een bitrate van 128 kbit/s op de vaste schijf opgeslagen populaire muziek MP3 bestanden zijn al gauw tien maal compacter dan hun PCM origineel op de CD, maar klinken nagenoeg even goed. Met 196 kbit/s MP3 geldt dit zelfs voor de dynamisch (qua geluidsterkte) en in muzikaal palet (de rijkdom aan overtonen) rijkelijk geschakeerde klassieke muziek van een symfonieorkest in een optimale akoestische ruimte.

Het blijkt dat een slimme MP3 codering hier toch wel de voor ons beperkte aandachtsvermogen waarneembare essentie kan weergeven. Want we horen weliswaar veel, maar het merendeel heeft niet onze aandacht. Het meeste is al weer verleden tijd als we besluiten ons erop willen concentreren. Tijdens een gesprek zeggen we: Herhaal dat nog eens, maar tijdens een live concert wachten we op het refrein. En thuis draaien we die CD track opnieuw.

-oac mp3lame -lameopts br=94

Bekende MP3 bitrates zijn 32 (spraak), 64 (spraak, pop), 94 (pop, jazz, filmmuziek), 128 (pop, jazz, klassiek) en 192, 256 en 320 kbit/s (klassiek). Wat is de beste keus?

Voor de meeste genres geldt dat muziekliefhebbers vanaf 128 kbits/s het kwaliteitsverlies ten opzichte van het origineel niet meer zullen onderkenen. Voor een klassieke muziekfilm zou u nog 196 kbits/s kunnen overwegen. Maar sneller dan 196 kbits/s coderen levert zelfs bij een symfonieorkest zelden hoorbaar kwaliteitsvoordeel op.

Als u een standaard DVD film (met spraak, muziek, donder en bliksem) beneden de 1 Gig of op CD formaat wilt houden is 96 kbits/s voor een gewone film en 128 kbits/s voor een echte muziekfilm geen slechte keus. De gerestaureerde audio van een oude Charlie Chaplin film kunt u gerust met 64 kbits/s coderen.

De bespaarde bandbreedte kunt beter voor videocodering gebruiken, want daar is het kwaliteitsverlies t.g.v. de niet tien maar duizenden malen verminderde bandbreedte altijd zichtbaar. En dit kwaliteitsverlies per bespaarde bits/s zal meer zichtbaar zijn naarmate de videocodec steviger en slimmer comprimeert. Maar juist dan (bij een forse MPEG-4 compressie) kan een iets grotere bandbreedte benut worden om veel meer (want gecomprimeerd) detail weer te geven.

Kortom het kwaliteitsverlies in de audioweergave van een standaard DVD met 196 kbits/s in plaats van 96 kbits/s is vaak nauwelijks hoorbaar, maar een zichtbaar verschil tussen de kwaliteit van een met een bitrate van 500 of 600 kbits/s opgenomen film is er zeker. En dat zal door de slimme compressietechnieken aanzienlijk meer zijn dan 20 procent.

-oac mp3lame -lameopts br=128:cbr:vol=6

Een audiocodering via de mp3lame bibliotheek (Mencoder SVN build - updated 20070120). Het MP3 geluid in AVI bestanden wordt meestal met een constante bitrate (cbr, hier 128 kbits/s) gecodeerd. Met een variabele bitrate (vbr) ziet u te vaak synchronisatieproblemen. Dit is een beperking van het AVI bestandsformaat. Het kan een reden zijn om in een ander videoformaat (containertype) te coderen. Zie: Zie 6.1. Video formats.

Het coderen met variabele bitrate heeft zeker voordelen bij losse MP3-bestanden. Tenminste als uw MP3 speler dit ondersteund. De optie vol=6 zet het geluid standaard wat harder (audio gain 0-9) .

Een voor de mp3lame bibliotheek gecodeerde mencoder kan prima ingezet worden als eerste stap in in een 3-pass rip.

-oac lavc -lavcopts acodec=ac3:abitrate=196

Een audiocodering via de lavc bibliotheek (-oac lavc). De codec is ac3 en de audio bitrate is 196 kbits/s (de aanbevolen waarde voor AC3 stereo). De default lavc audio bitrate is 224 kbits/s. Als er iets misgaat met de audiocodering in 2 en 3 pass rips ziet u die waarde vaak terug. Verder zag ik wel ook wel de dubbele abitrate waarde (256 kbits/s AC3) als ik met 128 kbits/s dacht te coderen.

Deze -oac lavc kan gebruikt worden in een 2-pass rip.

-oac lavc -lavcopts acodec=mp3:abitrate=128

Een audiocodering via de lavc bibliotheek (-oac lavc) waarbij mp3lame wordt aangeroepen. Dit is niet standaard. Mencoder moet hier apart voor gecompileerd worden. De codec is mp3 en de bitrate is 128 kbits/s. Deze kan gebruikt worden in een 2 of 3-pass rip.


Opties voor video

> Top <

De opties worden niet alfabetisch besproken. Ik probeer de in mijn videoconversie praktijk meest basale (logisch noodzakelijke) opties als eerste te bespreken.

Alle opties zijn terug te vinden met het commando "man mplayer" , waarbij onder het utility less de beeldschermopmaak in hypertext verzorgt. U kunt in less met / [zoekwoord] en n(ext) zoeken naar de betekenis van de opties. Hier een daar citeer zal ik uit de mplayer manual citeren.

Optie

Uitleg

-oac lavc -lavcopts vcodec=mpeg4:vbitrate=1200

Met de instelling -oac lavc geeft u aan dat u de video met de libavcodec bibliotheek wilt coderen. De instelling vcodec=mpeg4 is de mencoder standaard. Deze standaard is compatibel met de DivX 4/5 versies van MPEG-4.

Als uw videospeler moeite heeft met FMP4 kunt u deze MPEG-4 ook -ffourcc XVID proberen. Zie hieronder. Minder mooi (want minder efficiënt), maar soms noodzakelijk is om met -lavcopts vcodec=msmpeg4 een bestand volgens de v3 MPEG-4 variant van MS aan te maken (DivX3).

Zie: 14.3.1. libavcodec's video codecs.

vbitrate=1200

Standaard codeert mencoder -oac lavc -lavcopts vcodec=mpeg4 de video met een bitrate van 800 kbits/s. Tekenfilms en oude stomme films kunt u met een lagere bitrate (600 kbits/s) coderen, maar voor een moderne actiefilm is 1200 meer geschikt. Om dat aan mencoder door te geven voegt u de optie vbitrate=1200 eraan toe.

Met -lavcopts vcodec=mpeg4:vbitrate=1200 wordt dus een met DivX 4/5 compatibel MPEG4 bestand met een video bit rate (VBR) van 1200 kbits/s gecodeerd.

Let op het gebruik van de dubbele punt.

-ffourcc XVID

-ffourcc DIVX

-ffourcc DX50

De MPEG-4 bestanden die mencoder met de libavcodec bibliotheek aanmaakt krijgen standaard het label FMP4 (Fast MP4) label mee. In het verleden werd hiervoor de DIVX tag gebruikt, omdat de niet van Microsoft afkomstige AVI bestanden slechts door DivX spelers ingelezen werden. Inmiddels weten de meeste software mediaspelers wel met FMP4 om te gaan. Maar dat hoeft niet voor mobiele mediaspelers met Windows CE te gelden.

Via de mencoder optie -ffourcc [CODEC] kunt u de uitvoerbestanden een andere tag geven. Dit kan handig zijn als een vaak hardware mediaspeler de FMP4 tag niet herkend, maar wel met XVID, DIVX (voor DivX4) of DX50 om kan gaan.

Zo speelde de Conceptronics CMED3PLUS USB disk en Media Speler de met libavcodec aangemaakte FMP4 MPEG-4 bestanden slechts af als ze als ze met -ffourcc XVID als XVID getagt waren. XVID heeft de voorkeur vanwege de brede ondersteuning (open source) en omdat de XVID compressietechniek superieur is aan die van DivX4.

In theorie kan door het gebruik van de XVID tag wat mencoder FMP4 kwaliteit verloren gaan, maar dat is doorgaans de prijs die u betaalt voor compatibiliteit. Bedenk echter dat compatibiliteit (de mogelijkheid om iets elders af te kunnen spelen) ook een kwaliteit is. En wel een van de meest essentiële.

NB Bij het openen van een met -ffourcc XVID gecodeerde AVI, zag ik dat mplayer ffmpeg gebruikte: Selected video codec: [ffodivx] vfm: ffmpeg (FFmpeg MPEG-4).

aspect=2

De aspect ratio van een film is de verhouding tussen breedte (x, width) en hoogte (y, height) van het venster waarin de film weergeven wordt. Gangbare x:y verhoudingen zijn 4:3 of 1.33:1 (SVCD, klassieke films en NTSC TV), 16:9 of 1,778:1 (DVD, breedbeeld TV), 1.85:1 (Academy Flat) en de 2.35:1 (47:20) aspect ratio van zogeheten Anamorphic Scope bioscoopfilms van na de jaren 50.

De CinemaScope en Panavision films die niet in het PM of televisie venster passen worden met zwarte banden weergegeven.

aspect=<0-3>
Specify input aspect ratio:
0: 1:1
1: 4:3 (default)
2: 16:9
3: 2.21:1

Met de mplayer optie -monitoraspect kunt u een verkeerd geschaalde film aanpassen.

-monitoraspect <ratio> (also see -aspect)
Set the aspect ratio of your monitor or TV screen.

EXAMPLE:
-monitoraspect 4:3 or 1.3333
-monitoraspect 16:9 or 1.7777

-vf scale=704:304

vf scale=768:432

-vf scale=352:-2

vf scale=512:288

De videofilter functie scale (x:y) geeft de grootte van ieder frame aan in pixels. Typische x en y waarden zijn meervouden van 16, want dit vergemakkelijkt het coderen van de frames in het lossy JPG formaat.

Door de verkleining van de beeldschermgrootte, zoals bij Uitzending gemist (320:180 =20*16:11.25*16) wordt toegepast, is minder bandbreedte nodig, maar dit gaat natuurlijk te koste van de beeldkwaliteit, wat u ziet zodra u het beeld gaat vergroten.

Een 768:576 (48*16:36*16) klassiek 4:3 televisiebeeld kunt u naar 704:528 (44*16:33*16), 640:480 (40*16:30*16), 576:432 (36*16, 27*16). 512:384 (32*16,24*16), 448:336 (28*16,21*16), 384:288 (24*16:18*16) of 320:240 (20*16:15*16) verkleinen. Dit laatste formaat wordt door MP3 mediaspelers ondersteund.

Een 16:9 DVD breedband televisiefilm die door MPlayer als 1024:576 (64*16:36*16) pixels weergeven wordt, kan bijvoorbeeld als 56% is 768:432 (48*16:27*16) geschaald worden of als 25% hiervan oftewel 512:288 (32*16:18*16). Voor mediaspelers kunt u nog als 320:180 coderen.

De coderingen van breedbeeld bioscoopfilms met het 235:100 aspect worden meestal als 704:304 (44*16:19*16) pixels geschaald. Maar 752:320 (47*16:20*16) zou een meer voor de hand liggende ratio zijn.

Welke waarde moet u kiezen? Dat hangt vooral van de gewenste video bitrate af. Het heeft geen zin voor 768:432 te coderen met een videobitrate van 800 kbs. Dit vereist een enorme compressie. Het coderen duurt lang en het real time decoderen stelt te hoge eisen aan de hardware. Een mediaspeler met een minder snelle processor zal de benodigde pixels nooit kunnen produceren. En dan ziet u of teveel blokjes tijdens de beweeglijke scènes in het beeld (Mplayer onder OS/2) of de mediaspeler loopt vast (CMED3PLUS).




Als u ze met MPlayer vanaf een DVD (16:9) speler afspeelt ziet u ze in een 1024:576 (de scale) PM venster met zwarte banden. Dezelfde zwarte banden ziet u ook als u een 16:9 televisiebeeld afspeelt op een 4:3 televisievenster (zie hierboven).

-vf scale=384:288,crop=720:544:0:18




Stel ik neem het journaal met EmperoarTV op als MPEG2 Full D1 6.8 MBit/s (720x576). MPlayer zal het MPEG bestand in een 768x576 PM venster afbeelden. Dit kunt u controleren door er met PMView een snapshot van het Window interior te maken.

Maar als u goed kijkt naar bovenstaande afbeelding (hier verkleint tot de scale 384:288 pixels), ziet u dat boven en onder in het beeld brede banden bestaan en kunt u soms ook aan de linker en rechter kant een dun zwart randje zult zien waar niets gebeurt. Kortom de televisiefilm past niet helemaal in het 4:3 PM klassieke televisievenster van EmperoarTV.

Het is ongewenst om dat zwarte deel met flikkerde randen te coderen en op te slaan. Hiervoor gebruiken we de opdracht -vf scale=x:y,crop=x':y':x'':y''. De syntaxis:

crop[=w:h:x:y]
Crops the given part of the image and discards the rest. Useful to remove black bands from widescreen movies.
w,h Cropped width and height, defaults to original width and height.
x,y Position of the cropped picture, defaults to center.

Crop geeft de coördinaten aan van een deel van het vensterinhoud dat niet echt gebruikt wordt.

De crop van een VOB of een ander MPG bestand kan achterhaalt worden met de cropdetect functie van Mplayer.

Sleep het VOB of andere film naar een batch met: mplayer %1 -vf cropdetect. Na een tijdje ziet u zoiets als:

[CROP] Crop area: X: 0..719 Y: 71..499 (-vf crop=720:416:0:78).

Als cropdetect 720:416:0:78 aangeeft zal het actieve deel van het 768x576 scherm door de niet actieve banden maar 768x(576-2*78) = 768x420 zijn.

De waarden tussen haakjes kunt u meestal letterlijk overnemen. Controleer wel dat de eerste twee waarden meervouden van 16 zijn. Dit is een vereiste voor alle MPEG compressie. Pas de waarden eventueel in de meest nabij liggende veelvouden van 16 aan.

Verder kan het geen kwaad te controlerenof de ondertiteling niet afgesneden wordt. gebruik hiervoor:

mplayer film.vob -vf rectangle=720:416:0:78

-scale andere_opties,harddup

De harddup optie van -scale verhindert dat een dubbel frame overgeslagen wordt:

1 duplicate frame(s)!
Pos: 0.8s 22f ( 0%) 0.00fps Trem: 0min 0mb A-V:0.084 [0:127]
Skipping frame!
Pos: 1.2s 33f ( 0%) 0.00fps Trem: 0min 0mb A-V:0.082 [36:128]
Skipping frame!
Pos:5456.4s 136413f (74%) 44.67fps Trem: 17min 1266mb A-V:0.063 [1314:128]]

Uit de manual:

Only useful with MEncoder. If harddup is used when encoding, it will force duplicate frames to be encoded in the output. This uses slightly more space, but is necessary for output to MPEG files or if you plan to demux and remux the video stream after encoding. Should be placed at or near the end of the filter chain unless you have a good reason to do otherwise.

-endpos 5:00

-endpos 01.30:00

-endpos 10 mb

Met -endpos 5:00 zullen slechts de eerste 5 minuten en 0 seconden van een videotrack (vaak een paar GBs) gecodeerd worden. Tenminste als u geen -ss (startseconde, zie verderop) gebruikt hebt. Deze optie is handig voor testdoeleinden. Als de eerste 10 MB van de conversie naar wens verlopen zal de rest ook wel goed verlopen. Maar als het fout gaat (bijv. door een verkeerd ingestelde -aid) dan is is het handig dat u niet eerste hoeft te wachten totdat het de hele film af is.

Gelukkig kunt u een mencoder stream al tijdens het rippen openen. Maar de Mplayer zoekfuncties zullen pas werken als het bestand volledig gecodeerd en geïndexeerd is. Anders is het net als bij een nog niet volledig gedownload internetbestand: Stream not seekable... Met de optie -idx kunt u dit misschien (werkt niet altijd) voorkomen.

Variaties zijn -endpos 01.30:00 om anderhalf uur en -endpos 50 mb om de eerste 10 MiB te coderen. De volledige syntax is: -endpos [[hh:]mm:]ss[.ms]|size[b|kb|mb]

-ss [hh:mm:ss] (also see -sb)

De start op seconde opdracht mencoder -ss 00:00:15 etc slaat de eerste 15 seconden (bijv. het voor een AVI-bestand nutteloze DVD menu of een logo) over. Het aantal seconden weet u door de film met mplayer af te spelen en te pauzeren (p-toets) op het moment u beginnen wilt. Achter Pos: in het Mplayer venster staat het aantal seconden dat de film liep.

Pos: 270.3s 6761f ( 3%) 18.37fps Trem: 156min 1616mb A-V:0.065 [1764:128]]

De -sb <byte position> zoekt

Seek to byte position. Useful for playback from CD-ROM images or VOB files with junk at the beginning.

-ovc lavc -lavcopts vcodec=msmpeg4:vbitrate=1800:vhq

Dit is een video output opdracht voor een avi-bestand dat met MS platformen (DivX3) compatibel is. Overigens is de mpeg4 codec van libavcodec compacter dan de msmpeg4 variant.

De gebruikte videocodec (vcodec) uit libavcodec (lavc) is msmpeg4, de pre-standard MPEG-4 variant van Microsoft, AVI v3 (AKA DivX3). Zie 14.3.1. libavcodec's video codecs.

De video bitrate is met 1800 bits/s vrij hoog ingesteld. De meeste DivX3 rippers op het internet zullen voor 600-900 kiezen om bestanden te krijgen die op een CD passen.

vhq slaat op het motion search algorithm, dat zoals de naam al suggereert anticiperend op zoek gaat naar verandering om tijdig de manier van coderen aan te kunnen passen.

Vhq zonder opties is hetzelfde als vhq=1.

vhq=<0-4>
The motion search algorithm is based on a search in the usual color domain and tries to find a motion vector that minimizes the difference between the reference frame and the encoded frame. With this setting activated, XviD will also use the frequency domain (DCT) to search for a motion vector that minimizes not only the spatial difference but also the encoding length of the block. Fastest to slowest:
0 off
1 mode decision (inter/intra MB) (default)
2 limited search
3 medium search
4 wide search


-sws 2

-sws 2 is een mencoder kwaliteitsoptie die van nut kan zijn op mediaspelers die de onder Windows gebruikelijke hardware acceleratie voor het scaleren (het groter en kleiner maken van het 2D venster) missen.

Aangezien OS/2 gebruikers niet weten wat hun 2D videoacceleratie feitelijk inhoudt, raad ik u aan om hier voor de op mplayer gebaseerde software goed ondersteunde -sws 2 (good quality) optie te kiezen.

-sws <software scaler type> (see -vop scale option too)
This option sets the quality (and speed, respectively) of the software scaler, with the -zoom option. For example with x11 or other outputs which lack hardware acceleration. Possible settings are:

NOTE: For -sws 2 and 7, the sharpness can be set with the scaling parameter (p) of -vop scale (0 (soft) - 100 (sharp)), for -sws 9, it specifies the filter length (1 - 10).

0 fast bilinear (default)
1 bilinear
2 bicubic (good quality)
3 experimental
4 nearest neighbour (bad quality)
5 area
6 luma bicubic / chroma bilinear
7 gauss
8 sincR
9 lanczos
10 bicubic spline

-ovc lavc -lavcopts vcodec=mpeg4:mbd=2:trell:v4mv:turbo

De gebruikte videocodec (vcodec) uit libavcodec (lavc) is mpeg4, een met de ISO standaard MPEG-4 compatibele codec die ook met DivX 4-5 en Xvid compatibel is.

Maar het kan zijn dat uw mediaspeler dit niet weet. En in de war raakt van het label FMP4 van mencoder. Maak dan gebruik van de optie -ffourcc XVID om het breder ondersteunde XVID te simuleren.

De lavc opties mbd=2:trell:v4mv leveren een betere kwaliteit op ("HQ MPEG4 encoding"). Het coderen kost hierdoor meer tijd. Zie man mplayer.

mbd=<0-2>
Macroblock decision algorithm (high quality mode), encode each macro block in all modes and choose the best. This is slow but results in better quality and file size.
0 Use mbcmp (default).
1 Select the MB mode which needs the fewest bits (=vhq).
2 Select the MB mode which has the best rate distortion.
trell
Trellis searched quantization. This will find the optimal encoding for each 8x8 block. Trellis searched quantization is quite simply an optimal quantization in the PSNR versus bitrate sense (Assuming that there would be no rounding errors in troduced by the IDCT, which is obviously not the case.). It simply finds a block for the minimum of error and lambda*bits.

lambda: quantization parameter (QP) dependent constant
bits : amount of bits needed to encode the block
error : sum of squared errors of the quantization

v4mv
Allow 4 motion vectors per macroblock (slightly better quality). Works better if used with mbd>0.

Turbo is echter weer een snelheidsoptie.

turbo (two pass only)
Dramatically speeds up pass one using faster algorithms and disabling CPU-intensive options. This will probably reduce global PSNR a little bit (around 0.01dB) and change individual frame type and PSNR a little bit more (up to 0.03dB).

-of mpeg

Mencoder is in het MPEG-4 AVI container formaat gespecialiseerd. Ffmpeg is meer in het MPEG formaat thuis. Maar u kunt met mencoder ook naar het MPEG-2 (DVD) of MPEG-1 (XVideo CD) formaat coderen. Het gaat echter wel om beta code.

-of <format> (BETA CODE!)
Encode to the specified container format (default: AVI).
NOTE: Use -of help to get a list of available container formats.

EXAMPLE:
-of avi
Encode to AVI.
-of mpeg
Encode to MPEG (also see -mpegopts).
-of lavf
Encode with libavformat muxers (also see -lavfopts).
-of rawvideo
raw video stream (no muxing - one video stream only)
-of rawaudio
raw audio stream (no muxing - one audio stream only)

MPEG muxer (-mpegopts)
The MPEG muxer can generate 5 types of streams, each of which has reasonable default pa-
rameters that the user can override. Generally, when generating MPEG files, it is advis-
able to disable MEncoder's frame-skip code (see -noskip, -mc as well as the harddup and
softskip video filters).

EXAMPLE:
format=mpeg2:tsaf:vbitrate=8000

format=<mpeg1 | mpeg2 | xvcd | xsvcd | dvd>
stream format (default: mpeg2)





Mencoder.conf

> Top <

Succesvolle mencoder opties die u altijd wilt gebruiken kunt u in %HOME%\.mplayer\mencoder.conf kwijt. Maar bedenk dat ze dan ook gebruikt kunnen worden zonder dat u het weet. Aangezien sommige instellingen elkaar weer tegenwerken kan en onoverzichtelijke situatie ontstaan. Om die reden laat ik mencoder.conf liever leeg en maak ik liever sjablonen aan van succesvolle scripts.

#mencoder.conf

aid=128
sid=0
slang=nl

ovc=lavc=1

# oac=lavc=1
oac=mp3lame=1

# lameopts=q=3:acodec=mp3:cbitrate=96
lameopts=q=3:br=96:vol=6

# lavcopts=vcodec=mpeg4:vbitrate=800:mbd=2:acodec=mp3:cbitrate=96:autoaspect
lavcopts=vcodec=mpeg4:vbitrate=800:mbd=2

De opties die via de opdrachtregel aan mencoder doorgegeven worden, hebben de voorrang boven instellingen van mencoder.conf. Als u via de opdrachtregel voor een coversie naar avi of mp4 expliciet de standaardinstelling lavcopts vcodec=mpeg4 opgeeft, worden de mencoder.conf instellingen vbitrate=800:mbd=2 niet meer doorgegeven.

Ondertitelingsbestanden aanmaken

> Top <

De ondertiteling van een DVD wordt als een stroom van bitmaps in het VOB bestand gecodeerd. Op het scherm ziet u fonts verschijnen, die uw zintuigen als letters en woordenstromen interpreteren. Maar in een VOB bestand zult u de waargenomen teksten nooit als tekststrings terugvinden. Want ze zijn als bitmaps gecodeerd.

Bij het hercoderen van een 1024x576 pixels DVD formaat film naar een kleinere schaal (bijv. 512 x 288) ontstaat daarom het probleem, dat als u de in de film ingebedde bitmapfonts proportioneel verkleint, ze vaak niet meer prettig leesbaar zijn.Het gaat immers om bitmap fonts, die niet ontworpen zijn om te scaleren. De letters worden te klein en flikkerend weergeven. Postscript fonts en TrueType fonts kunnen wel stabiel en op maat worden weergeven, maar dan moet u wel over een ondertitelingsbestand met de juiste tekst en index beschikken.

U kunt zelf zien hoe dit gegevensverlies werkt door een snapshot van het woord bitmap fonts te maken, en deze op te slaan in een sterk verkleind ongecomprimeerd formaat (dus een bitmap met een lagere resolutie). Vervolgens vergroot u het beeld weer. Het beeld blijkt erg blokkerig te zijn. Als deze blokpatronen zich 25 keer per seconden in een lossy codering op het scherm herhalen, dan ziet u op uw televisiescherm flikkerige teksten die uw ogen vermoeien. Om die reden moeten ook de zwarte buitenranden van het beeldscherm via het crop filter weggewerkt (afgesneden) worden.

Bij mijn als 384:288 (4:3) en 512:288 (16:9) XVID AVI hercoderingen van 4:3 TV en 9:6 DVD opnames viel het in de praktijk nog wel mee, maar vooral bij de als 704:304 geschaalde 235:100 breedbeeld bioscoopfilms zag ik dat de bitmap fonts klein en flikkerig werden weergeven door de Conceptronic CMEDPLUS mediaspeler op een 4:3 PAL televisieapparaat. De TViX HD M-6500A mediaspeler deed het beter.

Maar onder Mplayer onder OS/2 waren deze hercoderingen nog redelijk goed leesbaar. Dit verschil in weergavekwaliteit ontstaat door meerdere factoren.

Om te beginnen beschikt de CMED3PLUS mediaspeler niet over de voor dit karwei optimale codecs en processorkracht. MPlayer onder OS/2 gebruikt bij het afspelen de door de mencoder en zijn scaleringsfilters benutte laatste (2008) libavcodec bibliotheek op mijn 3 GHZ processor met snelle ATI chipset, terwijl de CMED3PLUS het met een zwakke (200 MHz of zoiets?) passief gekoelde processor met een op het moederbord geïntegreerde MPEG-4/DivX® DVD decoderchip uit 2003 moet doen. Dit is ook de reden dat de libavcodec coderingen met relatief lage bitrates voor de scaleringen wel onder OS/2 maar niet onder externe mediaspelers afspelen.

Daarnaast kan ook de conversie via de composiet video connector naar het televisie apparaat en de beperkte resolutie van mijn PAL televisiescherm een rol spelen. Maar het feit dat de van het internet geplukte XVID en DIVX coderingen zonder externe SRT bestanden dit probleem niet hadden, geeft wel aan dat optimale codecs de belangrijkste factor zijn. De zwakste schakel (hier de ESS chip uit 2003) bepaalt immers de kracht en onmacht van het systeem.

De ESS chip speelt weliswaar aardig DivX® (en dus ook prima de door haar gekloonde oude MS® AVI's ) af, maar heeft de open source ontwikkeling van DivX® naar XVid en libavcodec's FMP4 niet meegemaakt. Een ESS chip die de open source standaarden XVid en FMP4 ondersteund ontbreekt. Mencoder moet zich daarom aan deze verouderde standaarden aanpassen.

Vraag: Bestaat hier dan geen vernieuwende markt voor? Antwoord: Natuurlijk wel. Ik zou een mediaspeler met actuele ondersteuning van de de open source libavcodec meteen kopen! Het is open source, dus het moet goed te produceren zijn. De open source ontwikkelaars zouden zo'n project toejuichen. Maar onder het PC monopolie van Microsoft kunnen de PC componenten fabrikanten die ze produceren op afschrikwekkende sancties en processen rekenen. En dus is er nog geen chip voor de open source MPEG-4 codecs. Ook al is daar grote behoefte aan.

Een breedbeeld televisiemonitor met hoge resolutie staat inmiddels op mijn verlanglijst. Evenals een MPlayer onder Linux of OS/2 draaiende stille PC met een goede videocapturekaart die tegelijkertijd twee verschillende zenders tegelijkertijd kan weergeven en opnemen.

Ik denk dan aan de Hauppauge WinTV 500 PCI TV kaart met twee tuners. Maar ook meerdere goedkope televisiekaarten installeren op zo'n niet Microsoft multimedia PC is een optie. Via het netwerk kan ik dan de via P2P netwerken gedownloade bestanden afspelen.

Ondertiteling extraheren

Als u een bepaalde ondertiteling van een VOB bestand als tekstbestand wilt extraheren, dan hebt u hier gespecialiseerde OCR software als Subrip (loopt onder Wine en ODIN) voor nodig. Of anders moet u tijdens het afspelen van het VOB bestand aldoor uw ogen de kost moeten geven en snel moeten kunnen typen. In theorie kunt u al typend uw eigen ondertitelingsbestanden aanmaken, maar het is veel werk.

Voor de als afbeelding (bitmap) gecodeerde ondertitelingen geldt, dat u ze niet via de subfont opties van mplayer en mencoder kunt veranderen. Deze opties gelden alleen voor SRT en andere externe tekstbestanden die via subfont.ttf weergegeven worden. Zie: Problem with hardcoding subtitles into a movie.

Datzelfde geldt ook voor een AVI-bestand. Als aan AVI bestand met ondertiteling verschijnt is dat omdat de ondertitelingsteksten al in de afbeeldingen van de film inbegrepen zijn of omdat de mediaspeler een extern ondertitelingsbestand laadt en op de film projecteert (overlay).

Ondertitelingsbestanden zijn er in vele bestandsformaten. De meesten bevatten tekst en natuurlijk een aanduiding over de tijdstippen (vaak tot in milliseconden) waarop tekst in beeld verschijnen moet. Zie voor een overzicht van de formaten het artikel Wikepedia Subtitle (captioning.

Het op tekst gebaseerde SRT-formaat wordt door de meeste software (DivX) mediaspelers ondersteund. Hier is een voorbeeld van een tekstfragment 73 dat op tijdstip 00:15:16,297 tot 00:15:19,698 in beeld verschijnt:

73
00:15:16,297 --> 00:15:19,698
Hoi.
- Ik kan niet geloven dat je thuis bent.

Zoals u ziet kunt u de tekst met de hand bijwerken. Zo kunt u bijvoorbeeld met zoek en vervangen alle namen veranderen. Leuk voor een filmavond...

73
00:15:16,297 --> 00:15:19,698
Hoi. Ik zat net met OS/2 te werken.
- vervelend dat je juist nu thuiskomt.

Films die op DVD zijn uitgebracht verschijnen al spoedig in de peer tot peer netwerken. Bijvoorbeeld als gecomprimeerd VIDEO_TS map of als een 4 GiB ISO bestand. Daarnaast verschijnen er meer compacte DivX MPEG4 versies.

De SRT-ondertitelingsbestanden van de naar DivX omgezette films zijn direct van het internet te downloaden (zoeken naar "subtitle filmnaam"). Meestal werken ze goed, maar er kunnen ook vervelende synchronisatieproblemen optreden. Bijvoorbeeld omdat de film en de ondertiteling niet vanaf hetzelfde moment of in dezelfde bitrate gecodeerd werden of omdat hun bronbestanden verschilden.

Als u met mencoder onder OS/2 een DVD naar AVI converteren wilt, hebt wat de ondertiteling betreft drie mogelijkheden:

1) Met de mencoder optie -slang nl of -sid n kunt u de gewenste ondertiteling meteen in de film vastleggen. De ondertiteling maakt dan deel uit van de JPG plaatjes van de videoframes.

2) U kunt de film ook zonder ondertiteling coderen en op het internet op zoek gaan naar passende SRT-tekstbestanden. Uw mediaspeler kan de teksten dan in een font naar keuze weergeven.

3) Tenslotte kunt u de ondertiteling uit het VOB bestand extraheren en vastleggen in een binair VobSub-bestand.

Het grote voordeel van het in de mpeg4 videocodec ondertitelen is dat alles (video, ondertiteling, muziek) in een AVI-bestand zit. Maar als u via een extern SRT-bestand in een andere taal wilt ondertitelen dan ziet u de vast ingebedde en de nieuw opgeroepen ondertitelingstaal door elkaar.

Vanuit kwaliteitsoogpunt bezien heeft het vastleggen van de ondertiteling in aparte SRT of SUB-bestanden zeker de voorkeur. Want op deze manier kunt u een film met willekeurige talen (SRT of SUB-bestanden) ondertitelen en wordt de letterweergave niet afhankelijk van de gecodeerde beeldgrootte (video scale) en bitrates. En dat is van belang, want met relatief lage bitrates (<1200 kbits/s) zien de fonts er soms rafelig uit. Niet onder de MPlayer codecs onder OS/2, maar misschien wel op uw mediaspeler en/of een televisiescherm.

Een andere reden om DVD's zonder ondertiteling te coderen is dat de door het AVI-bestand benodigde SRT-bestanden meestal gewoon te downloaden zijn. Bijvoorbeeld van Movies - subtitles for divx and and dvd movies in many languages en andere sites. De meeste mediaspelers kunnen de srt bestanden (bijv. film.avi met film.srt) goed inlezen. Mocht dat niet het geval zijn, dan kunt u een niet ondertitelde AVI-film naar een ondertitelde film converteren met de volgende opdracht:

mencoder film.avi -ovc lavc -oac lavc -sub nlfilm.srt -subfont-text-scale 3 -o nlfilm.avi 

De optie scale -subfont-text-scale 3 slaat op de tekstgroottte (3%).

Maar stel u wilt niet afhankelijk zijn van externe bronnen? Hoe legt u de DVD ondertiteling dan in een apart subvob bestand vast op de vaste schijf? Stel de Nederlandstalige ondertiteling een sid heeft van 2, dan zou de eerste opdracht waarschijnlijk en de tweede zeker moeten werken.

mencoder -dvd-device M: dvd://1 -nosound -ovc frameno -slang nl -vobsubout film -o NUL
mencoder -dvd-device M: dvd://1 -nosound -ovc frameno -sid 2 -vobsubout film -o NUL

Mencoder zal dan per film een index (film.idx) en een binair (image-based) ondertitelingsbestand (film.sub) aanmaken. De index is belangrijk, omdat film.sub een tijdsaanduiding mist. Het generen van een ondertitelingsbestanden gaat met 300 fps vanaf de vaste schijf redelijk snel.

Het combinatie film.avi, film.sub en film.idx wordt helaas niet door alle mediaspelers ondersteund. Maar voor software spelers is het vooral een kwestie van configureren en de juiste DLL's installeren. Maar de CMEDPLUS kan er wel mee overweg.

Hieronder een voorbeeld van een 2-pass encoding waarbij eerst twee subtitelbestanden aangemaakt worden.

De volgende batch doet een 2 pass MPEG4 encoding maar zet de Nederlandse (hier sid 0) en Engelse (sid 1) ondertiteling in een binair subbestand. De standaardaudio is meestal Engels (AID=128). Geeft de IFO meer gesproken talen op dan tellen zae als 129, 130 etc.

REM DVD2PassRipMapVarMP3XVIDSRT.cmd
REM Sleep MAP met VIDEO_TS DVD structuur
REM naar het programmaobject en rippen maar...
REM Plaats mencoder.exe (met lame ondersteuning)en priority.exe wel in het pad. 

SET MOVIENAME=Filmnaam
SET AID=128
SET SID=0
SET SID2=1

rem ENDPOS=-endpos 5:00

SET LAMEBR=128:cbr
rem SET LAMEBR=96:cbr
SET LAMEVOL=6

SET VCODEC=mpeg4
SET VBITRATE=1100

rem ##### 235:100 breedbeeld bioscoop ####
SET SCALE=752:320
rem SET SCALE=704:304
rem ##### 16:9 DVD breedbeeld ####
rem SET SCALE=1024:576
rem SET SCALE=768:432
SET SCALE=512:288
rem ##### 4:3 televisie ####
rem SET SCALE=768:576
rem SET SCALE=704:528
rem SET SCALE=640:480
rem SET SCALE=384:288

SET CROP=704:416:8:82
SET FFOURCC=-ffourcc XVID
SET PRIORITY=1 3


mode co100,60
q:
cd \
md var\rip\%MOVIENAME%_V%VBITRATE%_%ACODEC%_%ABITRATE%_SUB
cd var\rip\%MOVIENAME%_V%VBITRATE%_%ACODEC%_%ABITRATE%_SUB

del *idx
del *sub
del *avi
del *log

priority %PRIORITY% mencoder dvd://1 -dvd-device %1 -nosound -ovc frameno -sid %SID% -vobsubout %MOVIENAME%1 %FFOURCC% -o NUL
priority %PRIORITY% mencoder dvd://1 -dvd-device %1 -nosound -ovc frameno -sid %SID2% -vobsubout %MOVIENAME%1_en %FFOURCC% -o NUL
priority %PRIORITY% mencoder dvd://1 -dvd-device %1 -aid %AID% -sws 2 -oac mp3lame -lameopts br=%LAMEBR%:vol=%LAMEVOL%:aq=9 -ovc lavc -lavcopts vcodec=%VCODEC%:vbitrate=%VBITRATE%:mbd=2:trell:v4mv:turbo:vpass=1 -vf crop=%CROP%,scale=%SCALE% %ENDPOS% %FFOURCC% -o %MOVIENAME%1.avi
priority %PRIORITY% mencoder dvd://1 -dvd-device %1 -aid %AID% -sws 2 -oac mp3lame -lameopts br=%LAMEBR%:vol=%LAMEVOL%:aq=2 -ovc lavc -lavcopts vcodec=%VCODEC%:vbitrate=%VBITRATE%:mbd=2:trell:v4mv:turbo:vpass=2 -vf crop=%CROP%,scale=%SCALE% %ENDPOS% %FFOURCC% -o %MOVIENAME%1.avi


del divx2pass.log

priority %PRIORITY% mencoder dvd://2 -dvd-device %1 -nosound -ovc frameno -sid %SID% -vobsubout %MOVIENAME%2 %FFOURCC% -o NUL
priority %PRIORITY% mencoder dvd://2 -dvd-device %1 -nosound -ovc frameno -sid %SID2% -vobsubout %MOVIENAME%2_en %FFOURCC% -o NUL
priority %PRIORITY% mencoder dvd://2 -dvd-device %1 -aid %AID% -sws 2 -oac mp3lame -lameopts br=%LAMEBR%:vol=%LAMEVOL%:aq=9 -ovc lavc -lavcopts vcodec=%VCODEC%:vbitrate=%VBITRATE%:mbd=2:trell:v4mv:turbo:vpass=1 -vf crop=%CROP%,scale=%SCALE% %ENDPOS% %FFOURCC% -o %MOVIENAME%2.avi
priority %PRIORITY% mencoder dvd://2 -dvd-device %1 -aid %AID% -sws 2 -oac mp3lame -lameopts br=%LAMEBR%:vol=%LAMEVOL%:aq=2 -ovc lavc -lavcopts vcodec=%VCODEC%:vbitrate=%VBITRATE%:mbd=2:trell:v4mv:turbo:vpass=2 -vf crop=%CROP%,scale=%SCALE% %ENDPOS% %FFOURCC% -o %MOVIENAME%2.avi


del divx2pass.log

rem Plaats hier bloks voor meer IFO en VOB bestanden 

exit 

Opmerking: Als u gebruik maakt van mencoders -vobsubout optie, moet u -slang nl of -sid 5 uit de opdrachten die de video coderen weglaten. Anders zal Mplayer twee ondertitelingen laten zien: de externe en de in de video ingebedde.

Een film van de vaste schijf of DVD rippen

> Top <

Ik heb hier batches voor aangemaakt. En inmiddels ook een REXX script dat een passende batches creëert. Ze staan in de map: extra

DVD specifieke instellingen als de aid=128, sid=0 of slang=nl sloeg ik eerst in mencoder.conf op. Dat geldt al helemaal voor vf=crop=720:576:0:0,scale=704:304. Anders moet je de batches steeds herschrijven. Dat kan eventueel met zoek en vervangfunctie van ae.exe of via het gebruik van lokale variabelen (zie verderop).

Een snelkoppeling van de meest gebruikte batches en van de mencoder.conf staat in de map DVD zodat ik het rippen gewoon kan opstarten met slepen en neerzetten onder de WPS.

rem DVDripMap.cmd
rem: probeer de voor uw beeldscherm geldige waarden op de prompt uit. 
mode co132,60
q:
cd \
cd var\rip
md DVDripMap
cd DVDripMap
del *.*

set > set.txt

del frameno.avi
priority 1 30 mencoder dvd://1 -dvd-device %1 -oac lavc -lavcopts br=96:cbr:vol=6 -ovc frameno -o frameno.avi 
set prompt=$E[37;44m[$P]
priority 1 30 mencoder dvd://1 -dvd-device %1 -sws 2 -oac copy -ovc lavc -lavcopts mbd=2:trell:vpass=1 -o track1.avi 
set prompt=$E[37;42m[$P]
priority 1 30 mencoder dvd://1 -dvd-device %1 -sws 2 -oac copy -ovc lavc -lavcopts mbd=2:trell:vpass=2 -o track1.avi

set prompt=$E[37;40m[$P]
del frameno.avi
ren divx2pass.log divx2pass1.log

priority 1 30 mencoder dvd://2 -dvd-device %1 -oac lavc -lavcopts br=96:cbr:vol=6 -ovc frameno -o frameno.avi 
set prompt=$E[37;44m[$P]
priority 1 30 mencoder dvd://2 -dvd-device %1 -sws 2 -oac copy -ovc lavc -lavcopts mbd=2:trell:vpass=1 -o track2.avi 
set prompt=$E[37;42m[$P]
priority 1 30 mencoder dvd://2 -dvd-device %1 -sws 2 -oac copy -ovc lavc -lavcopts mbd=2:trell:vpass=2 -o track2.avi

set prompt=$E[37;40m[$P]
del frameno.avi
ren divx2pass.log divx2pass2.log

priority 1 30 mencoder dvd://3 -dvd-device %1 -oac lavc -lavcopts br=96:cbr:vol=6 -ovc frameno -o frameno.avi 
set prompt=$E[37;44m[$P]
priority 1 30 mencoder dvd://3 -dvd-device %1 -sws 2 -oac copy -ovc lavc -lavcopts mbd=2:trell:vpass=1 -o track3.avi 
set prompt=$E[37;42m[$P]
priority 1 30 mencoder dvd://3 -dvd-device %1 -sws 2 -oac copy -ovc lavc -lavcopts mbd=2:trell:vpass=2 -o track3.avi

set prompt=$E[37;40m[$P]
del frameno.avi
ren divx2pass.log divx2pass3.log

priority 1 30 mencoder dvd://4 -dvd-device %1 -oac lavc -lavcopts br=96:cbr:vol=6 -ovc frameno -o frameno.avi 
set prompt=$E[37;44m[$P]
priority 1 30 mencoder dvd://4 -dvd-device %1 -sws 2 -oac copy -ovc lavc -lavcopts mbd=2:trell:vpass=1 -o track4.avi 
set prompt=$E[37;42m[$P]
priority 1 30 mencoder dvd://4 -dvd-device %1 -sws 2 -oac copy -ovc lavc -lavcopts mbd=2:trell:vpass=2 -o track4.avi

set prompt=$E[37;40m[$P]
del frameno.avi
ren divx2pass.log divx2pass4.log

priority 1 30 mencoder dvd://5 -dvd-device %1 -oac lavc -lavcopts br=96:cbr:vol=6 -ovc frameno -o frameno.avi 
set prompt=$E[37;44m[$P]
priority 1 30 mencoder dvd://5 -dvd-device %1 -sws 2 -oac copy -ovc lavc -lavcopts mbd=2:trell:vpass=1 -o track5.avi 
set prompt=$E[37;42m[$P]
priority 1 30 mencoder dvd://5 -dvd-device %1 -sws 2 -oac copy -ovc lavc -lavcopts mbd=2:trell:vpass=2 -o track5.avi

set prompt=$E[37;40m[$P]
del frameno.avi
ren divx2pass.log divx2pass5.log

priority 1 30 mencoder dvd://6 -dvd-device %1 -oac lavc -lavcopts br=96:cbr:vol=6 -ovc frameno -o frameno.avi 
set prompt=$E[37;44m[$P]
priority 1 30 mencoder dvd://6 -dvd-device %1 -sws 2 -oac copy -ovc lavc -lavcopts mbd=2:trell:vpass=1 -o track6.avi 
set prompt=$E[37;42m[$P]
priority 1 30 mencoder dvd://6 -dvd-device %1 -sws 2 -oac copy -ovc lavc -lavcopts mbd=2:trell:vpass=2 -o track6.avi

set prompt=$E[37;40m[$P]
del frameno.avi
ren divx2pass.log divx2pass6.log

priority 1 30 mencoder dvd://7 -dvd-device %1 -oac lavc -lavcopts br=96:cbr:vol=6 -ovc frameno -o frameno.avi 
set prompt=$E[37;44m[$P]
priority 1 30 mencoder dvd://7 -dvd-device %1 -sws 2 -oac copy -ovc lavc -lavcopts mbd=2:trell:vpass=1 -o track7.avi 
set prompt=$E[37;42m[$P]
priority 1 30 mencoder dvd://7 -dvd-device %1 -sws 2 -oac copy -ovc lavc -lavcopts mbd=2:trell:vpass=2 -o track7.avi

set prompt=$E[37;40m[$P]
del frameno.avi
ren divx2pass.log divx2pass7.log

priority 1 30 mencoder dvd://8 -dvd-device %1 -oac lavc -lavcopts br=96:cbr:vol=6 -ovc frameno -o frameno.avi 
set prompt=$E[37;44m[$P]
priority 1 30 mencoder dvd://8 -dvd-device %1 -sws 2 -oac copy -ovc lavc -lavcopts mbd=2:trell:vpass=1 -o track8.avi 
set prompt=$E[37;42m[$P]
priority 1 30 mencoder dvd://8 -dvd-device %1 -sws 2 -oac copy -ovc lavc -lavcopts mbd=2:trell:vpass=2 -o track8.avi

set prompt=$E[37;40m[$P]
del frameno.avi
ren divx2pass.log divx2pass8.log

priority 1 30 mencoder dvd://9 -dvd-device %1 -oac lavc -lavcopts br=96:cbr:vol=6 -ovc frameno -o frameno.avi 
set prompt=$E[37;44m[$P]
priority 1 30 mencoder dvd://9 -dvd-device %1 -sws 2 -oac copy -ovc lavc -lavcopts mbd=2:trell:vpass=1 -o track9.avi 
set prompt=$E[37;42m[$P]
priority 1 30 mencoder dvd://9 -dvd-device %1 -sws 2 -oac copy -ovc lavc -lavcopts mbd=2:trell:vpass=2 -o track9.avi

set prompt=$E[37;40m[$P]
del frameno.avi
ren divx2pass.log divx2pass9.log

priority 1 30 mencoder dvd://10 -dvd-device %1 -oac lavc -lavcopts br=96:cbr:vol=6 -ovc frameno -o frameno.avi 
set prompt=$E[37;44m[$P]
priority 1 30 mencoder dvd://10 -dvd-device %1 -sws 2 -oac copy -ovc lavc -lavcopts mbd=2:trell:vpass=1 -o track10.avi 
set prompt=$E[37;42m[$P]
priority 1 30 mencoder dvd://10 -dvd-device %1 -sws 2 -oac copy -ovc lavc -lavcopts mbd=2:trell:vpass=2 -o track10.avi

set prompt=$E[37;40m[$P]
del frameno.avi
ren divx2pass.log divx2pass10.log

priority 1 30 mencoder dvd://11 -dvd-device %1 -oac lavc -lavcopts br=96:cbr:vol=6 -ovc frameno -o frameno.avi 
set prompt=$E[37;44m[$P]
priority 1 30 mencoder dvd://11 -dvd-device %1 -sws 2 -oac copy -ovc lavc -lavcopts mbd=2:trell:vpass=1 -o track11.avi 
set prompt=$E[37;42m[$P]
priority 1 30 mencoder dvd://11 -dvd-device %1 -sws 2 -oac copy -ovc lavc -lavcopts mbd=2:trell:vpass=2 -o track11.avi

set prompt=$E[37;40m[$P]
del frameno.avi
ren divx2pass.log divx2pass11.log

priority 1 30 mencoder dvd://12 -dvd-device %1 -oac lavc -lavcopts br=96:cbr:vol=6 -ovc frameno -o frameno.avi 
set prompt=$E[37;44m[$P]
priority 1 30 mencoder dvd://12 -dvd-device %1 -sws 2 -oac copy -ovc lavc -lavcopts mbd=2:trell:vpass=1 -o track12.avi 
set prompt=$E[37;42m[$P]
priority 1 30 mencoder dvd://12 -dvd-device %1 -sws 2 -oac copy -ovc lavc -lavcopts mbd=2:trell:vpass=2 -o track12.avi

set prompt=$E[37;40m[$P]
del frameno.avi
ren divx2pass.log divx2pass12.log

priority 1 30 mencoder dvd://13 -dvd-device %1 -oac lavc -lavcopts br=96:cbr:vol=6 -ovc frameno -o frameno.avi 
set prompt=$E[37;44m[$P]
priority 1 30 mencoder dvd://13 -dvd-device %1 -sws 2 -oac copy -ovc lavc -lavcopts mbd=2:trell:vpass=1 -o track13.avi 
set prompt=$E[37;42m[$P]
priority 1 30 mencoder dvd://13 -dvd-device %1 -sws 2 -oac copy -ovc lavc -lavcopts mbd=2:trell:vpass=2 -o track13.avi

set prompt=$E[37;40m[$P]
del frameno.avi
ren divx2pass.log divx2pass13.log

priority 1 30 mencoder dvd://14 -dvd-device %1 -oac lavc -lavcopts br=96:cbr:vol=6 -ovc frameno -o frameno.avi 
set prompt=$E[37;44m[$P]
priority 1 30 mencoder dvd://14 -dvd-device %1 -sws 2 -oac copy -ovc lavc -lavcopts mbd=2:trell:vpass=1 -o track14.avi 
set prompt=$E[37;42m[$P]
priority 1 30 mencoder dvd://14 -dvd-device %1 -sws 2 -oac copy -ovc lavc -lavcopts mbd=2:trell:vpass=2 -o track14.avi

set prompt=$E[37;40m[$P]
del frameno.avi
ren divx2pass.log divx2pass13.log

priority 1 30 mencoder dvd://15 -dvd-device %1 -oac lavc -lavcopts br=96:cbr:vol=6 -ovc frameno -o frameno.avi 
set prompt=$E[37;44m[$P]
priority 1 30 mencoder dvd://15 -dvd-device %1 -sws 2 -oac copy -ovc lavc -lavcopts mbd=2:trell:vpass=1 -o track15.avi 
set prompt=$E[37;42m[$P]
priority 1 30 mencoder dvd://15 -dvd-device %1 -sws 2 -oac copy -ovc lavc -lavcopts mbd=2:trell:vpass=2 -o track15.avi

set prompt=$E[37;40m[$P]
del frameno.avi
ren divx2pass.log divx2pass15.log

De % van -dvd-device %1 staat voor de map met de DVD mirror . Deze mirror is gewoon het resultaat van een kopieeropdracht van de DVD naar de vaste schijf (Zie: Materiaal verzamelen). U sleept de map met de titel of het icoontje van uw DVD drive gewoon naar het WPS object van de batch. Kortom Drag and drop DVD ripping (daarom vind ik OS/2 zo leuk). En daarna (na even "j" tikken voor de del *.*) gaat de batch in gang. Let op: mencoder en priority moeten in het pad staan. Bij mij staan mencoder, priority en mplayer inmiddels in \ECS\BIN. En let erop dat de oude WINOS2 Mplayer later in het %PATH% voorkomt.

De batch geeft met set prompt= iedere procedure wat kleurtjes, maar dat is meer voor de gein. Waar het om gaat zijn de handelingen.

Wit op zwart:

mencoder dvd://[nummer] -dvd-device [pad] -oac lavc -lavcopts br=96:cbr:vol=6 -ovc frameno -o frameno.avi

Hiermee wordt van track nummer 1 t/m 15 alleen het geluid geript. De instelling -ovc frameno betekent geen (no) output video codec (ovc). Het geluid wordt door de lavc bibliotheek bewerkt (-oac lavc) en opgeslagen in het audiocontainerbestand frameno.avi met een constante (cbr) bitrate van 96 (maak er 128 van voor een DVD met veel muziek). De optie vol=6 zet het volume wat hoger.

Wit op blauw:

mencoder dvd://[nummer] -dvd-device [pad] -sws 2 -oac copy -ovc lavc -lavcopts mbd=2:trell:vpass=1 -o track[nummer].avi

Dit is eerste ronde (pass=1) van het video uitvoer rippen. De zojuist geripte MP3 audio in frameno.avi wordt onbewerkt (-oac copy) overgenomen. Mencoder herkent de bestandsnaam frameno.avi (alleen deze naam!) automatisch als het invoerbestand voor geluid. De lavcopties mbd=2 en trell verbeteren de kwaliteit.

Daarna komt wit op groen:

mencoder dvd://[nummer] -dvd-device [pad] -sws 2 -oac copy -ovc lavc -lavcopts mbd=2:trell:vpass=2 -o track[nummer].avi

Dit is de tweede gang door de DVD content (pass=2). Twee keer de videoinhoud bewerken kost weliswaar meer tijd maar levert ook een beter beeld op.

En deze procedure wordt voor iedere track (hier 1-15) met lage (achtergrond)prioriteit door mencoder (priority 1 30 mencoder) uitgevoerd, zodat u ondertussen gewoon door kunt werken.

Tijdens het coderen ziet u onderaan de voortgang:

Pos:3399.1s  84981f (38%) 35.29fps Trem:  63min 1052mb  A-V:0.000 [777:224]]

Uitleg:

Pos:3399.1s 84981f (38%) geeft de positie aan in seconden, frames en procent van de film.

35.29fps geeft de codeersnelheid in frames /seconde aan. Standaard zitten er 25 frames in een seconde.

Trem: 63min is de resterende tijd in minuten (hangt van de codeersnelheid en filmduur af).

1052mb de verwachte grootte van het bestand in MB (MiB?).

A-V:0.000 [777:224]] is de verhouding tussen de audio en de video (hier AC3 audio) en de bijbehorende codeerfrequenties.

Ook hier kwam geen MP3 geluid tot stand.

Via Drag en drop een XVid-AVI filmpjes maken van een DVD

> Top <

De laatste tijd gebruik ik niet meer de instellingen van mencoder.conf, maar geef ze op als variabelen in de batch zelf. Van de batch kunt u een sjabloon in de map modellen maken. U kunt ook verschillende versies van zo'n sjabloon aanmaken. Van goedwerkende en redelijk universele batches in \cmd\mencoder maak ik dus een sjablooon in \HOME\WERKPLEK\Modellen\mencoder aan.

En die sleep ik dan naar de map DVD om er een aangepaste versie van te maken. De aanpassingen in (hier DVDripMAPVarXVID.cmd) betreffen de vooral de gewenste namen van de avi bestanden en de gewenste audio en video codec bitrates. En daarnaast moet natuurlijk de scale (het gewenste pixelformaat) en eventueel de crop (de inactieve randen) van de film worden aangepast.



REM DVDripMAPVarMP3XVID.cmd
REM Sleep MAP met VIDEO_TS DVD structuur
REM naar het programmaobject en rippen maar...
REM Plaats mencoder.exe (met lame ondersteuning)en priority.exe wel in het pad. 

SET MOVIENAME=filmnaam
SET LANG_IDS=-aid 128 -sid 0

rem ENDPOS=-endpos 5:00
rem SET LAMEBR=128:cbr
SET LAMEBR=96:cbr
SET LAMEVOL=6
SET VCODEC=mpeg4
SET FFOURCC=-ffourcc XVID
SET SCALE=704:304
SET CROP=720:576:0:0
SET VBITRATE=1100


mode co100,60
q:
cd \
md var\rip\%MOVIENAME%
cd var\rip\%MOVIENAME%
del *.log
del *.avi


set prompt=$E[37;44m[$P]
priority 1 20 mencoder dvd://1 -dvd-device %1 %LANG_IDS% -oac mp3lame -lameopts br=%LAMEBR%:vol=%LAMEVOL% -ovc frameno %ENDPOS% -o frameno.avi
set prompt=$E[37;42m[$P]
priority 1 20 mencoder dvd://1 -dvd-device %1 %LANG_IDS% -sws 2 -oac copy -ovc lavc -lavcopts vcodec=%VCODEC%:vbitrate=%VBITRATE%:mbd=2:trell:v4mv:turbo:vpass=1 -vf crop=%CROP%,scale=%SCALE% %ENDPOS% -o NUL
set prompt=$E[37;41m[$P]
priority 1 20 mencoder dvd://1 -dvd-device %1 %LANG_IDS% -sws 2 -oac copy -ovc lavc -lavcopts vcodec=%VCODEC%:vbitrate=%VBITRATE%:mbd=2:trell:v4mv:turbo:vpass=2 -vf crop=%CROP%,scale=%SCALE% %ENDPOS% -o %MOVIENAME%1.avi

del frameno.avi
del divx2pass.log

set prompt=$E[37;44m[$P]
priority 1 20 mencoder dvd://2 -dvd-device %1 %LANG_IDS% -oac mp3lame -lameopts br=%LAMEBR%:vol=%LAMEVOL% -ovc frameno %ENDPOS% -o frameno.avi
set prompt=$E[37;42m[$P]
priority 1 20 mencoder dvd://2 -dvd-device %1 %LANG_IDS% -sws 2 -oac copy -ovc lavc -lavcopts vcodec=%VCODEC%:vbitrate=%VBITRATE%:mbd=2:trell:v4mv:turbo:vpass=1 -vf crop=%CROP%,scale=%SCALE% %ENDPOS% -o NUL
set prompt=$E[37;41m[$P]
priority 1 20 mencoder dvd://2 -dvd-device %1 %LANG_IDS% -sws 2 -oac copy -ovc lavc -lavcopts vcodec=%VCODEC%:vbitrate=%VBITRATE%:mbd=2:trell:v4mv:turbo:vpass=2 -vf crop=%CROP%,scale=%SCALE% %ENDPOS% -o %MOVIENAME%2.avi

del frameno.avi
del divx2pass.log
set prompt=$E[37;44m[$P]
priority 1 20 mencoder dvd://3 -dvd-device %1 %LANG_IDS% -oac mp3lame -lameopts br=%LAMEBR%:vol=%LAMEVOL% -ovc frameno %ENDPOS% -o frameno.avi
set prompt=$E[37;42m[$P]
priority 1 20 mencoder dvd://3 -dvd-device %1 %LANG_IDS% -sws 2 -oac copy -ovc lavc -lavcopts vcodec=%VCODEC%:vbitrate=%VBITRATE%:mbd=2:trell:v4mv:turbo:vpass=1 -vf crop=%CROP%,scale=%SCALE% %ENDPOS% -o NUL
set prompt=$E[37;41m[$P]
priority 1 20 mencoder dvd://3 -dvd-device %1 %LANG_IDS% -sws 2 -oac copy -ovc lavc -lavcopts vcodec=%VCODEC%:vbitrate=%VBITRATE%:mbd=2:trell:v4mv:turbo:vpass=2 -vf crop=%CROP%,scale=%SCALE% %ENDPOS% -o %MOVIENAME%3.avi

del frameno.avi
del divx2pass.log

set prompt=$E[37;44m[$P]
priority 1 20 mencoder dvd://4 -dvd-device %1 %LANG_IDS% -oac mp3lame -lameopts br=%LAMEBR%:vol=%LAMEVOL% -ovc frameno %ENDPOS% -o frameno.avi
set prompt=$E[37;42m[$P]
priority 1 20 mencoder dvd://4 -dvd-device %1 %LANG_IDS% -sws 2 -oac copy -ovc lavc -lavcopts vcodec=%VCODEC%:vbitrate=%VBITRATE%:mbd=2:trell:v4mv:turbo:vpass=1 -vf crop=%CROP%,scale=%SCALE% %ENDPOS% -o NUL
set prompt=$E[37;41m[$P]
priority 1 20 mencoder dvd://4 -dvd-device %1 %LANG_IDS% -sws 2 -oac copy -ovc lavc -lavcopts vcodec=%VCODEC%:vbitrate=%VBITRATE%:mbd=2:trell:v4mv:turbo:vpass=2 -vf crop=%CROP%,scale=%SCALE% %ENDPOS% -o %MOVIENAME%4.avi

del frameno.avi
del divx2pass.log
set prompt=$E[37;44m[$P]
priority 1 20 mencoder dvd://5 -dvd-device %1 %LANG_IDS% -oac mp3lame -lameopts br=%LAMEBR%:vol=%LAMEVOL% -ovc frameno %ENDPOS% -o frameno.avi
set prompt=$E[37;42m[$P]
priority 1 20 mencoder dvd://5 -dvd-device %1 %LANG_IDS% -sws 2 -oac copy -ovc lavc -lavcopts vcodec=%VCODEC%:vbitrate=%VBITRATE%:mbd=2:trell:v4mv:turbo:vpass=1 -vf crop=%CROP%,scale=%SCALE% %ENDPOS% -o NUL
set prompt=$E[37;41m[$P]
priority 1 20 mencoder dvd://5 -dvd-device %1 %LANG_IDS% -sws 2 -oac copy -ovc lavc -lavcopts vcodec=%VCODEC%:vbitrate=%VBITRATE%:mbd=2:trell:v4mv:turbo:vpass=2 -vf crop=%CROP%,scale=%SCALE% %ENDPOS% -o %MOVIENAME%5.avi

del frameno.avi
del divx2pass.log
set prompt=$E[37;44m[$P]
priority 1 20 mencoder dvd://%LAMEVOL% -dvd-device %1 %LANG_IDS% -oac mp3lame -lameopts br=%LAMEBR%:vol=%LAMEVOL% -ovc frameno %ENDPOS% -o frameno.avi
set prompt=$E[37;42m[$P]
priority 1 20 mencoder dvd://%LAMEVOL% -dvd-device %1 %LANG_IDS% -sws 2 -oac copy -ovc lavc -lavcopts vcodec=%VCODEC%:vbitrate=%VBITRATE%:mbd=2:trell:v4mv:turbo:vpass=1 -vf crop=%CROP%,scale=%SCALE% %ENDPOS% -o NUL
set prompt=$E[37;41m[$P]
priority 1 20 mencoder dvd://%LAMEVOL% -dvd-device %1 %LANG_IDS% -sws 2 -oac copy -ovc lavc -lavcopts vcodec=%VCODEC%:vbitrate=%VBITRATE%:mbd=2:trell:v4mv:turbo:vpass=2 -vf crop=%CROP%,scale=%SCALE% %ENDPOS% -o %MOVIENAME%6.avi

del frameno.avi
del divx2pass.log
set prompt=$E[37;44m[$P]
priority 1 20 mencoder dvd://7 -dvd-device %1 %LANG_IDS% -oac mp3lame -lameopts br=%LAMEBR%:vol=%LAMEVOL% -ovc frameno %ENDPOS% -o frameno.avi
set prompt=$E[37;42m[$P]
priority 1 20 mencoder dvd://7 -dvd-device %1 %LANG_IDS% -sws 2 -oac copy -ovc lavc -lavcopts vcodec=%VCODEC%:vbitrate=%VBITRATE%:mbd=2:trell:v4mv:turbo:vpass=1 -vf crop=%CROP%,scale=%SCALE% %ENDPOS% -o NUL
set prompt=$E[37;41m[$P]
priority 1 20 mencoder dvd://7 -dvd-device %1 %LANG_IDS% -sws 2 -oac copy -ovc lavc -lavcopts vcodec=%VCODEC%:vbitrate=%VBITRATE%:mbd=2:trell:v4mv:turbo:vpass=2 -vf crop=%CROP%,scale=%SCALE% %ENDPOS% -o %MOVIENAME%7.avi

del frameno.avi
del divx2pass.log
set prompt=$E[37;44m[$P]
priority 1 20 mencoder dvd://8 -dvd-device %1 %LANG_IDS% -oac mp3lame -lameopts br=%LAMEBR%:vol=%LAMEVOL% -ovc frameno %ENDPOS% -o frameno.avi
set prompt=$E[37;42m[$P]
priority 1 20 mencoder dvd://8 -dvd-device %1 %LANG_IDS% -sws 2 -oac copy -ovc lavc -lavcopts vcodec=%VCODEC%:vbitrate=%VBITRATE%:mbd=2:trell:v4mv:turbo:vpass=1 -vf crop=%CROP%,scale=%SCALE% %ENDPOS% -o NUL
set prompt=$E[37;41m[$P]
priority 1 20 mencoder dvd://8 -dvd-device %1 %LANG_IDS% -sws 2 -oac copy -ovc lavc -lavcopts vcodec=%VCODEC%:vbitrate=%VBITRATE%:mbd=2:trell:v4mv:turbo:vpass=2 -vf crop=%CROP%,scale=%SCALE% %ENDPOS% -o %MOVIENAME%8.avi

del frameno.avi
del divx2pass.log
set prompt=$E[37;44m[$P]
priority 1 20 mencoder dvd://9 -dvd-device %1 %LANG_IDS% -oac mp3lame -lameopts br=%LAMEBR%:vol=%LAMEVOL% -ovc frameno %ENDPOS% -o frameno.avi
set prompt=$E[37;42m[$P]
priority 1 20 mencoder dvd://9 -dvd-device %1 %LANG_IDS% -sws 2 -oac copy -ovc lavc -lavcopts vcodec=%VCODEC%:vbitrate=%VBITRATE%:mbd=2:trell:v4mv:turbo:vpass=1 -vf crop=%CROP%,scale=%SCALE% %ENDPOS% -o NUL
set prompt=$E[37;41m[$P]
priority 1 20 mencoder dvd://9 -dvd-device %1 %LANG_IDS% -sws 2 -oac copy -ovc lavc -lavcopts vcodec=%VCODEC%:vbitrate=%VBITRATE%:mbd=2:trell:v4mv:turbo:vpass=2 -vf crop=%CROP%,scale=%SCALE% %ENDPOS% -o %MOVIENAME%9.avi


del frameno.avi
del divx2pass.log
set prompt=$E[37;44m[$P]
priority 1 20 mencoder dvd://10 -dvd-device %1 %LANG_IDS% -oac mp3lame -lameopts br=%LAMEBR%:vol=%LAMEVOL% -ovc frameno %ENDPOS% -o frameno.avi
set prompt=$E[37;42m[$P]
priority 1 20 mencoder dvd://10 -dvd-device %1 %LANG_IDS% -sws 2 -oac copy -ovc lavc -lavcopts vcodec=%VCODEC%:vbitrate=%VBITRATE%:mbd=2:trell:v4mv:turbo:vpass=1 -vf crop=%CROP%,scale=%SCALE% %ENDPOS% -o NUL
set prompt=$E[37;41m[$P]
priority 1 20 mencoder dvd://10 -dvd-device %1 %LANG_IDS% -sws 2 -oac copy -ovc lavc -lavcopts vcodec=%VCODEC%:vbitrate=%VBITRATE%:mbd=2:trell:v4mv:turbo:vpass=2 -vf crop=%CROP%,scale=%SCALE% %ENDPOS% -o %MOVIENAME%10.avi

del frameno.avi
del divx2pass.log
set prompt=$E[37;44m[$P]
priority 1 20 mencoder dvd://11 -dvd-device %1 %LANG_IDS% -oac mp3lame -lameopts br=%LAMEBR%:vol=%LAMEVOL% -ovc frameno %ENDPOS% -o frameno.avi
set prompt=$E[37;42m[$P]
priority 1 20 mencoder dvd://11 -dvd-device %1 %LANG_IDS% -sws 2 -oac copy -ovc lavc -lavcopts vcodec=%VCODEC%:vbitrate=%VBITRATE%:mbd=2:trell:v4mv:turbo:vpass=1 -vf crop=%CROP%,scale=%SCALE% %ENDPOS% -o NUL
set prompt=$E[37;41m[$P]
priority 1 20 mencoder dvd://11 -dvd-device %1 %LANG_IDS% -sws 2 -oac copy -ovc lavc -lavcopts vcodec=%VCODEC%:vbitrate=%VBITRATE%:mbd=2:trell:v4mv:turbo:vpass=2 -vf crop=%CROP%,scale=%SCALE% %ENDPOS% -o %MOVIENAME%11.avi

del frameno.avi
del divx2pass.log
set prompt=$E[37;44m[$P]
priority 1 20 mencoder dvd://12 -dvd-device %1 %LANG_IDS% -oac mp3lame -lameopts br=%LAMEBR%:vol=%LAMEVOL% -ovc frameno %ENDPOS% -o frameno.avi
set prompt=$E[37;42m[$P]
priority 1 20 mencoder dvd://12 -dvd-device %1 %LANG_IDS% -sws 2 -oac copy -ovc lavc -lavcopts vcodec=%VCODEC%:vbitrate=%VBITRATE%:mbd=2:trell:v4mv:turbo:vpass=1 -vf crop=%CROP%,scale=%SCALE% %ENDPOS% -o NUL
set prompt=$E[37;41m[$P]
priority 1 20 mencoder dvd://12 -dvd-device %1 %LANG_IDS% -sws 2 -oac copy -ovc lavc -lavcopts vcodec=%VCODEC%:vbitrate=%VBITRATE%:mbd=2:trell:v4mv:turbo:vpass=2 -vf crop=%CROP%,scale=%SCALE% %ENDPOS% -o %MOVIENAME%12.avi

del frameno.avi
del divx2pass.log
set prompt=$E[37;44m[$P]
priority 1 20 mencoder dvd://13 -dvd-device %1 %LANG_IDS% -oac mp3lame -lameopts br=%LAMEBR%:vol=%LAMEVOL% -ovc frameno %ENDPOS% -o frameno.avi
set prompt=$E[37;42m[$P]
priority 1 20 mencoder dvd://13 -dvd-device %1 %LANG_IDS% -sws 2 -oac copy -ovc lavc -lavcopts vcodec=%VCODEC%:vbitrate=%VBITRATE%:mbd=2:trell:v4mv:turbo:vpass=1 -vf crop=%CROP%,scale=%SCALE% %ENDPOS% -o NUL
set prompt=$E[37;41m[$P]
priority 1 20 mencoder dvd://13 -dvd-device %1 %LANG_IDS% -sws 2 -oac copy -ovc lavc -lavcopts vcodec=%VCODEC%:vbitrate=%VBITRATE%:mbd=2:trell:v4mv:turbo:vpass=2 -vf crop=%CROP%,scale=%SCALE% %ENDPOS% -o %MOVIENAME%13.avi

del frameno.avi
del divx2pass.log
set prompt=$E[37;44m[$P]
priority 1 20 mencoder dvd://14 -dvd-device %1 %LANG_IDS% -oac mp3lame -lameopts br=%LAMEBR%:vol=%LAMEVOL% -ovc frameno %ENDPOS% -o frameno.avi
set prompt=$E[37;42m[$P]
priority 1 20 mencoder dvd://14 -dvd-device %1 %LANG_IDS% -sws 2 -oac copy -ovc lavc -lavcopts vcodec=%VCODEC%:vbitrate=%VBITRATE%:mbd=2:trell:v4mv:turbo:vpass=1 -vf crop=%CROP%,scale=%SCALE% %ENDPOS% -o NUL
set prompt=$E[37;41m[$P]
priority 1 20 mencoder dvd://14 -dvd-device %1 %LANG_IDS% -sws 2 -oac copy -ovc lavc -lavcopts vcodec=%VCODEC%:vbitrate=%VBITRATE%:mbd=2:trell:v4mv:turbo:vpass=2 -vf crop=%CROP%,scale=%SCALE% %ENDPOS% -o %MOVIENAME%14.avi

del frameno.avi
del divx2pass.log
set prompt=$E[37;44m[$P]
priority 1 20 mencoder dvd://15 -dvd-device %1 %LANG_IDS% -oac mp3lame -lameopts br=%LAMEBR%:vol=%LAMEVOL% -ovc frameno %ENDPOS% -o frameno.avi
set prompt=$E[37;42m[$P]
priority 1 20 mencoder dvd://15 -dvd-device %1 %LANG_IDS% -sws 2 -oac copy -ovc lavc -lavcopts vcodec=%VCODEC%:vbitrate=%VBITRATE%:mbd=2:trell:v4mv:turbo:vpass=1 -vf crop=%CROP%,scale=%SCALE% %ENDPOS% -o NUL
set prompt=$E[37;41m[$P]
priority 1 20 mencoder dvd://15 -dvd-device %1 %LANG_IDS% -sws 2 -oac copy -ovc lavc -lavcopts vcodec=%VCODEC%:vbitrate=%VBITRATE%:mbd=2:trell:v4mv:turbo:vpass=2 -vf crop=%CROP%,scale=%SCALE% %ENDPOS% -o %MOVIENAME%15.avi



del frameno.avi
del divx2pass.log

 
exit 

Hieronder volgt een batch voor 2-pass encoding met mp3lame:



REM DVDripMAPVar2pass.cmd
REM Sleep een DVD driveletter of MAP met VIDEO_TS DVD structuur
REM naar het programmaobject en rippen maar...
REM Plaats mencoder.exe en priority.exe wel in het pad. 


Rem gebruik endpos [min,seconden] om een test RIP te maken.

# ENDPOS=-endpos 5:00
SET MOVIENAME=Film
SET LANG_IDS=-aid 128 -sid 1

rem SET LAMEBR=128:cbr
SET LAMEBR=96:cbr
SET LAMEVOL=6
SET VCODEC=mpeg4
SET VBITRATE=1200

rem Kies een formaat (kleiner is in de praktijk fijner)

rem ##### 235:100 breedbeeld bioscoop ####
rem SET SCALE=704:304

rem ##### 16:9 breedbeeld ####
rem SET SCALE=704x3041024:576
rem SET SCALE=768:432
SET SCALE=512:288

rem ##### 4:3 televisie ####
rem SET SCALE=768:576
rem SET SCALE=704:528
rem SET SCALE=640:480
rem SET SCALE=384:288

rem Draai mplayer -crop en vul een waarde in
SET CROP=720:480:0:0

SET FFOURCC=-ffourcc XVID
SET PRIORITY=1 4

mode co100,60
q:
cd \

md var\rip\%MOVIENAME%2passmp3
cd var\rip\%MOVIENAME%2passmp3

del *.*
set > set.txt

set prompt=$E[37;44m[$P]
del frameno.avi 
priority 1 20 mencoder_lame dvd://1 -dvd-device %1 %LANG_IDS% -sws 2 -oac mp3lame -lameopts br=%LAMEBR%:vol=%LAMEVOL%:aq=9 -ovc lavc -lavcopts vcodec=%VCODEC%:vbitrate=%VBITRATE%:mbd=2:trell:v4mv:turbo:vpass=1 -vf crop=%CROP%,scale=%SCALE% %FFOURCC% -o %MOVIENAME%1.avi
priority 1 20 mencoder_lame dvd://1 -dvd-device %1 %LANG_IDS% -sws 2 -oac mp3lame -lameopts br=%LAMEBR%:vol=%LAMEVOL%:aq=2 -ovc lavc -lavcopts vcodec=%VCODEC%:vbitrate=%VBITRATE%:mbd=2:trell:v4mv:turbo:vpass=2 -vf crop=%CROP%,scale=%SCALE% %FFOURCC% -o %MOVIENAME%1.avi

del frameno.avi
ren divx2pass.log divx2pass1.log
set prompt=$E[37;42m[$P]

priority 1 20 mencoder_lame dvd://2 -dvd-device %1 %LANG_IDS% -sws 2 -oac mp3lame -lameopts br=%LAMEBR%:vol=%LAMEVOL%:aq=9  -ovc lavc -lavcopts vcodec=%VCODEC%:vbitrate=%VBITRATE%:mbd=2:trell:v4mv:turbo:vpass=1 -vf crop=%CROP%,scale=%SCALE% %FFOURCC% -o %MOVIENAME%2.avi
priority 1 20 mencoder_lame dvd://2 -dvd-device %1 %LANG_IDS% -sws 2 -oac mp3lame -lameopts br=%LAMEBR%:vol=%LAMEVOL%:aq=2  -ovc lavc -lavcopts vcodec=%VCODEC%:vbitrate=%VBITRATE%:mbd=2:trell:v4mv:turbo:vpass=1 -vf crop=%CROP%,scale=%SCALE% %FFOURCC% -o %MOVIENAME%2.avi

del frameno.avi
ren divx2pass.log divx2pass2.log
set prompt=$E[37;44m[$P]

rem Plaats hier bloks voor meer IFO en VOB bestanden

exit 



> Top <