Video im Mediaplayer per Konsole starten

  • Hi all,


    Ich versuche mich daran ein kleines Python Skritp zu erzeugen, dass letztlich einfach ein Video abspielt.


    Es soll dabei am besten den MediaPlayer benutzen oder dessen Routinen, da dieser ja die Hardwareunterstüzung nutzt. Andere Player wie mplayer o.ä. tun dies ja nicht.


    Ich hab mich da ein bisschen dran versucht aber komme nciht weiter.


    Den aktuellen TV Betrieb bzw. allgemein alle anderen Services, die eventuell den Videooutput stören könnten wollte ich mit


    Code
    self.oldService = self.session.nav.getCurrentlyPlayingServiceReference()
    	self.session.nav.stopService()


    beenden und vorhalten, damit ich nach abspielen des Videos das ganze wieder starten kann.


    Aber das abspielen einer definierten Videodatei, die ich später als string an das Skript per konsole weiterreichen lassen will, bekomme ich noch nicht hin.


    Dachte es wäre vermutlich sowas

    Code
    self.session.nav.playService('/media/hdd/test.avi')


    Ist vermutlich nicht ganz so einfach, wie ich mir das gehofft hatte, aber vielleicht kann mich einer von Euch auf den richtigen pfad bringen?


    Danke euch :)

  • na ja nahe dran :)


    Schnell aus der plugin.py vom PermanentRecording Plugin geklaut:


    Mit Mediaplayer abspielen:
    from Screens.InfoBar import MoviePlayer
    ref = eServiceReference(1, 0, "/pfad/file.ts")
    self.session.open(MoviePlayer,ref)


    oder einfach so abspielen (ref= bleibt gleich):
    self.session.nav.playService(ref)

  • ah, auf dich ist doch immer wieder verlass.


    also ist letztlich an der übergabe gescheitert, sprich die syntax für den ref war falsch.


    werd ich morgen gleich mal testen müssen! vielen vielen dank schonmal!



    edit:
    muss mir das wohl morgen nochmal in ruhe anschauen, weill ich nun durch den import der eServiceReference den fehler

    Python
    Traceback (most recent call last):
      File "/usr/lib/enigma2/python/Plugins/Extensions/test/plugin.py", line 2, in <
    module>
        from enigma import eTimer,  eServiceReference, eServiceCenter, iServiceInform
    ation, eEPGCache
    ImportError: No module named enigma


    kriege. aber das ganze soll ja per konsole aufrufbar sein..

  • du kannst das nicht als python script ohne enigma2 aufrufen, die ganzen e* routinen sind nur gewrappteer c++ code womit du dann aufgeschmissen bist wenn der nicht läuft. Dann bleibt nur aufrufen übers WebIF - syntax ist aber ähnlich - aufnahmen haben halt immer 1:0:0... als serviceref vorne dran am filenamen

  • hmmmm
    das ist dann ein problem. das ganze soll im prinzip über shell skripte aufrufbar sein.
    hätte gedacht, dass die effektivste art ein video abzuspielen eben wäre das video über ein solches python skript über den movieplayer abspielen zu lassen.


    muss doch irgendwie möglich sein ein video per shell skript, sprich letztlich per telnet ferngesteuert abspielen zu lassen ohne auf die intere hardwarebeschleunigung des movieplayers zu verzichten.

  • das ist aber im enigma2 fix verbaut, oder du machst dir eigenen Player - so wie ich mit QuickTV :)

  • ja, hatte eigentlich gehofft, dass ein kleines python skript das erfüllen könnte.
    verstehe ich dich also richtig, dass ich letztlich ein eigenes bin erzeugen müsste?


    wenn ja, kennst du eventuell eine doc quelle, wo ich mich dazu einlesen könnte? damit kenne ich mich nämlich leider noch nicht aus.
    zumal ja auch hier wieder das problem ist, dass ich die hardware-dekodierung der videos ansprechen muss.
    wenn ich nicht die volle hardware-unterstützung zur dekodierung der divx etc. nutzen kann, bin ich nämlich aufgeschmissen.


    dazu müsste ich die treiber ja vermutlich direkt ansprechen, während mit python ich die bereits vorhanden schnittstellen des movieplayer nutzen wollte.

  • nein wenn die treiber das können musst du ihnen einfach nur das avi zum Fraß vorwerfen. Nur wenn du das gstreamer Framework zum de/rekodieren brauchst wird es kompliziert.


    Im tuxbox cvs sind einfach beispiele um ein ts fiel abzuspielen, wenn man die ein bischen anpasst (die ioctl um das videodevice richtig einzustellen muss man sich aus dem enigma zusammensuchen) kann man sich daraus leicht simplen playr basteln der dann auch ohne enigma2 läuft. Das QwickTV war ja nur der schlimmste Fall - mit dem coe vom szap den tuner einstellen, und daten von dort in den demux und ins vide device zu blasen das du TV gucken kanns ohne enigma2 überhaupt zu starten. Dann noch Fernbedienungssupporrt rein zum zappen und lauter leiser drehen - ist schon fast ein mini LinuxTV geworden - hat aber Spaß gemacht es zu machen, aber wnen mir adenin nicht geholfen hätte glaube ich nicht das ich es geschafft hätte. Was Du willst ist ja simpler :)


    Ich verstehe aber nicht warum du das nicht über webif befehle das enigma2 abspielen lassen willst, dort hast du alles was du brauchst und musst dich nicht quälen - weil nur mit dem abspielen ist es jan icht getan, du willst auch spulen, springen, anhalten können....


    LG
    gutemine

  • ne, geht ja mehr drum kleine videos im betrieb abspielen zu lassen. egal ob in menus oder sonstwas.
    der player wird also vom system aufgerufen über shell skripte. automatisch. es sind also auch weder spulen noch pause oder sonstiges von nöten.


    aufrufen und video abspielen bis video beendet. sonst garnix.


    simpler als das QuickTV ist das bestimmt für dich :)
    für mich ist es gleich, ob ich aus dem 15 stock springe oder dem 20ten :grinning_squinting_face:


    ich hab z.b. mal den mplayer probiert. aber das scheint die hardwaredekodierung nicht zu nutzen. arbeitet wohl mit den ffmpeg etc. dekodern softwarebasierend.


    ich schau mit das cvs mal an, ob ich was finden kann.
    sieht aber von deiner beschreibung wohl so aus, als ob ich das nciht alleine hinbekommen werde.
    schade :frowning_face: