Frameserver
Kam gestern Abend in die Gelegenheit etwas mehr über Video-Reencoding zu lernen. Es ging darum ein XVid Movie (Auflösung 640×272 Pixel) in ein gängiges MPEG Format (720×304 Pixel) zu konvertieren.
Die frei verfügbare Version von TMPGEnc war dabei der Encoder der Wahl, doch aufgrund der variierenden Seitenverhältnisse musste ich diese zunächst einmal anpassen um nicht ein verzerrtes Endergebnis zu erhalten.
Im Klartext hieß dies, schwarze Balken mussten ober- und unterhalb des Videos hinzugefügt werden. Dabei habe ich die Vorzüge von AVISynth kennengelernt. Dieses ist ein frei beziehbarer Frameserver. Gesteuert wird diese Software weder über eine grafische Benutzeroberfläche noch über die Kommandozeile - man schreibt kleine AVS- Skripte.
Diese AVS Dateien können anschließend mit einem normalen Videoplayer oder wie in meinem Fall mit einem Encoder geladen werden. Sofern diese korrekt geschrieben wurden wird dann in echtzeit die entsprechend geskripteten Änderungen vorgenommen.
In meinem Fall sah das Skript wie folgt aus:
videoa = directshowsource("d:\movie_a.avi")
videob = directshowsource("d:\movie_b.avi")
AlignedSplice(videoa,videob)
spline36resize(720, 304)
addborders(0,136,0,136)
# Video testweise auf die ersten 500 Frames trimmen um Endergebnis zu beurteilen.
# Trim(0,499)
Zunächst einmal werden 2 Videos geladen, bzw. über die Variablen videoa bzw. videob referenziert. Anschließend wird gekannt gemacht das diese 2 Videos aneinandergehangen werden sollen. Die neue Videogröße wird definiert und entsprechend der Rechnung (576-304)/2 = 136 werden 2 Ränder oben und unten hinzugefügt.
Anschließend kann diese AVS Datei wie ein normales AVI in TMPGEnc geladen werden. Fertig ![]()



Felix said,
January 22, 2008 @ 8:53 am
Grade im bus den eintrag gelesen. Kommt mir alles so bekannt vor ;). Gut, daß das alles so geklappt hat. Aber korrektur: dvd auflösung ist 304+2*136. Deshalb ja die schwarzen balken ;). Viele grüße, Felix