7.8. Verwendung von MEncoder zum Erzeugen VCD/SVCD/DVD-konformer Dateien.

7.8.1. Formatbeschränkungen

MEncoder ist in der Lage, MPEG-Dateien im VCD-, SCVD- und DVD-Format durch Verwendung der libavcodec-Programmbibliothek zu erzeugen. Diese Dateien können danach im Zusammenhang mit vcdimager oder dvdauthor zum Erzeugen von Disks verwendet werden, die auf einem Standard Set-Top-Player abgespielt werden können.

Die Formate DVD, SVCD und VCD sind starken Beschränkungen unterworfen. Es ist nur eine kleine Auswahl an encodierten Bildgrößen und Seitenverhältnissen verfügbar. Wenn dein Film nicht bereits die Anforderungen erfüllt, musst du das Bild skalieren, zuschneiden oder schwarze Ränder hinzufügen, um es konform zu machen.

7.8.1.1. Formatbeschränkungen

FormatAuflösungV. CodecV. BitrateSamplerateA. CodecA. BitrateFPSSeitenverhältnis
NTSC DVD720x480, 704x480, 352x480, 352x240MPEG-29800 kbps48000 HzAC3,PCM1536 kbps (max)30000/1001, 24000/10014:3, 16:9 (nur für 720x480)
NTSC DVD352x240[a]MPEG-11856 kbps48000 HzAC3,PCM1536 kbps (max)30000/1001, 24000/10014:3, 16:9
NTSC SVCD480x480MPEG-22600 kbps44100 HzMP2384 kbps (max)30000/10014:3
NTSC VCD352x240MPEG-11150 kbps44100 HzMP2224 kbps24000/1001, 30000/10014:3
PAL DVD720x576, 704x576, 352x576, 352x288MPEG-29800 kbps48000 HzMP2,AC3,PCM1536 kbps (max)254:3, 16:9 (nur für 720x576)
PAL DVD352x288[a]MPEG-11856 kbps48000 HzMP2,AC3,PCM1536 kbps (max)254:3, 16:9
PAL SVCD480x576MPEG-22600 kbps44100 HzMP2384 kbps (max)254:3
PAL VCD352x288MPEG-11152 kbps44100 HzMP2224 kbps254:3

[a] Diese Auflösungen werden selten für DVDs verwendet, da sie von ziemlch niedriger Qualität sind.

Wenn ein Film ein 2.35:1 Seitenverhältnis hat (die meisten aktuellen Action-Filme), wirst du schwarze Ränder hinzufügen oder den Film auf 16:9 zuschneiden müssen, um eine DVD oder VCD herzustellen. Wenn du schwarze Ränder hinzufügst, versuche diese an 16-Pixel-Rändern auszurichten, um den Einfluß auf die Encodier-Performance zu minimieren. Zum Glück besitzen DVDs eine ausreichend hohe Bitrate, damit du dich nicht zu sehr um die Encodier-Effizienz sorgen musst. SVCD und VCD jedoch sind höchst mager an Bitrate und erfordern Aufwand, um akzeptable Qualität zu erreichen.

7.8.1.2. GOP-Größenbeschränkungen

DVD, VCD und SVCD zwingen dich auch zu relativ niedrigen GOP-Größen (Group of Pictures). Für Material mit 30 fps ist die größte erlaubte GOP-Größe 18. Für 25 oder 24 fps ist das Maximum 15. Die GOP-Größe wird mittels der Option keyint gesetzt.

7.8.1.3. Bitraten-Beschränkungen

VCD-Video muss bei CBR 1152 kbps sein. Zu dieser nach oben begrenzten Einschränkung kommt auch noch eine extrem niedrige vbv-Puffergröße von 327 Kilobit. SVCD erlaubt das Variieren der Video-Bitraten auf bis zu 2500 kbps, und eine etwas weniger restriktive vbv-Puffergröße von 917 Kilobit ist erlaubt. DVD-Video-Bitraten können sich bis auf irgendwo um die 9800 kbps einpegeln (wenngleich typische Bitraten etwa halb so groß sind), und die vbv-Puffergröße ist 1835 Kilobit.

7.8.2. Output-Optionen

MEncoder besitzt Optionen zur Kontrolle des Output-Formats. Durch das Verwenden dieser Optionen können wir ihn anweisen, den korrekten Dateityp zu erzeugen.

Die Optionen für VCD und SVCD werden xvcd und xsvcd genannt, weil sie erweiterte Formate sind. Sie sind nicht strikt Standard-konform, hauptsächlich weil der Output keine Scan-Offsets enthält. Wenn du ein SVCD-Image generieren musst, solltest du die Output-Datei dem vcdimager übergeben.

