MovieShop und Video-MPEG
Erstmal noch eine Anmerkung: ich habe jeweils die Links auf die Orginal-Archive
gesetzt. Einige Tools sind auf der Homepage von André Osterhues zu finden:
der Rest liegt im Aminet. Das Problem, daß man so die ganzen Archive downladen muß,
kann ich so nicht lösen, die Disclaimer verlangen meist die komplette Weitergabe
der Archive und ich sehe mich zur Zeit außerstande, alle Programmierer anzuschreiben und
um die Genehmigung zu bitten, die Teile einzeln weitergeben zu dürfen.
So liegen im Archiv mit MakeMPEG also nur meine Sachen, die Parameter-Dateien
und Dummy-Dateien, die jeweils durch die entsprechenden Tools ersetzt werden
müssen...
André Osterhues war so nett, pnmscale für den PPC zu compilieren, die Konvertierung
nach PPM und das Scalieren gehen jetzt so ca. 4x so schnell.
In makempeg hatte ich den Aufruf von AudioConvert vergessen, ist repariert.
Ja, eigentlich war mplex schuld, der Multiplexer, der Video- und Audio-Stream
zusammenfügt...
Zutaten: VLab-Motion, Toccata, viel Plattenplatz, möglichst ein PPC.
Eine Szene (zum Testen nur ca. 10s nehmen...) aus MovieShop exportieren.
Video-Export als RAW-JPEG-Halbbilder, alles andere über die multipic.library
ist zu langsam und wir benötigen ohnehin nur 352x288 Pixel für MPEG-1.
Das Sample-File zur Szene ebenfalls exportieren, AIFF ist zu empfehlen, wenn die
Sample-Rate von 44,1kHz abweicht, wird später konvertiert.
Ein AREXX-Script für MovieShop, das die aktuelle Szene incl. Sound passend
exportiert, ist hier zu finden:
Bedingung: ein Assign VMPEG: auf den Ort, wo das landen soll, muß existieren.
Es wird in VMPEG: ein Verzeichnis mit dem Szene-Namen angelegt, darin landen
die Bilder und das Sample.
So, nun von den exportierten Bildern jedes 2. löschen (delete pic???(0|2|4|6|8).
Jetzt alle Bilder mit djpeg.elf nach PPM konvertieren, ein Export aus MovieShop
als PPM ist zwar möglich, dauert aber wesenlich länger...
Nun müssen die Bilder noch auf das gewünschte Format gebracht werden, für PAL
352x288 Pixel. Je nach MovieShop-Einstellung dürften sie z.Z. ca. 704x272 haben.
Die Konvertierung erledigt pnmscale aus dem PNM-Paket, leider bisher keine PPC-Version,
das kostet also die meiste Zeit.
Nun mit einem geeignetem rename-Tool die laufende Nummerierung wieder herstellen,
also wieder auf pic0000, pic0001,...,picxxxx bringen.
Jetzt kann mpeg2enc.elf (oder CreateMPEG) daraus einen Video-Stream machen, den
man sich dann mal mit IsisPPC o.ä. ansehen kann.
Nun noch der Ton: wenn die Samplerate nicht 44,1kHz beträgt, mit AudioConvert
in AIFF 44,1kHz, 16Bit-Stereo konvertieren.
Dann mit musicin.elf (oder Pegase) als MP2, 224kBit packen.
Nun noch mit mplex beide Streams zusammenfügen und man hat einen MPEG-Videostream.
Allerdings habe ich auf dem Amiga keine Software gefunden, die 2324Byte/Sektor
(White-Book-Video-CD) schreiben kann, eine echte Video-CD bekommt man also so
noch nicht.
Dagegen spricht allerdings auch der temporäre Platzverbrauch: die Roh-Bilder
im PPM-Format belegen ca. 304kB pro Bild, 1min sind 60s x 25 Bilder, also
1500 Bilder zu 304kB...
Für diese ganze Geschichte habe ich ein kleines AmigaE-Programm geschrieben,
daß das alles "vollautomatisch" erledigt. Naja, fast... mplex muß man am Schluß
von Hand bemühen, ich habe keine Parameter-Übergabe für seine Fragen hinbekommen...
Nun die "einfache" Version: Irgendwo ein Verzeichnis für den ganzen Kram anlegen,
darauf ein Assign VMPEG: setzen.
In VMPEG: gibt es ein VErzeichnis _bin dort liegen alle .exe-Dateien usw.
Weiterhin ein Verzeichnis _temp für die temporär-Dateien und das Programm makempeg
selbst. In VMPEG legt das MovieShop-Script ein Verzeichnis mit dem Szenenamen an,
wo alles erstmal landet.
Also mit mpegexport.rx aus MovieShop exportieren, dann aus der Shell nach VMPEG:
wechseln und makempeg "Szenename" aufrufen.
Stunden später dann noch _bin/mplex v.mpg a.mp2 video.mpg aufrufen...
Die ganze Geschichte ist an einem verregneten Wochenende entstanden, sie ist
weder fertig noch sonderlich genial...
Es gibt wenig bis keine Fehlerabfragen bisher, fremde Dateien, die sich nicht
in VMPEG: befinden, werden jedoch nicht angerührt.
Sinn würde es machen, wenn man mpeg2enc so verändert, daß er aus einem temporären
Puffer (ca. 20 Bilder) bis zu einer Abbruch-Meldung den Video-Stream erzeugt.
Dann könnte man MovieShop parallel laufen lassen und aus dem Steuerprogramm
zuerst das Audiofile erstellen und dann jeweils per ARexx aus MovieShop den
Puffer nachfüllen. Das würde das Platzproblem auch bei langen Szenen lösen,
es müßte nur Ram für MovieShop, für ca. 20 PPM-Bilder (7MB) vorhanden sein
und Plattenplatz für den MPEG-Stream. MPLEX nüte dahin geändert werden, daß
er seine Parameter aus einem Textfile einliest, dann könnte es vollautomatisch
laufen. Die Scalefunktion müßte im PPC-Code mit djpeg zusammengelegt werden,
dann würde es nochmal Rechenzeit und Platz sparen.
Zur Zeit benötigen 2min MPEG bei mir (060/PPC-200MHz) ca. 4 Stunden, davon sind
ca. 2,5 Stunden die Konvertierung und Scalierung der Bilder. Da liegen also
die meisten Reserven. Vielleicht hat ja ein PPC-Programmierer Lust, sich mit mir
in Verbindung zu setzen...
Wer unbedingt ein Ergebnis sehen will und Lust hat, knapp 3MB MPEG zu laden, bitte:
IsisPPC schafft es bei mir (604/200MHz/Picasso4) nicht, den Stream fehlerfrei
abzuspielen...
Entweder Ton aus oder Skip auf 50 und mit Ton. Vielleicht kann da ja mal jemand...
Auf einem P200 mit brauchbarer Graka sieht es jedenfalls sehr gut aus.