Steigern der Bildqualität des MPlayer Plugins

  • Da die Datenrate bei meiner FF Karte ziemlich beschränkt ist, muss ich in der mplayer.sh.conf Datei immer eine niedrige Bitrate wählen, damit die Filme bei aufwendigen Szenen nicht zum Stottern anfangen.


    Dadurch kommt es aber zu den bekannten Komprimierungsartefakten in Form von Blöcken. Deshalb hab ich mir mal den Code vom lavc Video Filter des MPlayers genauer angesehen. Dieser verwendet lediglich I-Frames, was dazu führt, dass bei niedrigen Bitraten eben genau diese Probleme auftreten.


    Also hab ich gestern einfach mal einen neuen Video Filter auf Basis des lavc geschrieben bei dem man jetzt zwischen Mpeg1 und Mpeg2 wählen und die Gop-Size (0 = nur I-Frames) setzten kann.


    Die Bildqualität steigt um einiges, jedoch wird dadurch auch die CPU mehr belastet. Bei meinem 1.2 GHz AMD Prozessor stieg die CPU Usage von 50% auf 60% an.


    Um den Filter mit dem VDR zu verwenden muss lediglich der Video Out Filter in der mplayer.sh.conf geändert werden:


    Das setzt natürlich einen angepassten MPlayer mit dem neuen Filter voraus.
    Im Anhang ist eine Diff Datei des MPlayers (gegen die Version des debian-multimedia repository)


    Viel Spaß mit mehr Bildqualität beim Videoabend!


    mfg LAva

  • Sehr schön, das klingt genau nachdem was ich noch gesucht habe. :)
    Werde den Patch mal testen.


    Bei der AVI Wiedergabe per Mplayer-Plugin/FF-Karte langweilt sich meine CPU sowieso, da macht ein bissel mehr Auslastung nix aus. Bin ja mal gespannt wie das mit der Bildqualitätsverbesserung ausschaut.

  • Bin schon gespannt wie es dir damit geht!


    Wenn sich deine CPU langweilt könnte ich auch noch die Option für eine minimale Bitrate und eine maximale Bitrate integrieren.
    Damit wird das Ergebnis noch besser, aber bei mir schafft das der Rechner nicht mehr dauerhaft unter 100% CPU Last.

  • Hallo,


    klingt in der tat sehr gut :), bin dabei mir das anzuschauen.


    P.S. weis jemand ob man noch den slave-mode patch für die aktuelle 1.0rc2 braucht damit das replay OSD funktioniert ? (denke mal ja)


    Und wenn ja wo es ein aktuelles gibt ? (Mit dem letzte aus mp3-0.10.1 - mplayer-1.0cvs20070302-slavemode.diff) klappt es leider nicht mit der 1.0rc2 :

    Code
    cc -I./libavcodec -I./libavformat -Wdisabled-optimization -I. -I. -I./libavutil -Wall -Wno-switch -Wpointer-arith -Wredundant-decls -O4 -march=pentium3 -mcpu=pentium3 -pipe -ffast-math -fomit-frame-pointer -D_REENTRANT -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_LARGEFILE64_SOURCE -DHAVE_CONFIG_H -I/usr/include/directfb -I/usr/X11R6/include  -I/usr/include/SDL -D_REENTRANT   -I/usr/include/freetype2 -I/usr/include   -c -o mplayer.o mplayer.c
    mplayer.c: In function `main':
    mplayer.c:3560: error: structure has no member named `delay'
    make: *** [mplayer.o] Error 1


    Und auch nicht mit der 1.0rc1 :( habe ich gerade auch noch getestet.


    Gruß
    Viking

  • Ich hab den Patch mal angewendet (allerdings unter Gentoo auf den 1.0rc2 Mplayer, gab zwar zwei Rejects, aber die waren schnell gefixt. ;) ). OSD Probleme im Slavemodus konnte ich keine feststellen.


    Es funktioniert, CPU-Last ist auch bei mir ca. 10% höher, allerdings komme ich vorm Wochenende nicht an meinen übermotorisierten VDR ran, d.h. ich teste den Patch grade auf einem 1.2Ghz Jetway/Epia Board. Trotzdem habe ich bei ersten Tests den Eindruck das die FF-Karte mit dem Stream jetzt besser klar kommt (was Ruckler/Aussetzer angeht). Die Bildqualität kann ich nicht wirklich auf dem System beurteilen, da ich hier immer mit Slow CPU = True arbeiten muss, da wird die Auflösung ja begrenzt und eine Qualitätsverbesserung ist dann kaum sichtbar. Werde das noch weiter Testen.

  • Zitat

    Original von lava
    Bin schon gespannt wie es dir damit geht!


    Wenn sich deine CPU langweilt könnte ich auch noch die Option für eine minimale Bitrate und eine maximale Bitrate integrieren.
    Damit wird das Ergebnis noch besser, aber bei mir schafft das der Rechner nicht mehr dauerhaft unter 100% CPU Last.


    So, habs jetzt mal ausprobiert und die Bildqualität gefällt mir gut. Saubere Arbeit!
    Ich habe aber immer noch zuviel freie CPU-Zeit übrig, wenn es also noch möglich ist die Bildqualität weiter zu steigern währe ich auch sehr an deinem min/max Bitratenpatch interessiert. ;)

  • moin,

    Zitat

    Original von Ioannis
    Ich hab den Patch mal angewendet (allerdings unter Gentoo auf den 1.0rc2 Mplayer, gab zwar zwei Rejects, aber die waren schnell gefixt. ;) ). OSD Probleme im Slavemodus konnte ich keine feststellen.
    ....


    wie haste das mit diesen Teil des Rejects aus dem Makefile geregelt,

    Code
    + SRCS-$(CONFIG_LIBAVCODEC_SO)  += ad_ffmpeg.c vd_ffmpeg.c vf_lavc.c vf_lavcdeint.c vf_lavcmpeg2.c


    habes mal vorerst weggelassen ?
    mfg

  • Hi


    Hab den Patch im Einsatz, Quali ist auch ziemlich gut, jedoch gibts so ruckler ab und zu, wenn ich dann eine Minute zurückspule gehts es so 10Minutes gut und nacher gibts wieder ruckler.


    Die CPU-Last ist auf ca. 50-60% sollte also genug Leistung haben.


    Was habt ihr so für Cache und lavcmpeg2 Einstellungen?


    Gruss

  • Hallo,


    vieleicht bin ich ja zu blöd ;)


    Ich sehe auf meinen 32" 16:9 röhrenfernseher keinen unterschied zwischen "lavc=6000" und "lavcmpeg2=2:3000:6" außer das die CPU 20% mehr zu tun hat.


    Bei welche einstellungen/material sieht ihr einen erfolg ?


    Ich will auf keinen fall die leistung von lava hier schmälern, ich möchte nur einen unterschied feststellen können :)


    Hier die komplette zeilen (aus dem syslog) :

    Code
    /usr/bin/mplayer -vo mpegpes -ao mpegpes -vf scale=720:576,expand=720:576:-1:-1:1,lavc=6000:25   -cache 4096 -slave -nolirc  -subpos 80 -sub-bg-color 0 -sub-bg-alpha 30 -quiet 
    /usr/bin/mplayer -vo mpegpes -ao mpegpes -vf scale=720:576,expand=720:576:-1:-1:1,lavcmpeg2=2:3000:6:25   -cache 4096 -slave -nolirc  -subpos 80 -sub-bg-color 0 -sub-bg-alpha 30 -quiet


    Gruß
    Viking

  • Genau darum gehts.
    Ich kann auch nicht mit lavc=6000 fahren, weil sonst die Wiedergabe immer ruckelt.


    Jetzt bekomme ich auch eine gute Qualität mit 3000 und es gibt kein ruckeln mehr.


    Wenn du beide auf 1000 oder 2000 stellst, siehst du den Unterschied.
    Natürlich nimmt dieser bei höherer Bitrate ab.


    Es hilft auch die Wiedergabe an komplexen Scenen zu stoppen. Dann kann man leichter die Blockbildung erkennen.


    Mit einer maximalen Bitrate könnte man sich geziehlt an die maximale Übertragungsrate der DVB Karte nähern und so den MPlayer mit einer höheren durchschnittlichen Datenrate benützen. Außerdem sollte damit das Ruckeln entgültig der Vergangenheit angehören, weil eben die maximale Datenrate der Karte nicht mehr überschritten wird.


    Ich hatte leider noch keine Zeit, aber ich hoffe ich komme diese Woche dazu das zu implementieren.

  • Zitat

    Original von lava
    Stimmt.


    Ich werd mich mal erkundigen, wie ich das am besten den mplayer leuten zu kommen lassen kann.


    Ich hab auf der mplayer Seite keine Kontaktmöglichkeit ausser der Mailinglist
    gefunden. Man könnte doch mal nachfragen, ob die den slavemode-Patch
    auch noch einbauen könnten.

  • Soda!


    Ich hab mal eine neue Version des lavcmpeg2 Filters erstellt.
    Jetzt gibt es noch einige zusätzliche optionale Parameter.


    Die Syntax hat sich auch etwas geändert.


    Der quality Wert muss wie beim lavc immer angegeben werden.
    Die restlichen Parameter kann man optional und in beliebiger Reihenfolge hinzufügen.



    Wenn man maxrate verwenden will, sollte man die selbe Datenrate bei quality und maxrate einstellen.
    Ob die Bitrate wirklich durch maxrate eingeschränkt wird und somit die Ruckler der Vergangenheit angehören, kann ich leider nicht sagen, da das meine CPU nicht mehr schafft.


    Ich bin schon auf eure Testergebnisse gespannt.

Jetzt mitmachen!

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