Aspektratio bei Ausgabe auf mpegpes

  • Hi,


    wenn man beim mplayer.sh.conf das TV-Ausgabeformat auf 16:9 einstellt,
    wird's so scaliert, aber die Ausgabe auf mpegpes bringt ein Aspekt von 1:1
    hat das schon jemand probiert ?


    habs mal über die Comandozeile probiert mit


    /usr/bin/mplayer -vo mpegpes:test.mpg -ao mpegpes:test.mpg -afm 9 -vop lav=5000:25,expand=688:576:-1:-1:1,scale=688:551 -speed 1.04 -framedrop -cache 4096 /pub/mplayer/test.avi


    dann die erzeugte test.mpg datei analysiert auf den Aspektratio , ergebnis 1:1


    hab schon alle möglichen optionen von mplayer was mit dem AspektRatio zu tun hat probiert, liegts evt. an der mpegpes Ausgabe ?

  • Ich habe auch schon vergeblich versucht, die Aspect-Ratio des ausgegebenen MPEGs zu verändern, aber ohne Erfolg.
    Es bleibt nur, die MPlayer-Entwickler zu fragen.


    Gruß,
    Juri

  • Bei der Ausgabe auf den Framebuffer hatte ich mit den Optionen
    -xy 720 -zoom
    gute Ergebnisse erzielt, durch das -xy wird die Breite auf 720 gesetzt und die Höhe im gleichen Verhältnis angepasst.
    Am besten einfach mal testen wie das mit dem mpegpes aussieht, denke aber mal das das auch funktionieren wird.

  • Hi,
    na ja, es geht bei mir ja nicht um eine verzerrte Darstellung
    sondern ich wollte das ganze Ausgeben auf einen 16:9 Fernseher
    wobei der DVB-treiber das ensprechende WSS signal dann mit rausbringt
    zum umschalten des TV's auf 16:9.


    siehe thread automatische 4:3/16:9-Umschaltung mit Letterbox-Erkennung


    muss ich halt den TV per Fernbedienung auf 16:9 umschalten ;(

  • Hallo zusammen,


    ich bin auf der Suche nach der Lösung meines Problems (versuche das vor dem Fragen zu machen :-)) auf diesen Thread gestossen. Hoffe, es it OK, wenn ich mich hier dranhänge.


    Ich habe das Ausgabeformat 4:3 eingestellt und das Problem, daß entweder das mplayer.sh-Script oder der Mplayer (?) mit dem mpegpes-Ziel mir eine bildschirmfüllende Ausgabe hinzaubert. Da der Film im 16:9-Verhältnis kodiert ist, bekomme ich dann nur noch Eierköpfe zu sehen. Die Ausgabe auf das FB-Devive und in ein X11-Fenster ist OK, der Mplayer erkennt auch immer das richtige Aspekt-Verhältnis. Bei der mpegpes-Ausgabe (habe jetzt leider keine LOGs zur Hand) zeigt er, wie gesagt, das richtige Seitenverhältnis an und sagt, daß er entsprechend skalieren müßte. Für die Breite des Bildes kommen dann aber astronomische Werte (1040, glaube ich), was für die Darstellung völlig richtig wäre aber mit PAL nicht klappen kann.


    Kann mir jemand einen Tip geben, wie ich die richtige Ausgabe hinbekomme? Oder wo ich suchen muß? Mplayer mit mpegpes-Ausgabe? Oder das mplayer.sh-Skript?


    Vielen Dank und viele Grüße
    Herbert

  • mplayer.sh würde ich sagen.
    Handelt es sich um ein MPEG-Video in 16/9-Format? Wenn ja, dann stell mal in der mplayer.sh.conf MPEG_DIRECT auf false.


    Gruß,
    Juri

  • Hallo Juri,


    das ist eine mit dem Mencoder encodierte DivX-Datei mit (denke ich mal) anamorpher Quelldatei, nach dem Abscheiden der Ränder mit einer Auflösnug von 704*528. Das Aspekt-Verhältnis setzt er richtig, so daß das Abspielen mit dem FB- und X11-Ausgabedevice mit dem Mplayer OK ist.


    Hatte auch das mplayer.sh-Startscript ganz schwer im Verdacht und daher schon damit bzw. den Optionen herumprobiert. Die Option MPEG_DIRECT hatte ich mit "false" und "true" getestet, ohne daß sich was geändert hätte, ich verifiziere das aber heute abend noch einmal. Hatte im Script auch in einer Funktion, die die richtige Skalierung berechnet, einen Kommentar gefunden, daß das Aspekt-Verhältnis an dieser Stelle nicht berücksichtigt würde. Bin aber nicht so richtig daraus schlau geworden.


    Nur aus dem Kopf: aus der Ausgabe des Scripts würde ich schließen, daß er auf Grund des ihm bekannten (richtigen) Aspekt-Verhältnisses von 1.88 meint, die Ausgabe auf 1040*544 (ungefähr :-)) skalieren zu müssen. Und das kann ja nicht klappen, oder? Ich hätte da eher etwas in der Richtung 720*380 erwartet...


    Gruß Herbert

  • so, hab es nochmal ausprobiert und packe mal die LOGs dazu. Ob ich MPEG_DIRECT auf true oder false setze, ist übrigens bei der Bildschirmausgabe und in der LOG-Datei (bis auf eben diesen Parameter) identisch. Die LOG-Datei:



    Und nur zur Vollständigkeit: mit einem andern Ausgabe-Device sieht das mit der identischen Datei so aus:


    Code
    VDec: vo config request - 704 x 544 (preferred csp: Planar YV12)
    VDec: using Planar YV12 as output csp (no 0)
    Movie-Aspect is 1.84:1 - prescaling to correct movie aspect.
    VO: [vesa] 704x544 => 1002x544 Planar YV12


    Juri: hast Du jetzt noch ne Idee?


    Viele Grüße
    Herbert

  • Ja, nämlich daß ich endlich mal die Version fertigstelle, die die Aspect-Ratio berücksichtig und dementsprechend skaliert. Momentan geht das mplayer.sh-Skript immer davon aus, daß die Pixel 1:1 sind (man kann nur bei MPEG1/2 und neuerdings bei MPEG4 ein andere Ratio dem Film mitgeben).


    Das gleiche Problem besteht z.B. auch bei VDR-Aufnahmen von 16:9-Sendungen.
    Im Übrigen habe ich mich bezüglich des Parameter-Wertes geirrt:
    MPEG_DIRECT sollte auf "true" stehen, damit das Video unverändert an die Karte weitergereicht wird und somit der Decoder-Chip die Aspect-Ratio lesen und entsprechend umschalten kann - aber das macht für dich ja eh keinen Unterschied, da DIVX...


    Sorry, aber erstmal keine (schnelle) Lösung in Sicht.


    Gruß,
    Juri

  • Hallo Juri,


    meine eigentliche Befürchtung war, daß ich beim Codieren etwas falsch mache, so daß ich mir meine AVIs verhunzt hätte. Wenn das Problem bei Deinem Script liegt, dann lehne mich einfach zurück, benutzte die manuelle 4:3/16:9-Umschaltung des Fernsehers und freue mich darauf, daß Du vielleicht irgendwann Dein Script erweiterst.


    Vielen Dank für Deine Arbeit & viele Grüße
    Herbert

  • kenn ich, war aber nicht das Problem. "autoaspect" habe ich genutzt und damit war auch das Aspekt-Verhältnis richtig gesetzt. Nur das Abspielen mit dem mplayer.sh-Skript klappt nicht. Sonst ist die Ausgabe wunderbar. Oder meinst Du, daß es hilft, diese Optionen in das mplayer.sh-Script einzutragen und dann würde die Ausgabe klappen?



    Gruß Herbert

  • Edit: Vergeßt folgendes, ich hatte nicht gesehen, das dies *encoder*-Optionen sind. Spielt also sowieso keine Rolle für das mplayer.sh-Skript.


    [Bisher haben alle Optionen, die den Aspect beeinflussen, nicht bei MPEGPES-Ausgabe funktioniert. Wenn es neue gibt bzw. sich das Verhalten geändert hat, baue ich das natürlich gerne ein.]


    Gruß,
    Juri

  • so, mache mal Schluß. Ich soweit gekommen, daß ich die AVI-Datei mit

    Code
    /usr/bin/mplayer -vo mpegpes -ao mpegpes  -vf scale=-1:-2,expand=-1:576,lavc=5000 test.avi


    richtig abgespielt bekomme. Zur Erläuterung: scale -1 läßt die x-Achse unverändert, -2 skaliert die y-Achse entsprechend des Aspekt-Verhältnisses. expand -1 läßt die x-Achse unverändert, 576 skaliert das Bild auf 576 Pixel, damit das mpegpes-Ausgabedevice mitmacht. expand macht das, indem es schwarze Balken hinzufügt.


    Das wollte ich eigentlich genau so haben. Leider paßt das erstmal nur für diese Datei, im allgemeinen muß man da noch jede Menge Fallunterscheidungen unterbringen...


    Gruß Herbert

  • nichts zu danken. Habe ich übrigens aus der Doku des Mplayers entnommen. Da gibt es (neuerdings?) eine Option dvbscale:


    Zitat

    dvbscale[=aspect]

    Set up optimal scaling for DVB cards, scaling the x axis in hardware and calculating the y axis scaling in software to keep aspect. Only useful together with expand and scale.


    <aspect> Control aspect ratio, calculate as DVB_HEIGHT*ASPECTRATIO (default: 576*4/3=768 ), set it to 576*(16/9)=1024 for a 16:9 TV.


    EXAMPLE: -vf dvbscale,scale=-1:0,expand=-1:576:-1:-1:1,lavc


    Die Option dvbscale habe ich übrigens nicht zum Laufen bekommen (in der Doku steht auch nicht mehr drin). Aber die anderen erwähnten Optionen sind gut dokumentiert und haben dann das gewünschte Ergebnis gebracht. Beim Ausprobieren weiterer Dateien habe ich dann gemerkt, daß - je nach Auflösung - das Video horizontal zu groß skaliert wird und ne Falluntescheidung notwendig wird.


    Gruß Herbert

  • Hi,
    ich versuche mich auch schon einige Zeit damit, und Denke
    das man ohne Sourcecode zu ändern nicht weiter kommt.


    Wenn man sich das alles anschaut liegts warscheinlich am
    lavc filter der keine aspect_ratio weitergibt.


    Man unterscheide vf_lavc.c und ve_lavc.c im Verzeichnis libmpcodecs
    Das eine ist wohl nur ein filter nach mpeg, das andere wird wohl nur für den mencoder benutzt.
    Da hilft es nicht, das man Parameter für den aspect angibt die dann
    garnicht benutzt werden.
    Die einzigen Parameter die man übergeben kann, sind Bitrate und Framerate
    ab Zeile 180
    // TODO: parse args ->
    if(args) sscanf(args, "%d:%f", &p_quality, &p_fps);



    Hat jemmand eine Ahnung wie man das im Code einbringen kann ?

  • Hallo,


    denke, das Problem sollte weiter vorne in der Filterkette gelöst werden. Mein Ansatz war, die Ausgabe mit "scale" so zu skalieren, daß auch das Aspekt-Verhältnis stimmt. Und "scale" bekommt das unter Beachtung des Aspekt-Verhältnisse mit den entsprechenden Parametern definitiv hin. Mit "expand" habe ich dann nur noch die entsprechenden schwarzen Balken hinzugefügt. Und wenn die beiden alles richtig gemacht haben, dann sollte der lavc-Filter auch die Finger von der Skalierung lassen, sonst würde der alle Vorarbeiten zu nichte machen, oder liege ich da ganz falsch?


    Gruß Herbert

Jetzt mitmachen!

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