Anzeige:
Ergebnis 1 bis 9 von 9

Thema: Videokonvertierung unter Linux

  1. #1
    User
    Registriert seit
    May 2001
    Beiträge
    8.688

    Videokonvertierung unter Linux

    Ich werde hier einige Teil HowTos posten. Es geht zunächst darum aus einem beliebigen File mit einem beliebigen Format einen veränderten File mit möglicherweise anderem Format und anderer Auflösung zu machen. Vor allem auf das Endziel VideoCD möchte ich eingehen weil man Filme ja am besten am Fernseher anschauen sollte.

    Zunächst beschreibe ich welche Software und was für Hardware benötigt wird. Danach geht es erstmal um die Theorie wo ich auf die Funktionsweise von Transcode eingehe und darauf was man bei einer VideoCD beachten muss. All dies soll an ein paar Beispielen demonstriert werden.


    Bei Problemen mit diesem HowTo öffnet bitte einen Thread im Bereich Fernsehen. Bei Fehlern bitte eine PN an mich.
    Geändert von hunter (28.10.02 um 07:44 Uhr)

  2. #2
    User
    Registriert seit
    May 2001
    Beiträge
    8.688

    Hardware und Software

    Vorraussetzungen (Hardware):

    Für die Berechnungen benötigt man eine schnelle CPU und eine Menge RAM. Ich schätze so ab 500 Mhz und mindestens 64 MB sollte man klar kommen. Je langsamer euer System aber ist, desto länger wird es beim umrechnen natürlich dauern.

    Desweiteren benötigt ihr noch ausreichend Festplattenspeicher. Beispielrechnung:

    Ein Avifile von CD kann bis zu 700 MB haben. Die daraus entstehenden Bild und Ton Files können dann zusammen bis zu 1800 MB gross werden. Das überträgt sich dann natürlich auch auf die daraus entstehenden Mpeg Files. Und dann kommen noch die Images dazu die noch mal um ein paar MB größer sein können. Optimal wären also so 7 GB.

    Es geht aber natürlich auch mit weniger, wenn man die verarbeiteten Files gleich löscht wenn man die nächste Stufe erzeugt hat. Dann sollten 3 GB ausreichen. Wenn aber was schief gegangen ist, könnt ihr nicht auf die Vorstufe zurück greifen und müsst wieder neu anfangen.


    Vorraussetzungen (Software):

    Die Software könnt ihr teilweise auch per RPMs installieren. Ich empfehle dies aber nur wenn das selbst compilieren nicht möglich ist ! Mögliche Anlaufstellen:

    http://freshrpms.net/
    http://www.rpmfind.net



    Folgende Programme werden benötigt:

    Avifile -> http://freshmeat.net/projects/avifile/
    MPlayer -> http://freshmeat.net/projects/mplayer/
    MJpegtools -> http://freshmeat.net/projects/mjpeg/
    Mpeg2Dec -> http://download.sourceforge.net/mjpeg/
    Transcode -> http://freshmeat.net/projects/transcode/
    VCDImager -> http://freshmeat.net/projects/vcdimager/
    cdrdao -> http://freshmeat.net/projects/cdrdao/

    Das ganze in den folgenden Versionen (Vorschläge):

    Avifile ab 0.7.15 (0.7.16 kann Probleme machen !!!)
    MPlayer ab Version 0.90pre 8
    MJpegtools ab Version 1.60
    Mpeg2Dec ab Version 0.7
    Transcode ab Version transcode-0.6.1
    VCDImager ab Version 0.7.12
    cdrdao ab Version 1.1.7

    Weitere nützliche Software:

    Um später die erzeugten Files mal testen zu können bzw. sie richtig abspielen zu können solltet ihr eventuell noch zwei weitere Videoplayer installieren:

    Xine -> http://xine.sourceforge.net/
    Wer es selbst compilieren möchte: http://www.linuxforen.de/forums/show...threadid=26165

    VideoLanClient (VLC) -> http://freshmeat.net/projects/vlc/

    Vorbereitung auf Transcode 0.6.2 !!!

    Transcode 0.6.2 wird import_ffmpeg beherrschen. Die Pre Version kann dies bereits. Daher solltet ihr auch schon mal ffmpeg compilieren:

    http://freshmeat.net/projects/ffmpeg/ (CVS Version !!!)


    Installation:

    Dies soll keine Anleitung werden wie ihr diese Programme installieren müsst. Das wäre sehr aufwendig zu beschreiben und soll auch nicht Hauptgegenstand dieser HowTo sein. Daher hier nur eine kurze Anleitung, wie sie bei mir funktioniert hat:

    1. Avifile solltet ihr einfach per ./configure, make und make install (bzw. checkinstall) compilieren und installieren können. Achtet darauf das die Codecs für DivX 3 und DivX 4/5 installiert sind und erkannt wurden. Diese gibt es ebenfalls auf der Homepage von Avifile zum Download.

    2. MPlayer kann man mit einem Compiler 2.95.X oder 3.X+ sehr gut selbst compilieren. Dabei sollten bei ./configure am besten möglichst alle Optionen aktiviert werden. Zumindest wenn sie etwas mit Avis oder Mpeg zu tun haben. Falls noch was fehlt, dann installiert es nach und führt ./configure erneut aus. Danach mit "make" compilieren und per "make install" bzw. "checkinstall" installieren. Hier sollten die selben Codecs installiert sein wie auch schon bei Avifile.

    Anmerkung: Ich persönlich hatte mit der selbst compilierten Version Probleme und habe dafür ein RPM benutzt. Das klappte ohne Probleme und hatte alle benötigten Optionen.

    3. MJpegtools sollte sich auch selbst compilieren lassen. Das bringt Vorteile weil hier die Encoder drin sind, die nachher den Hauptteil der Arbeit machen werden. Auch hier wieder das selbe Spielchen wie beim MPlayer und Aviplay.

    Anmerkung: Sollte es beim compilieren unüberwindbare Probleme geben, so kann auch ein RPM von der Homepage runter geladen und installiert werden. Ihr solltet dann mjpegtools und mjpegtools-devel installieren. Das wird euch etwas Performance kosten, sollte aber funktionieren und trotzdem noch ausreichend schnell sein.

    4. Mpeg2Dec solltet ihr einfach compilieren und installieren können. Einfach entpacken und mit ./configure, make, make install compilieren und installieren.

    5. Transcode müsst ihr nun aber auf jeden Fall selbst compilieren. Von einem RPM rate ich dringend ab, weil Transcode noch viel mehr Optionen hat und diese meist alle relevant sind.

    ./configure sollte am Ende fast alle Optionen anzeigen. Falls nicht, dann müsst ihr euch das Restliche noch nachinstallieren und ./configure dann erneut ausführen. Ausser der Option MPlayer sollte alles auf Yes stehn. Ogg Vorbis ist experimental auch mit dabei, wird aber auch nicht unbedingt gebraucht. Wer Quicktime nicht braucht, der kann auch das weglassen, da der häufig verwendete Sorenson Codec ohnehin nicht funktionieren wird.

    Danach make und make install bzw. checkinstall.

    6. VCDImager sollte nach dem gleichen Muster, aber sehr einfach zu compilieren sein.

    7. cdrdao könnt ihr euch selbst compilieren oder per Paket installieren.


    8. Xine könnt ihr als RPMs über Links von der Homepage bekommen. Es lohnt sich aber durchaus es nach meiner Anleitung selbst zu compilieren.

    9. Für VLC beachtet bitte die beiliegende Dokumentation.


    10. Wenn ihr den ffmpeg Snapshot gesaugt habt, entpackt ihn wie gewohnt. Führt dann erst einmal ein "./configure" aus und schaut euch die Liste an. Einige Optionen werden Enabled und andere Disabled sein. Überlegt euch ob das was da Aus geschaltet ist nicht doch bei euch installiert ist und führt dann ein "./configure --help" aus. Meine Zeile sah z.B. so aus:

    ./configure --enable-a52bin --enable-mp3lame --enable-vorbis

    Setzt also vorraus das Ogg Vorbis, liba52 bzw. a52dec und die libmp3 installiert sind. Danach make und make install bzw. checkinstall ausführen.

    Anmerkung: Ab Transcode 0.6.2 könnt ihr es dann als Videodecoder verwenden. Audio macht aber wohl noch Probleme. Also z.B. -x ffmpeg,af6 benutzen. Das ist schneller als af6,af6 oder mplayer,mplayer. Was das bedeutet erfahrt ihr weiter unten.


    Wenn das alles funktioniert hat, dann habt ihr die alle benötigte Software auf dem Rechner.
    Geändert von hunter (19.01.03 um 14:29 Uhr)

  3. #3
    User
    Registriert seit
    May 2001
    Beiträge
    8.688

    Theorie

    Im folgenden wird nun beschrieben wie das umwandeln eines Videofiles im Grunde funktioniert und welche Schritte dafür notwendig sind. Dabei möchte ich mich hier hauptsächlich auf die Variante DivX -> VCD konzentirieren. Hierbei sind besondere Einstellungen für Bild und Ton notwendig damit der DVD Player sie später abspielen kann. Bei einem DivX -> DivX (mit z.B. anderer Auflösung) ist das nicht relevant, da könnt ihr alles frei wählen. Die Befehle sind aber exakt die gleichen.


    Um aus einem beliebigen Format eine VCD oder eine SVCD zu machen Bedarf es nicht einfach eines simplen Konvertierungstools sondern da steckt schon etwas mehr dahinter. Im folgenden werde ich daher nun erst einmal erklären was der Unterschied zwischen einem beliebigen Videofile und einer VCD ist.

    Wichtige Anmerkung: Nicht alle DVD Player können auch selbst gebrannte VideoCDs abspielen, selbst dann nicht wenn sie der VCD Norm entsprechen. Wenn ihr also nicht sicher seit das es geht, solltet ihr euch vorher im Internet informieren: http://www.vcdhelp.com

    Wer sich erst noch einen Player kaufen will, bekommt mittlerweile schon eine große Auswahl an Playern die VCD, CD-R und CD-RW abspielen können. Sowas gibts schon für um die 100 Euro. Achtet aber darauf das diese Foramte als unterstützt angegeben werden und lest euch im Internet Berichte zu dem Gerät durch. Die VCDs die man mit Transcode erzeugen kann haben eine gute Qualität, so das sich das ansehen auf dem Fernseher in der Regel auf jeden Fall lohnt.


    Ein Videofile ist ein Container, welcher im wesentlichen Bild und Tondaten enthält. Diese sind jeweils in einem bestimmten Format gespeichert und zwar mit einem bestimmten Codec. Diese unterscheiden sich von größe Leistung und Qualität. Im folgenden ein paar bekannte Beispiele:

    Videoformate: Avi, Mpeg, Quicktime, WMV, Realplay
    Videocodecs: DivX (3 - 5), Mpeg4, Sorenson
    Audiocodecs: Mp2, Mp3

    Eine VCD beherrscht nur ganz bestimmte Formate. Daher müssen diese entsprechend angepasst werden. Für einen Avifile mit DivX müsste also folgendes verändert werden:

    DivX -> Mpeg (VCD) oder Mpeg2 (SVCD)
    Mp3 -> Mp2
    beliebige Auflösung -> z.B. 480 x 576 (SVCD) oder 352x288 (VCD)
    beliebiger Ton -> z.B. 192 KBps (SVCD) oder 224 KBps (VCD)

    Eine besondere Aufmerksamkeit sollte da auf die Auflösung fallen. Ein Film von 400 x 300 hat ein Verhältniss von 4:3. Beim anpassen auf 480x576 würde die Breite um 80 zunehmen, bei der Höhe um 276. es ist wohl leicht einzusehen das das Bild dann ziemlich verzerrt aussehen würde.

    Also wäre z.B. ein Format von 480 x 400 besser. Dies kann man tun, aber dann würde es ja nicht mehr dem VCD Standard entsprechen und wäre nicht auf einem DVD Player abspielbar. Also ersetzt man den fehlenden Teil des Bildes einfach durch schwarze Ränder die ein fester Bestandteil des Films werden. Also 576 - 400 => 176 / 2 = 88 pro Rand (einer oben, einer unten).

    Transcode benutzt nun einen Decoder um die Eingangsdatei (z.B. AVI) zu decodieren und das Bild und den Ton in einer Temprärdatei abzulegen. Zeitgleich werden Encoder verwendet welche eine Bild und eine Tondatei erzeugen welche nun das richtige Format und die richtige Auflösung haben. Anschließend fügt man Bild und Ton zusammen und erhält den fertigen File. Das kann ein neues Avi sein, oder auch ein Mpeg oder was immer man daraus machen will und die Encoder können.

    Hat man die Bedingungen für eine VCD erfüllt, so hat man dann ein VCD kompatibles Mpeg, das zu einer VCD weiter verarbeitet werden kann. Dieses wandelt man dann per VCDImager in einen .cue und .bin File um. Das sind Images die gebrannt werden können und die einige zusätzliche Daten enthalten, damit der DVD Player die VCD abspielen kann. Brennen im DAO Modus geht am besten mit cdrdao.


    Abhängig von dem Eingangsfile, eurem Rechner und den Berechnungen die notwendig sind, dauert das berechnen zwischen einigen Minuten und einigen Stunden bis hin zu 10 Stunden. Das kommt ganz darauf an was ihr macht und wie groß der zu bearbeitende File ist.
    Geändert von hunter (18.01.03 um 23:13 Uhr)

  4. #4
    User
    Registriert seit
    May 2001
    Beiträge
    8.688

    Praxis

    Erst mal vorne weg, all diese Programme sind Konsolenprogramme für die es zwar auch GUIs gibt, die aber nicht alles können was die Programme selbst können. Ich möchte hier auch gar keine Zeit darauf verschwenden denn wer weis was gemacht werden muss, der wird nach einiger Erfahrung einsehen das der Syntax in Wirklichkeit sehr einfach ist. Zudem wird er hier Schritt für Schritt erklärt.

    Anmerkung: Dieser Text beschreibt wie das bearbeiten mit Transcode funktioniert. Diese Zeilen kann man aber auch in ein Script packen und nur dieses dann mit einem Editor modifizieren. Das erleichtert einem die Arbeit. Mehr dazu weiter unten.


    Ein typischer Befehl sieht so aus:

    transcode -i Eingangsfile -x Decoder -o Ausgangsfile -V -y videoencoder,audioencoder -B höhe,breite,faktor -X höhe,breite,faktor -j oben,rechts,unten,links -F "Video Encoder Optionen" -"Audio Encoder Optionen"

    Nun geh ich mal der Reihe nach durch was das bedeutet:

    -i Eingangsfile -> Das ist der File den wir als bearbeiten wollen. Zum Beispiel ein DivX 5 Avi File

    -x Decoder -> Dieser Decoder ist liest den Eingangsfile aus und wandelt ihn in ein allgemein verständliches Format um, das weiter verarbeitet werden kann

    Mögliche Decoder sind z.B. mplayer oder aviplay

    -V -> Diese Option legt fest das ein .yuv File als temböräre Datei angelegt werden soll, in der der Decoder die decodierten Daten ablegt

    Wichtig: Sollte es Probleme wie verfärbungen geben, so kann das mit dem Encoder zusammen hängen. Ersetzt dann mal das -V durch -k. Dann wird eine Farbkorrektur vorgenommen und euer Problem möglicherweise gelöst.

    -y videoencoder,audioencoder -> Bei ausreichender Rechnerleistung macht es Sinn den .yuv File sofort wieder auszulesen und mit den Encodern für Bild und Ton sofort weiter zu verarbeiten

    Mögliche Video Encoder sind z.B. mpeg2enc, mpeg, divx5

    Mögliche Audio Encoder sind z.B. mp2enc, toolame, divx5

    -B höhe,breite,faktor -> Das verkleinert das Bild und zwar um Höhe mal Faktor und Breite mal Faktor

    -X höhe,breite,faktor -> Das vergrößert das Bild und zwar um Höhe mal Faktor und Breite mal Faktor

    -j oben,rechts,unten,links -> Fügt die Ränder hinzu oder zieht sie ab. Negative Zahlen bedeuten: Rand hinzufügen, positive Rand wegnehmen. Bei normalen Fimen ohne Rand fügt man mit negativen Zahlen nur einen Rand hinzu. Hat der Eingangsfilm aber schon einen Rand den man loswerden möchte, benutzt man positive Zahlen.

    -F "Video Encoder Optionen" -> Das sind Option für den Videoencoder. Welche Optionen möglich sind entnimmt man der Manpage.

    -E -> Audio Samplerate ist in der Regel immer 44.1 kHz.

    -b -> Die Audio Bittrate ist in der Regel 224 für VCDs und mindestens 192 für SVCDs. Für andere Formate kann man sie frei wählen. 128 - 192 ist dann meist ein akzeptabler Wert.


    So, nun habt ihr den allgemeinen Syntax mit dem ihr den Film bearbeiten könnt. Jetzt bleibt nur noch die Frage woher ihr wisst was für die Parameter einsetzen sollt:

    Decoder:

    Es gibt viele verschiedene Decoder. Sie unterscheiden sich in den unterstützten Formaten und in ihrer Geschwindigkeit. Besonders hervorzuheben sind die externen Decoder Mplayer und Avifile. Sie werden mit mplayer und af6 in den Optionen benutzt:

    -x mplayer,mplayer (Mplayer als Decoder für Bild und Ton)

    -x af6,af6 (Avifile als Decoder für Bild und Ton)

    Für eine komplette Liste, gebt ein: ls /usr/local/lib/transcode/imp*


    Encoder (Video):

    Ein sehr guter Videoencoder für Mpeg1 und 2 ist "mpeg2enc". Für DivX kann "divx5" benutzt werden.

    Encoder (Audio):

    Man kann den "mp2enc" benutzen. Der erzeugt eine gute Qualität. Etwas schneller ist "Toolame". Allerdings ist bei manchen Files der Ton dann etwas daneben. Für DivX benutzt man meist ebenfalls den "divx5" Encoder.

    Liste der Encoder: ls /usr/local/lib/transcode/exp*

    Video und Audioencoder müssen da natürlich unterschieden werden.

    Die Option sähe dann so aus:

    -y mpeg2enc,mp2enc bzw. -y mpeg2enc,toolame (für Mpeg 1 oder 2 bzw. VCD)

    -y divx5,divx5 (für DivX)


    Optionen (Video):

    -B und -X vergrößern oder verkleinern das Bild. Es ist möglich beide Optionen zugleich einzusetzen. Das macht aber nur Sinn wenn Höhe oder Breite abwechselnd jeweils Null sind.

    Achtung: Euch sollte klar sein wie die Rechnung funktioniert. Es gibt aber ein Script das ihr euch runter laden und dann nach /usr/bin/ zoomto kopieren könnt. chmod +x /usr/bin/zoomto macht es ausführbar.

    Link: http://tibit.org/video/zoomto.sh

    Benutzung: zoomto BreitexHöhe neueBreitexneueHöhe

    Als Ergebnis wird er euch Sinnvolle Werte für j, B und X ausgeben.


    Beispiel: -B h,0,f -X 0,b,f

    Die Faktoren h,b und f müssen wir nun erst mal berechnen. Dies mach man so:

    "Mplayer xyz.avi" und dann den Film abspielen. In der Konsole sollte dann eine Zeile auftauchen aus der die Auflösung hervor geht. Als Beispiel nehmen wir hier mal 640x480 an.

    Das Endformat soll 480x576 sein, also das Format für eine SVCD (288x352 wäre VCD):

    Rechnung:

    640 - 480 -> 160 verkleinern
    480 - 576 -> 96 vergrößern

    Das müssen wir noch mit einem Faktor verrechnen und zwar mit 8, 16 oder 32.

    160 = 5 x 32 = 10 x 16 = 20 x 8
    96 = 3 x 32 = 6 x 16 = 12 x 8

    In diesem Fall kommt man mit allen Faktoren auf eine ganze Zahl und kann sich daher aussuchen was man nimmt.

    -> -B 5,0,32 -X 0,12,8

    Das Ergebnis ist dann das gewünschte Format von 480x576. Aber ich hatte ja schon angesprochen das eine zu große Verzerrung des Bildes dazu führen kann das es sofort auffällt das das Format nicht ganz stimmt. In dem Fall müssen nun schwarze Ränder eingefügt werden.

    Knüpfen wir nun an das vorrangegangene Beispiel an und vergrößern die Höhe nicht um 96 sondern nur um 56. Dementsprechend ist dann das Endformat: 480x536. Es fehlen also 40 zur korrekten Größe.

    Rechnung:

    480 + 56 -> 536 (resultierendes Format)
    536 - 576 = 40 (fehlende Höhe)
    40 / 2 = 20 (Höhe für einen schwarzen Rand)

    Logischerweise packt man einen Rand nach unten und einen nach oben. Die resultierende Option lautet dann:

    -j -20,0,-20,0

    Im gesamten dann also: -B 5,0,32 -X 0,7,8 -j -20,0,-20,0

    Damit hat der Film nun das richtige Format und eine passende Auflösung.


    Das Script meint dazu: zoomto 640x480 480x576

    Multiples of 32: -X 3,0,32 -B 0,5,32
    Multiples of 16: -X 6,0,16 -B 0,10,16
    Multiples of 8: -X 12,0,8 -B 0,20,8

    -Y bedeutet im übrigen nur das die Ränder während des encodens eingefügt werden.

    Es bleibt euch überlassen ob ihr euch auf das Script verlasst oder selbst rechnet


    Encoder Optionen:

    Mittels "man mpeg2enc" kann man nun nachlesen was der Videoencoder noch für Optionen beherrscht. Ich greife mal einige herraus mit denen ihr höchstwahrscheinlich immer arbeiten werdet:

    -F 4,"-S 792 -B 260 -V 230"

    Das -F bedeutet das jetzt Optionen kommen die dem Encoder übergeben werden sollen. Die Zahl vor dem Komma steht für ein Standard Format. 4 ist SVCD, 3 ist VCD und 5 ist eine eigene Definition. Für gute Filme solltet ihr immer 4 = SVCD nehmen. Für einfachere Filme reicht 3 = VCD.

    In den Anführungszeichen stehen nun Encoder spezifische Optionen:

    -S 792 bedeutet das er den File am Ende in jeweils 792 MB Mpegs zerlegen soll. Das passt dann genau auf eine 700 MB CD. Der Grund ist das ein normaler Rohling 700 MB für Daten verwenden kann und den Rest für Fehlerkorrekturen benutzt. Das fällt aber bei SVCDs und VCDs weg. Dementsprechend können 792 MB benutzt werden.

    Die genaue Funktion der einzelnen möglichen Optionen müsst ihr der jeweiligen Hilfe oder Man Page des Encoders entnehmen.


    Sound Optionen:

    Der Sound ist relativ einfach. In der Regel nimmt man immer eine Samplerate von 44.1 kHz und eine Bitrate von 192 bei SVCD und 224 bei VCD. Also:

    VCD -> -E 44100 -b 224
    SVCD -> -E 44100 -b 192


    Nun könnt ihr Format, Auflösung und den Sound bearbeiten und somit fast jedes beliebige Filmformat erzeugen.


    Anmerkung: Um erst mal nur zu testen oder um nur bestimmte Teile eines Films zu bearbeiten ist die Option -c da. Diese sollte am besten hinter den Encoder Optionen platziert werden.

    Syntax: -c f1-f2 f3-f4 ...

    Beispiel 1: Encodern der ersten 5 Minuten eines Films: -c 1-7500

    Beispiel 2: Film habe 10 Minuten. Von Minute 5 - 6 ist ein Werbeblock, der raus soll: -c 1-7500 9000-15000

    Erklärung: 25 Bilder pro Sekunde mal 60 Sekunden mal X Minuten => 7500 Frames (Bsp.1)

    Wenn ihr die Zeit nicht so genau ermitteln könnt dann könnt ihr auch den MPlayer per Konsole starten. Dann zeigt er wärend des abspielens den aktuellen Frame an. Durch drücken von "P" stoppt er den Film und ihr könnt die Zahl in der Konsole einfach ablesen. Um festzustellen welcher der letzte Frame ist einfach bis zum Ende gehen. Mplayer stoppt dann bzw. beendet sich. In der Konsole steht dann der letzte Frame.


    Erzeugen des Endfiles:

    Die Encoder erzeugen einen Bild und einen Tonfile. Das zusammenfügen des neuen Files, macht man am besten mit Hilfe der mjpegtools:

    mplex -f 4 -o Ausgang_%d.mpg Eingang1.m2v Eingang2.mpa

    Anmerkung: Sollten fehler kommen dann probiert es mal so: mplex -f 4 -b 230 -o Ausgang_%d.mpg Eingang1.m2v Eingang2.mpa

    Eventuell muss mpa durch mp2 ersetzt werden. Das ist davon abhängig welchen Audioencoder man benutzt hat.

    Mplex wird sich an der -S 792 Option orientieren und den File genau da enden lassen. Dafür steht dann auch das _%d. Dieses wird beim encoden dann einfach durch die Nummer des Mpegs ersetzt.

    Die Option -f 4 steht wieder für SVCD. -f 1 steht für VCD. Das ist davon abhängig was ihr bei Transcode angegeben habt.

    Anmerkung: Ihr müsst den File beim encoden schon aufteilen lassen. Wenn ihr den mpeg erst später aufteilt, so werden im zweiten File wichtige Informationen fehlen und das erzeugen einer VCD wird scheitern !!! Bei Files die NICHT VCDs werden sollen ist das egal. Die könnt ich aufteilen wie immer ihr wollt.

    Nach beenden des zusammen fügen könnt ihr das Video mal mit mplayer oder Xine überprüfen.


    Erzeugen eines Image (für VCD oder SVCD):

    Ein Image für eine VCD macht man nun mit vcdimager:

    VCD: vcdimager 1.mpg
    SVCD: vcdimager -t svcd 1.mpg

    Es sind auch mehrere Tracks auf einer CD möglich:

    vcdimager -t svcd 1.mpg 2.mpg 3.mpg ...

    Ihr könnt auch den Namen des Ausgangsfiles usw. festlegen. Das könnt ihr einfach unter "vcdimager --help" nachlesen.


    Brennen des Images (weiter unten gibt es Scripte zum vereinfachen des brennens !!!):

    Der letzte Schritt ist nun das Image auf einen Rohling zu brennen. Dazu nimmt man am besten cdrdao. Voraussetzung ist das der Brenner DAO Modus beherrscht und von cdrdao unterstützt wird. Eine Liste findet ihr auf der HP.

    cdrdao write --device 1,0,0 --driver generic-mmc --buffers 64 Image.cue

    Der korrekte Driver ist auf der Homepage nachzulesen. In der Regel sind es immer generic-mmc-raw oder generic-mmc.

    Das richtige Device des Brennes kann man mit "cdrecord -scanbus" ermitteln.

    Schlussbemerkungen:

    Wenn die VCD dann fertig gebrannt ist könnt ihr sie mal in eurem DVD Player ausprobieren. Wenn ihr alles richtig gemacht habt, dann sollte sie laufen. Eventuell seht ihr dann von nahen die vielen Fehler die der DivX Codec manchmal hat. Wenn ihr aber auf normalen Abstand zum Fernseher geht, dann sollten diese Fehler nicht mehr zu sehen sein.

    Ein DivX hat nun mal keine DVD Qualität und das Vergrößern des Films macht es sogar noch etwas schlimmer. Aber bei ausreichenden Abstand ist das Auge nicht mehr in der Lage die Fehler zu sehen und der Film bekommt perfekte Qualität.

    Was anderes ist es natürlich wenn ihr einen Film mit hoher Qualität genommen habt. Dann sollte die Qualität weitgehend erhalten bleiben.

    So, jetzt lasst eure Kiste mal rechnen und dann viel Spass beim Video gucken.
    Geändert von hunter (21.09.03 um 09:18 Uhr)

  5. #5
    User
    Registriert seit
    May 2001
    Beiträge
    8.688

    Anwendungs Beispiel

    Jetzt soll es darum gehen euch ein Beispiel vorzurechnen und dann den Transcode Befehl zusammen zu stellen:

    Eingangsfile: Avi, DivX 5.02, 640x480, 224 kBit, 48.000 kHz

    Ziel: Super VideoCD (SVCD)

    Zur Erinnerung noch mal die SVCD Norm: Mpeg2, mp2, 480 x 576, 192 kBit und 44.100 kHz


    Wir rechnen:

    Breite: 640 - 480 = 160 (Verkleinern)
    Höhe: 480 - 576 = -96 (Vergößern)

    160 = 10 x 16
    96 = 6 x 16

    Der Befehl sieht dann also so aus (Beispiel):

    transcode -i file.avi -x af6,af6 -o ausgang -V -y mpeg2enc,mp2enc -B 0,10,16 -X 6,0,16 -j 0,0,0,0 -F 4,"-S 792 -B 260 -V 230" -E 44100 -b 192

    mplex -f 4 -o ausgang_%d.mpg ausgang.m2v ausgang.mpa

    Nun kann man bei dieser Rechnung nicht ganz sicher sein ob die Auflösung überhaupt so ganz passt. Daher sollte man nach ein paar Minuten mal den Videofile mit mplayer oder Xine ansehen. In diesem Fall ausgang.m2v. Passt das Format dann nicht, dann müsst ihr noch Ränder einfügen und die Höhe reduzieren.

    Nehmen wir jetzt einfach mal 32 Zeilen Rand dazu (ob notwedig oder nicht):

    transcode -i file.avi -x af6,af6 -o ausgang -V -y mpeg2enc,mp2enc -B 0,10,16 -X 4,0,16 -j 16,0,16,0 -F 4,"-S 792 -B 260 -V 230" -E 44100 -b 192
    Geändert von hunter (18.01.03 um 23:16 Uhr)

  6. #6
    User
    Registriert seit
    May 2001
    Beiträge
    8.688

    Vereinfachung durch ein Script

    Ich persönlich möchte nicht immer den Befehl rauskramen und mir dann anpassen. Ich ziehe daher ein Script vor das ich mir von Fall zu Fall einfach nur anpasse:

    /usr/bin/avi2svcd (ich benutze das ganze eigentlich nur für Avis, darum dieser Name)

    Inhalt: (Beispiel !!!)

    #!/bin/sh

    transcode -i $1 -x af6,af6 -V -o $2 -y mpeg2enc,mp2enc -B 0,0,16 -X 0,0,16 -j 0,0,0,0 -F 1,"-S 792 -B 260 -V 230" -E 44100 -b 224

    mplex -f 1 -o $2_%d.mpg $2.m1v $2.mpa


    Das $1 und $2 sind Variablen die nun im Befehl eingegeben werden können: avi2svcd xyz.avi abc (xyz.avi ist dann $1, also der Avifile. abc ist der Basisname der später dann immer wieder benutzt wird.)

    Wenn ihr jetzt noch die Rechte 777 vergebt könnt ihr das Script auch als User schnell anpassen: chmod 777 /usr/bin/avi2svcd


    Wichtig: Wenn ihr andere Encoder verwendet dann müsst ihr einiges ändern. Genauso wenn ihr eine VCD oder eine SVCD erstellen wollt.

    Für VCD müsst ihr in der Transcode Zeile einstellen: -F 1,... -b 224
    Für eine SVCD: -F 4,... -b 192

    Genauso für die mplex Zeile. Bei VCD: -f 1 ... $2.m1v
    Für SVCD: -f 4 ... $2.m2v

    Auch das Format für den Tonfile kann sich ändern. Dies geschieht aber nur wenn ihr den Encoder ändert:

    mp2enc: $2.mpa
    toolame: $2.mp2


    Letztendlich sind die anpassungen am Script einfacher als sich die ganze Zeile immer selbst zu schreiben oder sie von irgendwo her in die Konsole zu kopieren und dann anzupassen. Außerdem wird dann nicht gleich das mplex ausgeführt.
    Geändert von hunter (18.01.03 um 23:17 Uhr)

  7. #7
    User
    Registriert seit
    May 2001
    Beiträge
    8.688

    Weitere hilfreiche Scripte

    Hier jetzt noch zwei einfache Scripte die euch das brennen der Images etwas erleichtern:

    1. Script:

    /usr/bin/daoburn

    Mit diesem script könnt ihr über den Toc File (.cue) ein .bin Image brennen. Durch das Script könnt ihr dann alle Parameter einmal festlegen und dann mit einem einzigen Befehl sofort brennen.

    #!/bin/sh
    cdrdao write --device 1,0,0 --driver generic-mmc --buffers 64 $1

    Das Device muss wie gehabt angepasst werden, also: "cdrecord -scanbus" (eventuell als Root) und dann das Device für den Brenner ablesen und im Script eintragen.

    Den Namen des Drivers müsst ihr euch von der Homepage holen. Meist generic-mmc oder generic-mmc-raw. Wenn eines der beiden da steht, es damit aber dann nicht geht, dann probiert mal den anderen. Manchmal ist die Tabelle fehlerhaft.

    Das Script müsst ihr ausführbar machen: chmod +x /usr/bin/daoburn (als Root natürlich)

    Benutzung: daoburn xyz.cue


    2. Script

    /usr/bin/blankcdrw

    Für Tests ist es immer Sinnvoll eine CDRW zu besitzen (natürlich nur wenn der Brenner dies auch beherrscht). Mit diesem Script könnt ihr mit einem einzelnen Befehl die CDRW löschen.

    #!/bin/sh
    cdrdao blank --device 1,0,0 --driver generic-mmc

    Driver und Device sind, wie oben beschrieben, anzupassen und das Script muss ausführbar gemacht werden.

    Benutzung: blankcdrw

    Ihr solltet dafür am besten nicht cdrdao 1.1.5 sondern 1.1.6 oder besser 1.1.7 benutzen. Der Grund ist einfach der das 1.1.5 noch die ganze CDRW gelöscht hat, auch wenn nur wenige MB drauf waren. Seit 1.1.6 löscht er nur das was auch wirklich beschrieben ist, was natürlich wesentlich schneller geht.
    Geändert von hunter (10.05.03 um 22:47 Uhr)

  8. #8
    User
    Registriert seit
    May 2001
    Beiträge
    8.688

    Reduzierte Video Bitrate

    Einführung:

    Bisher wurde nur beschrieben wie man Filme mit der Standard Video Bitrate für VCD bzw. SVCD erstellt. Dies sind:

    VCD: 1150 kBit/s
    SVCD: 2500 kBit/s

    Alle Player die VCD / SVCD / CD-R / CD-RW beherrschen, sollten in der Lage sein Filme mit dieser Bitrate abzuspielen. Allerdings sind diese Werte eher als Maximum anzusehen, denn viele DVD Player können auch geringere Bitraten abspielen. Die Qualität nimmt dann zwar geringfügig ab, aber man kann diese Filme dann besser anpassen, so das sie dann z.B. möglichst gut auf 2 CDs passen.

    8 Bit = 1 Byte
    8 kBit = 1 kByte

    1 kByte = 1024 Byte
    1 MByte = 1024 kByte

    Damit kann man nun ausrechnen wie hoch der Speicherplatzbedarf auf dem Rohling ist.

    SVCD

    Speicherplatz pro Sekunde: 2500 / 8 = 312.5 kByte/s

    Die Audiobitrate von 192 kBit/s ist dann: 192 / 8 = 24 kByte / s

    Macht zusammen: 336.5 kByte / s

    Auf einen Rohling passen (ohne überbrennen) 792 MB = 811008 kByte

    Das macht etwa 2410 s also etwa 40 Minuten.


    VCD

    Speicherplatz pro Sekunde: 1150 / 8 = 143.75 kByte/s

    Die Audiobitrate von 224 kBit/s ist dann: 224 / 8 = 28 kByte / s

    Macht zusammen: 171.75 kByte / s

    Auf einen Rohling passen (ohne überbrennen) 792 MB = 811008 kByte

    Das macht etwa 4722 s also etwa 78 Minuten.


    Hat man also nun einen Film von 90 Minuten und will daraus SVCDs machen, bekäme man zwei CDs mit je 40 Minuten und eine mit 10 Minuten. Um das zu vermeiden kann man die Videobitrate reduzieren. Dadurch sinkt die Qualität etwas aber man bekommt mehr von dem Film auf eine CD. Natürlich darf man diese Reduzierung nur im kleinen Bereich machen, damit die Qualität nicht zu sehr runter geht.


    Abschätzung:

    Als erstes solltet ihr nun abschätzen wie groß die Video Bitrate etwa sein müsste damit ihr das gewünschte Ziel erreicht. Geht folgendermassen vor:

    1. Ermittelt die Gesamtlänge eures Films und rechnet diese in Sekunden um.

    Bsp.: 1,5 Stunden = 90 Minuten = 5400 Sekunden

    2. Bestimmt wie viele CDs ihr haben wollt.

    Bsp.: 2 SVCDs

    3. Ihr rechnet also Zeit / Anzahl der CDs.

    Bsp.: 5400 / 2 = 2700 Sekunden

    4. Berechnet dafür den Platzbedarf für Audio.

    Bsp.: 2700 * 24 = 64800 kByte

    5. Zieht das von eurem Gesamtplatz auf dem Rohling ab.

    Bsp.: 811008 - 64800 = 746208 kByte

    6. Rechnet den verbleibenden Speicherplatz in kBit um.

    Bsp.: 746208 * 8 = 5969664

    7. Dividiert durch die Zeit um die Bitrate zu erhalten.

    Bsp.: 5969664 / 2700 = 2210.986667 kBit/s => 2211 kBit/s

    8. Die Bitrate wird nie korrekt erreicht. Schlagt noch mal 10% auf.

    Bsp.: 2211 * 110/100 = 2432.1 => 2430 kBit/s


    Mit diesem ermittelten Wert müsst ihr nun weiter arbeiten.

    Anmerkung:

    Beachtet das die Audio Bitrate für VCD bei 224 kBit/s liegt und bei SVCD bei 192 kBit/s. Solltet ihr bei SVCD mit mehreren Tonspuren arbeiten, dann müsst ihr auch deren Datengröße abziehen um den verfügbaren Speicherplatz für Video zu errechnen.


    Anwendung in Transcode:

    Die Videobitrate muss nun als Parameter dem mpeg2enc übergeben werden. Zunächst muss der Typ angepasst werden:

    VCD: -F 1 (Standard Bitrate) --> -F 2 (Benutzerdefinierte Bitrate)

    SVCD: -F 4 (Standard Bitrate) --> -F 5 (Benutzerdefinierte Bitrate)

    Und innerhalb der Anführungszeichen wird dann die Videobitrate angegeben: -b #

    Bsp.: -b 2430

    Die Option für das Beispiel ist dann also: -F 5,"-b 2430 -S 792 -B 260 -V 230"


    Schlussbemerkung:

    Wie schon angedeutet ist diese Bitrate nicht absolut fest. Sie schwankt ein wenig, so das die Datenmenge geringer ist als sie mit der Bitrate zu erwarten wäre. In der Regel sind 10 % zusätzlich ein guter Wert. Aber das ist ein Erfahrungswert, der eventuell bei euch niedriger oder höher sein könnte.

  9. #9
    User
    Registriert seit
    May 2001
    Beiträge
    8.688

    Korrektur von verschobenen Tonspuren

    Bei der Videoverarbeitung können zwei Fehler mit dem Sound auftreten:

    1. Tonspur hat nicht die selbe länge wie die Filmspur. Daher passt die Tonspur zu Anfang, aber am Ende dann nicht mehr.

    2. Die Tonspur hat zwar die selbe Länge wie die Filmspur, aber sie ist verschoben.


    zu 1) Das kann schon mal bei einem nicht ganz (für diesen Film) geeigneten De oder Encoder vorkommen. Dann solltet ihr am besten nochmal den Ton neu encoden. Wohl gemerkt, nur den Ton. Das dauert für einen Spielfilm 10 - 20 Minuten.

    a) Mencoder:

    mplayer -vo null -ao pcm -aofile audiodump.wav EINGANGSFILE
    normalize audiodump.wav
    mp2enc -r 44100 -b 192 -o AUSGANG.mpa < audiodump.wav (für SVCD)

    mp2enc -r 44100 -b 224 -o AUSGANG.mpa < audiodump.wav (für VCD)

    Dann könnt ihr Film und Ton wieder multiplexen (mplex oder tcmplex; siehe oben).


    b) Transcode:

    transcode -i EINGANG -x null,AUDIO_DECODER -V -o AUSGANG -y null,AUDIO_ENCODER -f 25.000 -E 44100 -b 192 -J normalize

    Für den Fall das ihr eine VCD wollt: -b 224

    AUDIO_DECODER -> z.B. mp3, af6, mplayer ...
    AUDIO_ENCODER -> z.B. mp2enc, toolame, ogg ...

    Das enstandene .mpa könnt ihr dann wieder multiplexen.


    zu 2) Es kann passieren das der Ton nach dem Encoden gegenüber dem Film verschoben ist. Das kann beim encoden passiert sein oder auch schon im Orginal so gewesen sein. Dann müsst ihr die Verschiebung selbst ausgleichen.

    Dazu benutzt ihr am besten tcmplex:

    tcmplex -i FILM.m2v -p AUDIO.mpa -o FILM.mpg -m s -D v,a

    Für eine VCD: -m v
    Für eine zweite Tonspur: -s AUDIO2.mpa ; -D v,a,a2

    -D erlaubt es eine Verschiebung in Millisekunden nach hinten anzugeben. Dabei wird nur jene Spur nach hinten verschoben die größer Null gesetzt bzw. überhaupt angegeben wird.

    Beispiele:

    Audio lassen, Film um 500 ms verschieben: -D 500,0
    Film lassen, Audio um 500 ms verschieben: -D 0,500

    Film lassen, Audio1 um 200 und Audio2 um 300 verschieben: -D 0,200,300


    Jetzt bleibt nur noch die Frage woher ihr denn wisst was wie zu verschieben ist. Geht dazu folgendermaßen vor:

    - Multiplext den Film normal (ohne -D) und spielt ihn mit einem Softwareplayer ab
    - Findet raus was zu spät kommt, Film oder Ton
    - Schätzt ab wie groß die Verschiebung ist
    - Multiplext den Film mit der geschätzten Verschiebung
    - Spielt ihn erneut ab und schätzt ggf. erneut die Verschiebung ab
    - ...

    Wenn ihr gut schätzen könnt habt ihr das nach ein paar Versuchen raus. Je näher ihr dem gewünschten Ergebnis kommt desto einfacher könnt ihr schätzen weil die Werte nur noch recht klein sind. Schaut euch aber unbedingt mehrere Stellen an. Gerade bei syncronisierten Filmen passt das nie 100 %. Beisst ihr euch dann an der einen Stelle fest, kann es sein das es später nicht ganz passt weil die minimale Verschiebung schon im Orginal da war.


    Hilfestellung durch MPlayer:

    Wer das mit dem Abschätzen nicht so gut hinbekommt der kann es auch mit MPlayer probieren. Jedoch muss dazu die Config modifiziert werden.

    Anmerkung: Das ist deshalb nötig weil die MPlayer Standard Config zwar auch eine Verschiebung für den Ton hat, diese aber bei 1/10 s Schritten liegt und das ist zu grob um die Verschiebung zu ermitteln.

    Legt folgenden File an:

    $HOME/.mplayer/input.conf

    ##
    ## MPlayer input control file
    ##

    - audio_delay 0.010
    + audio_delay -0.010
    PGDWN audio_delay 0.001
    PGUP audio_delay -0.001


    Speichert das und startet das Mpeg das ihr ohne -D multiplext habt: mplayer FILM

    Nun wird der Film abgespielt und der Ton sollte falsch sein. Benutzt nun die Tasten + und - um den Ton in 1/100 s Schritten zu verschieben. Wenn ihr dann in der Nähe des gesuchten Wertes seit, macht mit Bild rauf und runter weiter. Das sind 1/1000 s Schritte.

    - Den gefundenen Wert setzt ihr in -D ein und multiplext dann
    - Sollte es noch immer nicht ganz passen korregiert es durch schätzen und neu multiplexen
    Geändert von hunter (29.01.03 um 13:09 Uhr)

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •