Das ist eine gute Idee!
Das nächste mal werd ich es gegen den debian-multimedia und gegen das SVN machen.
Ich hoffe du schaffst es dieses mal noch händisch (sollte ja nicht wirklich schwer sein )
Steigern der Bildqualität des MPlayer Plugins
- lava
- Closed
-
-
Klar ist kein Problem, nur mühsam, danke schonmal
-
vielen dank lava.
seit jahren warte ich nun schon vergeblich darauf das sich jemand der sache annimmt zumal es ja auch schon ewig in der todo-liste von mplayer steht.ich habe in eingebaut und die ersten ergebnisse sind so ermutigend das ich in in meine mplayer-configfiles übernommen habe.
bisher setzte ich all die jahre verschiedene optimierte mplayer.sh ein um je nach anforderungen die optimale qualität zu erreichen.ein fester quantisierungsfaktor scheint wenig effizient zu arbeiten wärend die angabe der datenrate deutliche vorteile bringt.
lange gops verusachen zunehmend asynchronen ton weswegen man diesen wert wohl nicht zu groß wählen sollte.
eine sekunde scheint ganz gut zu funktionieren.im anhang findet ihr ein angepaßten patch für den mplayer-1.0rc2.
kopiert in nach /libmpcodecs und führt in dort aus da er keine pfadangaben enthällt. -
mit bestimmten videos von mir gibt es ein problem mit lavcmpeg2 UND dem parameter "mpeg=2".
dabei tritt eine art extremer motionblur-effekt auf wenn sich objekte horizontal durch das bild bewegen.
mit "mpeg=1" ist die wiedergabe genau wie mit lavc ganz normal.bei den videos handelt es sich um tv-mitschnitte welche ich mit ffmpeg nach h.264 kodiert habe.
andere videos vom selben sender und ähnlicher verarbeitung laufen wiederum normal.ich kann es mir nicht so richtig erklären aber der einzige unterschied zwischen den videos dürfte der verwendette deinterlacer bei der konvertierung oder evt. auch ein einzelner parameter des .264-codecs sein.
-
Ein interessantes Problem!
Ich habe bis jetzt noch keinen Unterschied zwischen mpeg1 und mpeg2 entdecken können. Aber genau so etwas ist der Grund warum bei lavcmpeg2 alle Optionen verändert werden können.Freut mich das es einigen Leuten nützt!
-
das prb. mit den fehlerhaft wiedergegebenen videos hat sich erledigt.
die konsolenausgabe von mplayer bringt bei den betreffenden videos die folgende fehlermeldung.[h264 @ 0x888dd50]MBAFF + spatial direct mode is not implemented
offenbar gibt es da eine wechselwirkung zwischen den dekodierten bildern und den kodieren nach mpeg2 welche mit mpeg1 nicht auftritt.
die ursache ist also ein von mir verwendetter parametert des .h264-ffdshow-codecs welcher von mplayer bisher noch nicht unterstützt wird.
die einfache wiedergabe und das rekodieren nach mpeg1 klappt zwar schon fehlerfrei aber offenbar nicht das fehlerfreie komprimieren nach mpeg2.das prb. wird also auf einer anderen baustelle behoben.
ich habe xvid,mpeg1+2,flv,real und x264-codes erfolgreich sowohl mit 25fps als auch mit 30fps fehlerfrei getestet.
mit den optionen min und max stimmt aber entweder etwas noch nicht oder ich habe sie falsch verwendet.
mit diesen parametern bekomme ich ein starkes ruckeln oder stottern in die wiedergabe weswegen ich meine optimierungsversuche erstmal abgebrochen habe.bei mir werkelt ein amd xp-mobile mit 2,4ghz mit einer dvb-s 1.3 im einzelbetrieb.
der pci-takt ist 5% erhöht was sich positiv auf die ruckler auswirkt und einen nachweisbaren einfluß für die datenrate hat bis zu welcher noch ruckelfreies abspielen mit lavc möglich ist.
auch bei mir ist mit lavcmpeg2 die cpu-last ungefähr 10% gegenüber lavc erhöht was erfreulich gering ist.
der kritischste anwendungsfall liegt in der praxis immer dann vor wenn über die dvb-karte bereits aufnahmen mit hohem datentransfer laufen und wärenddessen dann noch eine wiedergabe von mplayer gestartet wird.
bisher hatte ich dazu spezielle lowquality-configfiles für mplayer über das vdr-menü "befehle" einsatzbereit um auch unter diesen bedingungen ruckelfrei videos abspielen zu können.nun ist das praktisch überflüssig geworden da ich mit "lavcmpeg2=3100#mpeg=2#gopsize=26:25" selbst mit zwei laufenden aufnahmen immer noch eine sehr gute wiedergabequalität ruckelfrei hinbekomme.
zum testen habe ich auf besonders kritische videoszenen mit vielen harten kontrastsprüngen im bildinhalt zurückgegriffen.
mit zwei gleichzeitigen aufnahmen von sendern mit sehr hoher datenrate bleibt es bis etwa 2000kbit/s,ohne aufnahmen im hintergrund bis etwa 8000kbit/s ruckelfrei auf meinem system.
das limit der dvb-karte liegt vermutlich irgendwo bei 13mbit/s stotterfreien gesamtdatentransfer.ein manko ist noch das stottern in den ersten sekunden zu beginn einer wiedergabe welches bei reinen i-frames nicht aufgetreten ist.
vermutlich läßt sich das wohl auch nicht beheben.
es läßt sich aber mit der größe der gops beeinflussen. -
Danke für dieses Filter. Hat sehr gut funktioniert.
Aber in de letzter SVN version von mplayer bekomme ich:
l
ibmpcodecs/libmpcodecs.a(vf_lavcmpeg2.o): In function `open':
vf_lavcmpeg2.c:(.text+0x60): undefined reference to `avcodec_inited'
vf_lavcmpeg2.c:(.text+0x1ac): undefined reference to `avcodec_inited'
collect2: ld returned 1 exit status
make: *** [mplayer] Fout 1Ist es möglich das filter an die mplayer enwicklung an zu bieten ?
m fr gr.
Carel
-
-
Ist das Problem mitlerweile behoben worden oder muss man mplayer immer noch patchen?
-
Hallo,
der mplayer muss noch immer gepatched werden...
Ich habe das heute Abend mal gemacht und ein deb für ct'vdr erstellt.
Die hier vorgeschlagenen Einstellungen mit Bitrate auf 3000 haben bei mir nur Ruckler erzeugt. Erhöhe ich die Bitrate auf 8000 (lavcmpeg2=8000#mpeg=2#gopsize=16maxrate=8000) habe ich ein ruhiges und gutes Bild. Der Patch bringt wirklich was.
Gruß,
Moses123 -
Hi,
danke für die Antwort. Ich habe versucht das unter Lenny zu patchen, aber das ist schwerer als es sein sollte. Der Patch funktioniert nicht mit der Mulitimedia Repro zusammen. Daher habe ich den Patch angepasst und zum Schluss auch kompeliert bekommen. Leider bekomme ich kein mplayer Bild dann auf den VDR.
Daher hätte ich interesse an deinem deb packet, denn leider habe ich kein fertiges deb für dieses Problem gefunden.
-
Yes, we can!
mplayer-rc4 ist geboren.Leider bekomme ich den lavcmpeg2-encoder nicht mehr in die Sourcen des rc4 integriert.
Bis zum rc3 funktioniert der Code noch ohne Veränderungen.Es wäre schön wenn sich Jochen oder jemand anderes mit mehr Kompetenz als Ich der Sache mal annehmen könnte.
Vermutlich müssen einige Variablen in der vf_lavcmpeg2.c angepasst werden.Code
Display Moregcc -MD -MP -Wstrict-prototypes -Wmissing-prototypes -Wundef -Wdisabled-optimization -Wno-pointer-sign -Wdeclaration-after-statement -std=gnu99 -Wall -Wno-switch -Wpointer-arith -Wredundant-decls -O4 -march=athlon-xp -mtune=athlon-xp -pipe -ffast-math -fomit-frame-pointer -Wstrict-prototypes -Wmissing-prototypes -Wundef -Wdisabled-optimization -Wno-pointer-sign -Wdeclaration-after-statement -std=gnu99 -Wall -Wno-switch -Wpointer-arith -Wredundant-decls -O4 -march=athlon-xp -mtune=athlon-xp -pipe -ffast-math -fomit-frame-pointer -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_LARGEFILE64_SOURCE -Ilibdvdread4 -I. -D_REENTRANT -pthread -I/usr/include/kde/artsc -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include -I/usr/include/freetype2 -I/usr/include/gtk-2.0 -I/usr/lib/gtk-2.0/include -I/usr/include/atk-1.0 -I/usr/include/cairo -I/usr/include/pango-1.0 -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include -c -o libmpcodecs/vf_lavcmpeg2.o libmpcodecs/vf_lavcmpeg2.c libmpcodecs/vf_lavcmpeg2.c:31: warning: no previous prototype for 'explode' libmpcodecs/vf_lavcmpeg2.c:67: warning: 'struct vf_instance_s' declared inside parameter list libmpcodecs/vf_lavcmpeg2.c:67: warning: its scope is only this definition or declaration, which is probably not what you want libmpcodecs/vf_lavcmpeg2.c: In function 'config': libmpcodecs/vf_lavcmpeg2.c:68: warning: passing argument 1 of 'vf_next_query_format' from incompatible pointer type libmpcodecs/vf_lavcmpeg2.c:70: error: dereferencing pointer to incomplete type libmpcodecs/vf_lavcmpeg2.c:71: error: dereferencing pointer to incomplete type libmpcodecs/vf_lavcmpeg2.c:73: error: dereferencing pointer to incomplete type libmpcodecs/vf_lavcmpeg2.c:73: error: dereferencing pointer to incomplete type libmpcodecs/vf_lavcmpeg2.c:78: error: dereferencing pointer to incomplete type libmpcodecs/vf_lavcmpeg2.c:85: error: dereferencing pointer to incomplete type libmpcodecs/vf_lavcmpeg2.c:93: error: dereferencing pointer to incomplete type libmpcodecs/vf_lavcmpeg2.c:93: error: dereferencing pointer to incomplete type libmpcodecs/vf_lavcmpeg2.c:95: error: dereferencing pointer to incomplete type libmpcodecs/vf_lavcmpeg2.c:96: error: dereferencing pointer to incomplete type libmpcodecs/vf_lavcmpeg2.c:96: error: dereferencing pointer to incomplete type libmpcodecs/vf_lavcmpeg2.c:98: error: dereferencing pointer to incomplete type libmpcodecs/vf_lavcmpeg2.c:98: error: dereferencing pointer to incomplete type libmpcodecs/vf_lavcmpeg2.c:103: error: dereferencing pointer to incomplete type libmpcodecs/vf_lavcmpeg2.c:108: warning: passing argument 1 of 'vf_next_config' from incompatible pointer type libmpcodecs/vf_lavcmpeg2.c: At top level: libmpcodecs/vf_lavcmpeg2.c:111: warning: 'struct vf_instance_s' declared inside parameter list libmpcodecs/vf_lavcmpeg2.c: In function 'put_image': libmpcodecs/vf_lavcmpeg2.c:114: error: dereferencing pointer to incomplete type libmpcodecs/vf_lavcmpeg2.c:123: error: dereferencing pointer to incomplete type libmpcodecs/vf_lavcmpeg2.c:124: error: dereferencing pointer to incomplete type libmpcodecs/vf_lavcmpeg2.c:124: error: dereferencing pointer to incomplete type libmpcodecs/vf_lavcmpeg2.c:128: error: dereferencing pointer to incomplete type libmpcodecs/vf_lavcmpeg2.c:132: error: dereferencing pointer to incomplete type libmpcodecs/vf_lavcmpeg2.c:132: error: dereferencing pointer to incomplete type libmpcodecs/vf_lavcmpeg2.c:133: error: dereferencing pointer to incomplete type libmpcodecs/vf_lavcmpeg2.c:134: error: dereferencing pointer to incomplete type libmpcodecs/vf_lavcmpeg2.c:135: error: dereferencing pointer to incomplete type libmpcodecs/vf_lavcmpeg2.c:137: error: dereferencing pointer to incomplete type libmpcodecs/vf_lavcmpeg2.c:139: warning: passing argument 1 of 'vf_next_put_image' from incompatible pointer type libmpcodecs/vf_lavcmpeg2.c: At top level: libmpcodecs/vf_lavcmpeg2.c:144: warning: 'struct vf_instance_s' declared inside parameter list libmpcodecs/vf_lavcmpeg2.c: In function 'query_format': libmpcodecs/vf_lavcmpeg2.c:149: warning: passing argument 1 of 'vf_next_query_format' from incompatible pointer type libmpcodecs/vf_lavcmpeg2.c: In function 'open': libmpcodecs/vf_lavcmpeg2.c:166: warning: assignment from incompatible pointer type libmpcodecs/vf_lavcmpeg2.c:167: warning: assignment from incompatible pointer type libmpcodecs/vf_lavcmpeg2.c:168: warning: assignment from incompatible pointer type make: *** [libmpcodecs/vf_lavcmpeg2.o] Fehler 1 [root@localhost MPlayer-1.0rc4]#
Participate now!
Don’t have an account yet? Register yourself now and be a part of our community!