VCD:

-of mpeg -mpegopts format=xvcd

SVCD:

-of mpeg -mpegopts format=xsvcd

DVD (mit Zeitstempeln für jeden Frame, wenn möglich):

-of mpeg -mpegopts format=dvd:tsaf

DVD mit NTSC-Pullup:

-of mpeg -mpegopts format=dvd:tsaf:telecine -ofps 24000/1001

Dies erlaubt 24000/1001 fps progressive-Inhalt bei 30000/1001 fps encodiert zu werden, wobei die DVD-Konformität erhalten bleibt.

7.8.2.1. Seitenverhältnis

Der Parameter für das Seitenverhältnis von -lavcopts wird zum Encodieren des Seitenverhältnisses einer Datei verwendet. Während des Playbacks wird das Seitenverhältnis dazu benutzt, die korrekte Größe des Videos wieder herzustellen.

16:9 oder "Breitbild"

-lavcopts aspect=16/9

4:3 oder "Vollbild"

-lavcopts aspect=4/3

2.35:1 oder "Cinemascope" NTSC

-vf scale=720:368,expand=720:480 -lavcopts aspect=16/9

Um die korrekte Skalierungsgröße zu berechnen, verwende die erweiterte NTSC-Breite von 854/2.35 = 368

2.35:1 oder "Cinemascope" PAL

-vf scale=720:432,expand=720:576 -lavcopts aspect=16/9

Um die korrekte Skalierungsgröße zu berechnen, verwende die erweiterte PAL-Breite von 1024/2.35 = 432

7.8.2.2. Aufrechterhalten der A/V-Synchronisation

Um die Audio-/Video-Synchronisation während der kompletten Encodierung aufrechtzuerhalten, muss MEncoder Frames auslassen oder duplizieren. Dies funktioniert beim Muxen in eine AVI-Datei ziemlich gut, aber meist schlägt das Aufrechterhalten der A/V-Synchronisation mit anderen Muxern wie etwa MPEG garantiert fehl. Dies ist der Grund, weshalb es nötig ist, den harddup-Video-Filter am Ende der Filterkette anzuhängen, um diese Art Problem zu vermeiden. Du findest mehr technische Informationen zu harddup im Abschnitt Verbessern der Mux- und A/V-Synchronisationszuverlässigkeit oder in der Manpage.

7.8.2.3. Sampleraten-Konvertierung

Wenn die Audio-Samplerate in der Originaldatei nicht dieselbe wie die vom Zielformat angeforderte ist, wird eine Sampleraten-Konvertierung erforderlich. Dies wird erreicht, indem man die Option -srate und den -af lavcresample Audio-Filter zusammen anwedet.

DVD:

-srate 48000 -af lavcresample=48000

VCD und SVCD:

-srate 44100 -af lavcresample=44100

7.8.3. Verwenden des libavcodec zur VCD/SVCD/DVD-Encodierung

7.8.3.1. Einführung

libavcodec kann verwendet werden, um ein VCD/SVCD/DVD-konformes Video durch die Anwendung der passenden Optionen zu erzeugen.

7.8.3.2. lavcopts

