scan type im header ändern?

  • Hallo,

    ich habe mal ne aussergewöhnliche Frage: ich würde gerne den scan type im Header des Videostroms von interlaced auf progressive ändern (ohne die Datei neu zu codieren). Es handelt sich dabei um ein Spezialcontent (3D content) das zwei Ansichten - links und rechts ineinander verschachtelt hat - dieses entspricht einem interlaced Verfahren, und wird abwechselnd wie bei interlace zeilenweise verschachtelt. Leider spielen die meisten Player (vor allem Hardwareplayer) dieses Material falsch ab weil sie versuchen zu deinterlacen. Leider kann man bei derzeit allen Hardwareplayern das deinterlacing nicht abschalten so dass der eigentliche 3D content dabei verloren geht.
    Nun wäre mein Idee den Player auszutricksen und ihm statt ein interlace Video ein gefaktes progressive Video zu geben (einfach durch ändern des Scantypes) - es könnte ja sein dass zwar der Codec (in meinem Fall ist das XviD) das interlace erkennt, der Player aber durch das gefakete scan type meint er hätte ein progressive video und deinterlaced nach dem decodieren nicht mehr - progressive 3D content wir in der Regel korrekt wiedergegeben, allerdings ist die Bildqualität miserabel weil beim Encoden der Codec tatsächlich von progessivem Material ausgeht und dabei (vor allem bei knalligen Farben) die eigentlich getrennt zu behandelnden 'Halbbilder' (hier die jeweiligen linken bzw. rechte Ansichten) miteinander vermischt, was so nicht gewollt ist.

    Nun meine konkrete Frage: gibt es Software die es erlaubt die Parameter im Header des Videostroms zu ändern (hier speziell den scan type)? Alternativ: wie finde ich heraus WO diese Information im Videostrom steht (z.B um diese mit einem Hexeditor zu ändern oder ich schreib mir ein kleines VBscript das diese Stelle findet und ändert)

    Ok mir ist bekannt dass dadurch der Videostrom eventuell gar nicht mehr abspielbar ist, ich wills aber trotzdem mal einfach ausprobieren. Mir ist auch klar dass ein anderer Ansatz erfolgreicher wäre, nämlich eine Anpassung der Playersoftware die generell ein deinterlacing abschaltet und das Video einfach 1:1 ausgibt - dieses ist aber nicht ganz so einfach und eine entsprechende Anfrage bei einem Playerhersteller läuft bereits - Ausgang ungewiss...

    Gruß
    Werner

    Einmal editiert, zuletzt von wbloos (22. März 2009 um 08:20)

  • :welcome:

    So einfach ist es nicht. Es geht ja hier nicht nur um ein Bit, sondern um erheblich verschiedene Arten, den Inhalt eines Bildes zu codieren und abzuspeichern.

    Bildlich gesprochen, hättest du beim progressiven Decodieren von interlaced encodiertem Video am Ende die zwei Halbbilder getrennt untereinander; praktisch wird es einfach zu Bildfehlern und evtl. Abstürzen führen, weil der Decoder die Daten in einer anderen Reihenfolge erwartet und dadurch falsch versteht.

    Zur Demonstration:

    PHP
    AviSource("Interlaced3DCGMovie.avi")
    AssumeFrameBased()
    AssumeTTF()
    SeparateFields()
    StackVertical(SelectEven(), SelectOdd())

    Hat nichts mit der tatsächlichen Speicherung des encodierten Datenstromes zu tun - soll nur veranschaulichen, was der Codec speichert, wenn er im Interlaced-Modus arbeitet.

    Deinterlacing bei Hardwareplayern klingt außerdem "schwach sinning", weil doch (Röhren-) Fernseher sowieso interlaced arbeiten. Bist du sicher, dass es der Player ist? Oder doch eher der Flachbildfernseher?

    Wenn du mehr über die Speicherung des Videodatenstroms erfahren willst, dann wirst du dir wohl irgendwo her das Dokument "ISO/IEC 14496-2" besorgen müssen. Das beschreibt die Theorie der MPEG4-ASP-Codierung, die hinter der Implementation durch XviD steckt.

  • Zitat

    Deinterlacing bei Hardwareplayern klingt außerdem "schwach sinning", weil doch (Röhren-) Fernseher sowieso interlaced arbeiten.

    da mags Du recht haben wenn Du von Röhrenmonitoren sprichst - die Wiedergabe soll aber auf einem full HD (1920*1080) LCD Monitor - also kein TV der mit Skalierungs- und Deinterlacing features ausgestattet ist, wiedergegeben werden Die Einstellungen am player sollten somit 1080p sein somit kommt auch nur ein Player in Frage der auch 1080p kann - in diesem Fall sollte der Player den Bildschirm auch progressive ansteuern - idealerweise gibt er das 1080er Video 1:1 wieder


    Zitat

    Bist du sicher, dass es der Player ist? Oder doch eher der Flachbildfernseher?


    ja da bin ich mir ganz sicher das es am Player liegt weil das gleiche Material (exakt die gleiche Scene) mit Vdub und Xvid in progressive codiert funktioniert (allerdings mit Farbfehlern die vom Codec kommen) - spielt man ein progressive Video ab dann macht der Player kein deinterlacing - es sieht so aus dass der Player den Scantype auswertet, und entsprechend reagiert - bei progressive codiertem Video spielt er 1:1 ab, bei interlaced video deinterlaced er - da die Unterschiede zwischen der linken und der rechten Ansicht teilweise sehr groß sind (also nicht wie bei einer echten interlaced Aufnahme bei Bewegung nur wenige Pixel Versatz zu sehn sind) fällt das massiv auf - einige Player spielen dann halbbildweise ab und deinterlacen (ich vermute mal dass die jedes Halbbild vertikal verdoppeln) was dazu führt dass die Wiedergabe zwischen linker und rechter Ansicht hin und herspringen - man bekommt ein flackerndes Bild das zwischen den beiden Ansichten wechselt.

    Bei Interesse kann ich mal so ein Content zur Verfügung stellen (vielleicht wills ja mal der eine oder andere auf seinem Player testen):
    http://www.3d-hdv.net/popcorn/3D_10s.zip
    Die Datei ist 100MB groß und beinhaltet 3 AVI files - zwei interlaced und ein progressive codiertes Video je 10s lang. Ziel soll es sein das interlces video 1:1 wiederzugeben so dass man wie beim progressive Video die einzelnen Zeilen sehen kann - Video darf nicht flimmern, es müssen zwei voneinander getrennte Ansichten die zeilenweise verschachtelt sind sichtbar sein.

    Gruß
    Werner

  • Zitat

    Es handelt sich dabei um ein Spezialcontent (3D content) das zwei Ansichten - links und rechts ineinander verschachtelt hat - dieses entspricht einem interlaced Verfahren, und wird abwechselnd wie bei interlace zeilenweise verschachtelt.


    Heißt das, dass Du zwei Ansichten einer Situation hast und diese nicht wie bei http://www.wbloos.de/hobbys/stereoskopie/3d-video.html nebeneinander speicherst und mit einem Stereoscopic Player (wie von 3dtv.at) abspielen willst, sondern quasi zwei progressive Videos anstatt nebeneinander ineinander gemischt hast? (gibt es ein Paper oder dergleichen mit weiteren Informationen zum Verfahren?)

  • Nochmal: Warum sollte ausgerechnet der Player ein Deinterlacing durchführen und nicht der Fernseher? Wie kannst du das beweisen - ohne das mit verschiedenen Fernsehern (mit unterschiedlicher Darstellungstechnik) zu probieren?

    Klären wir erst mal, wie der Player an den Fernseher angeschlossen ist:

    a) SD, analog (FBAS / SCART / S-Video)
    b) HD, digital (HDMI)
    c) Komponenten (RGB / YCC)

    Im Fall a) wird der Player das Video mit Sicherheit interlaced und zeilenweise übertragen, weil das alles Anschlüsse sind, wie sie für einen Röhrenfernseher geeignet wären, wie es seit Jahrzehnten üblich ist, weil schon vor Jahrzehnten alle Fernseher grundsätzlich immer interlaced funktioniert hatten.

    Die modernen Flachbildfernseher sind technisch nicht in der Lage, Interlaced-Video auch wirklich mit dem erwarteten Timing und den abwechselnden Zeilen anzuzeigen. Es ist nun mal immer das gesamte Bild zu sehen; es ist nicht vorgesehen, dass abwechselnd die eine Hälfte und die andere Hälfte der Bildzeilen leuchten, so wie bei Röhrenfernsehern eigentlich immer nur eine Zeile gerade leuchtet.

    Schließe deinen Player an einen Röhrenfernseher an. Das wird dir beweisen, dass nicht der Player das Deinterlacing durchführt, sondern die Elektronik im Plasma- oder LCD-HD-Fernseher.

  • Zitat

    Heißt das, dass Du zwei Ansichten einer Situation hast und diese nicht nebeneinander speicherst und mit einem Stereoscopic Player (wie von 3dtv.at) abspielen willst, sondern quasi zwei progressive Videos anstatt nebeneinander ineinander gemischt hast?

    ja genau - die Idee dabei ist die bereits ineinander verschachtelten Videos auf einem Speziellen 3D Monitor abzuspielen - dieser 3D Monitor hat eine Spezialscheibe vor dem LCD das zeilenweise unterschiedlich polarisiert - somit kann man mit einer passenden 3D Brille den Inhalt wieder dreidimensional sehn.
    Klar könnte man das mit StereoscopicPlayer am PC abspielen, ziel ist es aber einen einfachen Hardwareplayer zu nehmen.

    Gruß
    Werner

  • Zitat

    Warum sollte ausgerechnet der Player ein Deinterlacing durchführen und nicht der Fernseher? Wie kannst du das beweisen


    ganz einfach: der Monitor kann definitiv kein deinterlacing! - zum anderen kann man z.B beim Popcorn Player die Pausetaste drücken und bei jedem weiteren Druck auf die Pausetaste wird zum nächsten HALBBild (und nicht ganzes Bild) weitergeschaltet.

    Zitat

    Klären wir erst mal, wie der Player an den Fernseher angeschlossen ist:


    per HDMI digital Monitor hat 1920*1080 und kann progressive - im player ist die Einstellung 1080p gewählt

    Gruß
    Werner

  • per HDMI digital Monitor hat 1920*1080 und kann progressive - im player ist die Einstellung 1080p gewählt

    Dann probier doch mal eine andere Einstellung. Aus dem popcorn Forum:

    Zitat


    Wheather the PCH or the screen does deinterlacing depends on what output you have selected and weather the screen can do deinterlacing ?
    If you have selected a progressiv output the pch will deinterlace (576p, 720p, 1080p), but if you have selected an interlaced output (1080i) the PCH will not deinterlace.

    mfg,
    Monarc

  • Zitat

    Also auf deutsch: Wenn der PopCorn Hour interlaced ausgeben und nicht deinterlacen soll, dann muss er auf 1080i statt 1080p eingestellt werden.

    schön wärs wenns so einfach ginge - er macht genau das gleiche - nämlich Wechsel zwischen der linken und rechten Ansicht - sprich es flackert

    Wir haben dann auch andere Player mal ausprobiert - z.B den Tivix 7000 - der hat den gleichen Chip drin wie der popcorn - der verhält sich etwas anderes: beim ersten Abspielen ist die Wiedergabe identisch zum popcorn, beim zweiten Abspielen (Einstellung auf Wiederholen) passts, beim dritten Abspielen wird nur noch Müll angezeigt...

    Gruß
    Werner

  • Ja klar, es flackert. Sollte das nicht auch der Sinn sein?

    Oder warum sonst verschränkt man zwei 3D-Ansichten ... wie soll man sie denn dann wieder pro Auge separat sehen, wenn nicht zeitlich voneinander getrennt?

    Ich kann mir den Sinn und Zweck noch nicht so recht vorstellen. Wenn es darum geht, mit einer Spezialbrille die beiden Halbbilder verzögert zu sehen, damit ein 3D-Eindruck entsteht, dann müssen die auch wirklich nacheinander erscheinen.

  • Zitat

    wie soll man sie denn dann wieder pro Auge separat sehen, wenn nicht zeitlich voneinander getrennt?

    es geht hier eben NICHT darum die beiden Ansichten HINTEREINANDER zu betrachten sondern GLEICHZEITIG. Der 3D Monitor hat eine zusätzliche Scheibe vor dem LCD Panel die zeilenweise unterschiedlich polarisiert (genau genommen: links und rechstdrehend also zirkulare Polarisation). Bei den Brillen handelt es sich um passive (also nicht aktive) zirkulare Polbrillen.
    Die Wiedergabe wird somit nicht hinereinader gemacht und alles muss auf einmal dargestellt werden - ohne irgendwas zu deinterlacen oder zu verändern, und zeitlich keine unterschiedliche Darstellung vorzunehmen.

    Gruß
    Werner

  • :) Jetzt wird die Problematik langsam klarer...

    Der Lösung kommen wir dadurch leider nicht wesentlich näher. Am PC hätte ich mir vielleicht noch was einfallen lassen, falls der ffdshow-Decoder entsprechende Konfigurationsmöglichkeiten hat.

    Ein Consumer-Player hat natürlich seine Eigenheiten. Wenn man da keine passende Lösung findet, bleibt einem eigentlich nur noch, genau das zu tun, wovor ansonsten der gesunde Menschenverstand warnt... Interlaced-Material progressiv encodieren, unter massivem Einsatz von ausreichend Bitrate bzw. hinreichend feiner Quantisierung, damit die Combing-Bereiche im Bild nicht die hohen Frequenzen verlieren. Leider wird es dann trotzdem erhebliche Probleme mit UV-Komplementärfarben geben (Chroma-Subsampling 4:2:0 ist Interlacing-abhängig).
    __

    Wer stellt eigentlich solche Monitore her? Haben die wirklich Polarisationsstreifen in Full-HD-Auflösung (also 1080 Wechsel über die gesamte aktive Höhe)?

  • Zitat

    Wer stellt eigentlich solche Monitore her? Haben die wirklich Polarisationsstreifen in Full-HD-Auflösung (also 1080 Wechsel über die gesamte aktive Höhe)?

    ja die haben 1080 Wechsel über die gesamte Höhe - Monitorhersteller gibts da einige: Zalman, Miracube, Hyundai, Arisana - nur die letzten 3 haben auch fullHD Monitore - alle arbeiten nach dem gleichen Prinzip.

    Gruß
    Werner

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!