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:

André Osterhues

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:

Szene-Export (1KB)

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...

jpeg-Tools (203KB)

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.

PPM-Tools (640KB)

Nun mit einem geeignetem rename-Tool die laufende Nummerierung wieder herstellen, also wieder auf pic0000, pic0001,...,picxxxx bringen.

Renumber-Tool (10KB)

Jetzt kann mpeg2enc.elf (oder CreateMPEG) daraus einen Video-Stream machen, den man sich dann mal mit IsisPPC o.ä. ansehen kann.

CreateMPEG (101KB)

IsisPPC (247KB)

Nun noch der Ton: wenn die Samplerate nicht 44,1kHz beträgt, mit AudioConvert in AIFF 44,1kHz, 16Bit-Stereo konvertieren.

Songplayer (295KB)

Dann mit musicin.elf (oder Pegase) als MP2, 224kBit packen.

MusicinPPC (137KB)

Nun noch mit mplex beide Streams zusammenfügen und man hat einen MPEG-Videostream.

MPLEX (420KB)

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...

MakeMPEG (110KB)

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:

MPEG-Video (2800KB)

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.