Dies ist eine Liste von Feldern in -lavcopts, die du möglicherweise ändern musst, um einen für VCD, SVCD oder DVD konformen Film herzustellen:

  • acodec: mp2 für VCD, SVCD oder PAL DVD; ac3 wird am häufigsten für DVD verwendet. PCM-Audio kann auch für DVD verwendet werden, aber dies ist meistens eine riesen Platzverschwendung. Beachte, dass MP3-Audio nicht konform für irgendeines dieser Formate ist, aber Player haben oft ohnehin kein Problem, es abzuspielen.

  • abitrate: 224 für VCD; bis zu 384 für SVCD; bis zu 1536 für DVD, aber übliche Werte reichen von 192 kbps für Stereo bis 384 kbps für 5.1-Kanal-Sound.

  • vcodec: mpeg1video für VCD; mpeg2video für SVCD; mpeg2video wird gewöhnlich für DVD verwendet, man kann aber auch mpeg1video für CIF-Auflösungen verwenden.

  • keyint: Angewandt, um die GOP-Größe zu setzen. 18 für Material mit 30fps oder 15 für Material mit 25/24 fps. Kommerzielle Hersteller scheinen Keyframe-Intervalle von 12 zu bevorzugen. Es ist möglich, dies viel größer zu machen und dennoch die Kompatibilität zu den meisten Player zu behalten. Ein keyint von 25 sollte nie irgendwelche Probleme machen.

  • vrc_buf_size: 327 für VCD, 917 für SVCD und 1835 für DVD.

  • vrc_minrate: 1152 für VCD. kann für SVCD und DVD so gelassen werden.

  • vrc_maxrate: 1152 für VCD; 2500 für SVCD; 9800 für DVD. Für SVCD und DVD könntest du niedrigere Werte verwenden, abhängig von deinen persönlichen Vorlieben und Anforderungen.

  • vbitrate: 1152 für VCD; bis zu 2500 für SVCD; bis zu 9800 für DVD. Für letztere zwei Formate sollte vbitrate basierend auf persönliche Vorlieben gesetzt werden. Zum Beispiel, wenn du darauf bestehst, 20 Stunden oder so passend auf eine DVD zu bringen, könntest du vbitrate=400 benutzen. Die sich daraus ergebende Video-Qualität würde womöglich äußerst mies. Wenn du versuchst, die maximal mögliche Qualität auf eine DVD zu quetschen, nimm vbitrate=9800, aber sei gewarnt, dass dich dies zu weniger als einer Stunde Video auf einer Single-Layer DVD zwingen würde.

  • vstrict: vstrict=0 sollte verwendet werden, um DVDs zu erstellen. Ohne diese Option erzeugt MPlayer einen Stream, der von manchen standalone DVD-Playern nicht korrekt decodiert werden kann.

7.8.3.3. Beispiele

Dies ist eine typische Zusammenstellung von mindestens zu verwendenden -lavcopts-Optionen zum Encodieren eines Videos:

VCD:

-lavcopts vcodec=mpeg1video:vrc_buf_size=327:vrc_minrate=1152:\
vrc_maxrate=1152:vbitrate=1152:keyint=15:acodec=mp2

SVCD:

-lavcopts vcodec=mpeg2video:vrc_buf_size=917:vrc_maxrate=2500:vbitrate=1800:\
keyint=15:acodec=mp2

DVD:

-lavcopts vcodec=mpeg2video:vrc_buf_size=1835:vrc_maxrate=9800:vbitrate=5000:\
keyint=15:vstrict=0:acodec=ac3

7.8.3.4. Erweiterte Optionen

Für das Encodieren höherer Qualität könntest du auch qualitätssteigernde Optionen an lavcopts anfügen, wie etwa trell, mbd=2 und weitere. Beachte, dass qpel und v4mv, obwohl oft bei MPEG-4 nützlich, nicht auf MPEG-1 oder MPEG-2 anwendbar sind. Außerdem, wenn du versuchst, eine sehr hochwertige DVD-Encodierung zu machen, kann es nützlich sein, dc=10 an lavcopts anzufügen. Wobei dies helfen könnte, das Auftreten von Blöcken in fahl-farbenen Bereichen zu reduzieren. Zusammenfassend ist dies ein Beispiel einer Zusammenstellung von lavcopts für für eine höherwertige DVD:

-lavcopts vcodec=mpeg2video:vrc_buf_size=1835:vrc_maxrate=9800:vbitrate=8000:\
keyint=15:trell:mbd=2:precmp=2:subcmp=2:cmp=2:dia=-10:predia=-10:cbp:mv0:\
vqmin=1:lmin=1:dc=10:vstrict=0

7.8.4. Encodieren von Audio

VCD und SVCD unterstützen MPEG-1 Layer II Audio, indem sie einen MP2-Encoder von toolame, twolame, oder libavcodec verwenden. Der libavcodec MP2 ist weit davon entfernt, so gut zu sein wie die anderen zwei Bibliotheken, dennoch sollte er immer verfügbar sein. VCD unterstützt nur Audio mit konstanten Bitraten (CBR) wogegen SVCD auch variable Bitraten (VBR) unterstützt. Sei vorsichtig, wenn du VBR benutzt, weil einige schlechte Standalone-Player diese nicht so gut unterstützen könnten.

Für DVD-Audio wird der AC3-Codec von libavcodec verwendet.

7.8.4.1. toolame

Für VCD und SVCD:

-oac toolame -toolameopts br=224

7.8.4.2. twolame

Für VCD und SVCD:

-oac twolame -twolameopts br=224

7.8.4.3. libavcodec

Für DVD mit 2-Kanal-Sound:

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

Für DVD mit 5.1-Kanal-Sound:

-channels 6 -oac lavc -lavcopts acodec=ac3:abitrate=384

