getPlayPosition gibt falschen Wert zurueck

  • habe beobachtet, dass bei getPlayPosition ab und zu und intermittierend beim abspielen einer ts-aufnahme vom anfang an ein wert zurueckgegeben wird, der mitten im film liegt.
    nach ner kurzen zeit wird dann der richtige wert zurueckgegeben.
    ist das bekannt und gibt es dafuer einen workaround?
    danke.

    Code
    1. self.session.nav.playService(self.service)
    2. seek = self.getSeek()
    3. pos = seek.getPlayPosition()
  • in einem plugin habe ich gesehen, dass nach dem ....nav.playService


    Code
    1. self.setSeekState(InfoBarSeek.SEEK_STATE_PLAY)
    2. self.doSeek(0)

    sollte eigentlich nicht noetig sein, oder?

  • also... habe das mal weiter analysiert...
    setSeekState, doSeek(0) oder doSeek(nnn) nach playService
    bringt alles nichts.


    aber ich habe festgestellt, dass die ersten ca 15. getPlayPosition() nach playService immer falsche werte zurueckgeben.
    aber:
    getPlayPosition returned ja eine menge mit [X, position] .... wobei X anscheinend anzeigt, ob der wert ok ist oder nicht: X = -1 nicht ok, X = 0 ok
    in den meisten faellen werden die ersten 15 falschen werte mit -1 als falsch gekennzeichnet.
    nur in manchen faellen steht bei den ersten 15 falschen werten X=0.... warum? bug?


    hab jetzt mal als wuergaround einen skip_counter eingebaut, der die ersten 20 werte wegwirft. damit sieht man das problem in der infobar nicht mehr.

  • Wo genau beobachtest Du das denn, dass der Wert nicht stimmt?


    habe beobachtet, dass bei getPlayPosition ab und zu und intermittierend beim abspielen einer ts-aufnahme vom anfang an ein wert zurueckgegeben wird, der mitten im film liegt.
    nach ner kurzen zeit wird dann der richtige wert zurueckgegeben.
    ist das bekannt und gibt es dafuer einen workaround?
    danke.

    Code
    1. self.session.nav.playService(self.service)
    2. seek = self.getSeek()
    3. pos = seek.getPlayPosition()


    Dein Codebeispiel ist auf jeden Fall so, wie Du das hier gemacht hast, nicht in der Praxis anwendbar.


    Nur weil Du ein playService angestoßen hast, wird dieser nicht "sofort" abgespielt. Dafür gibt es Events, die Dich benachrichtigen, dass der Service auch wirklich abgespielt wird. Erst dann macht es Sinn, die Play-Position abzufragen.


    getPlayPosition gibt 2 Werte zurück, wie Du richtig erkannt hast, nämlich -1 (die Position ist nicht ermittelbar) oder 0 in der ersten Dimension, ggf. die Playposition, wenn Dim1 == 0 ist.
    Somit ist der Code an der Stelle, welcher Sven gepostet hat, richtig.



    Code
    1. if pos[0]:
    2. return 0
    3. return pos[1]


    Dieser Fall tritt ein, wenn -1 zurückgegeben wird, sprich die If-Anweisung zieht. In diesem Fall kann Enigma2 noch nicht die Position bestimmen (vielleicht wird das Video zu diesem Zeitpunkt noch nicht abgespielt), es wird also Playposition = 0 gesetzt in dem Code.


    Wenn die If-Anweisung nicht zieht ( also pos[0] == 0 ist ;) ), dann wird die PlayPositon in pos[1] zurückgegeben.



    Es ist also alles in Ordnung, was Enigma2 da macht. Ich kann da keinen Bug erkennen.

  • also... aufgefallen ist mir die sache in der infobar, dass am anfang kurz eine falsche position innerhalb des films oder sogar jenseits des endes des films angezeigt wird... aber nur ganz kurz, danach stimmte dann ohne weiteres zutun die position.
    um genauer nachzusehen habe ich im converter serviceposition ein print eingebaut und gesehen, dass die ersten werte falsch sind.
    das mit der abfrage von pos[0] ist mir klar und verhindert in den meisten faellen ja auch, dass die falschen werte angezeigt werden. nur in vereinzelten faellen stimmt halt pos[0] nicht. ist 0 und sollte -1 sein..., und es wird daher nicht 0 sondern die falschen werte zurueckgegeben.

  • Es gab hier vor Jahren auch schon einen ähnlichen Thread, evtl. steht es auch in diesem Zusammenhang.


    Ich habe das auch manchmal, dass beim Abspielen einer noch laufenden Aufnahme irgendwann die Zahlentasten nicht mehr funktionieren.
    Eigentlich passiert das immer erst gegen Ende des Films. Dann kommt es mir so vor, als ob die PlayPosition nicht stimmt - dann springt man mit den Zahlentasten plötzlich ans Ende der Aufnahme obwohl das nicht korrekt ist.
    Man kann dann auch nicht mehr zurück springen.


    Bug beim Spulen in Aufnahmen in OE2.2

  • @Dr.Best
    Ich kenn nur das bekannte Problem mit non-TS (was ich schonmal erwähnt hatte) und da ist GST schuld. Aber das kann bei TS ja nicht sein außer alpha spielt sie falsch ab, und es betraf auch nur sehr sehr kurze Files <2min Laufzeit.