Für VCD und SVCD:

-oac lavc -lavcopts acodec=mp2:abitrate=224

7.8.5. Zusammenfassung

Diese Sektion zeigt einige komplette Befehle zum Erzeugen von VCD/SVCD/DVD-konformen Videos.

7.8.5.1. PAL DVD

mencoder -oac lavc -ovc lavc -of mpeg -mpegopts format=dvd:tsaf -vf scale=720:576,\
harddup -srate 48000 -af lavcresample=48000 -lavcopts vcodec=mpeg2video:\
vrc_buf_size=1835:vrc_maxrate=9800:vbitrate=5000:keyint=15:vstrict=0:acodec=ac3:\
abitrate=192:aspect=16/9 -ofps 25 \
-o movie.mpg movie.avi

7.8.5.2. NTSC DVD

mencoder -oac lavc -ovc lavc -of mpeg -mpegopts format=dvd:tsaf -vf scale=720:480,\
  harddup -srate 48000 -af lavcresample=48000 -lavcopts vcodec=mpeg2video:\
  vrc_buf_size=1835:vrc_maxrate=9800:vbitrate=5000:keyint=18:vstrict=0:acodec=ac3:\
  abitrate=192:aspect=16/9 -ofps 30000/1001 \
  -o movie.mpg movie.avi

7.8.5.3. PAL AVI mit enthaltenem AC3 Audio nach DVD

Hat die Quelle bereits AC3-Audio, nimm -oac copy anstatt es erneut zu encodieren.

mencoder -oac copy -ovc lavc -of mpeg -mpegopts format=dvd:tsaf -vf scale=720:576,\
  harddup -lavcopts vcodec=mpeg2video:vrc_buf_size=1835:vrc_maxrate=9800:\
  vbitrate=5000:keyint=15:vstrict=0:aspect=16/9 -ofps 25 \
  -o movie.mpg movie.avi

7.8.5.4. NTSC AVI mit AC3-Ton nach DVD

Hat die Quelle bereits AC3-Audio und ist NTSC @ 24000/1001 fps:

mencoder -oac copy -ovc lavc -of mpeg -mpegopts format=dvd:tsaf:telecine \
  -vf scale=720:480,harddup -lavcopts vcodec=mpeg2video:vrc_buf_size=1835:\
  vrc_maxrate=9800:vbitrate=5000:keyint=15:vstrict=0:aspect=16/9 -ofps 24000/1001 \
  -o movie.mpg movie.avi

7.8.5.5. PAL SVCD

mencoder -oac lavc -ovc lavc -of mpeg -mpegopts format=xsvcd -vf \
  scale=480:576,harddup -srate 44100 -af lavcresample=44100 -lavcopts \
  vcodec=mpeg2video:mbd=2:keyint=15:vrc_buf_size=917:vrc_minrate=600:\
  vbitrate=2500:vrc_maxrate=2500:acodec=mp2:abitrate=224 -ofps 25 \
  -o movie.mpg movie.avi

7.8.5.6. NTSC SVCD

mencoder -oac lavc -ovc lavc -of mpeg -mpegopts format=xsvcd  -vf \
  scale=480:480,harddup -srate 44100 -af lavcresample=44100 -lavcopts \
  vcodec=mpeg2video:mbd=2:keyint=18:vrc_buf_size=917:vrc_minrate=600:\
  vbitrate=2500:vrc_maxrate=2500:acodec=mp2:abitrate=224 -ofps 30000/1001 \
  -o movie.mpg movie.avi

7.8.5.7. PAL VCD

mencoder -oac lavc -ovc lavc -of mpeg -mpegopts format=xvcd -vf \
  scale=352:288,harddup -srate 44100 -af lavcresample=44100 -lavcopts \
  vcodec=mpeg1video:keyint=15:vrc_buf_size=327:vrc_minrate=1152:vbitrate=1152:\
  vrc_maxrate=1152:acodec=mp2:abitrate=224 -ofps 25 \
  -o movie.mpg movie.avi

7.8.5.8. NTSC VCD

mencoder -oac lavc -ovc lavc -of mpeg -mpegopts format=xvcd -vf \
  scale=352:240,harddup -srate 44100 -af lavcresample=44100 -lavcopts \
  vcodec=mpeg1video:keyint=18:vrc_buf_size=327:vrc_minrate=1152:vbitrate=1152:\
  vrc_maxrate=1152:acodec=mp2:abitrate=224 -ofps 30000/1001 \
  -o movie.mpg movie.avi