Im Plugin einen Ton im Hintergrund abspielen (zusätzlich zum TV-Ton)

  • Hallo


    Nach einem Hinweis im NN2-Forum habe ich festgestellt, dass das pzyMail-Plugin das Abspielen eines Benachrichtigungstons bei neuer Mail nicht sehr nutzerfreundlich ausführt ;)

    Dabei wird das laufende TV-Programm beendet (Bild wird schwarz und Ton ist aus), dann wird die Ton-Datei (mp3) abgespielt, wobei der Inhalt nicht zu hören ist.

    Ist mir bisher nicht aufgefallen, da ich diese Option zum Abspielen eines Benachrichtigungstons noch nie aktiviert hatte.


    Gibt es da eine bessere Variante, um eine mp3 direkt aus dem Plugin heraus im laufenden TV-Betrieb zusätzlich auf den TV-Ton draufzulegen ?


    So macht es das pzyMail-Plugin derzeit, was aber eben eine unschöne Lösung ist:

    Gruß Sven (aka Dreamy)


    (DM920 mit unstable OE2.5 DMM)

  • dhwz

    Es scheint wohl grundsätzlich doch zu gehen ;)

    Hab da gerade mal etwas getestet, was leider aber bisher keine nutzbare Lösung wäre.


    Hab dir mal per irc geschrieben.

    Gruß Sven (aka Dreamy)


    (DM920 mit unstable OE2.5 DMM)

  • gutemine

    Danke für den Hinweis ;)


    Hast du da irgendwo einen Link oder ein Beispiel für dieses alsa (aplay) ?

    Das sagt mir bisher absolut gar nichts ;)


    Im Moment hab ich das hier als Lösung erfolgreich auf einer 920 getestet ;)

    Code
    1. from enigma import eConsoleAppContainer
    2. self.container = eConsoleAppContainer()
    3. cmd = 'gst-launch-1.0 playbin uri=file:///usr/share/enigma2/mail.mp3 audio-sink="alsasink"'
    4. self.container.execute(cmd)

    Leider funktioniert das lt. dhwz so auf einer One nicht.

    Da gibt es bei dem Telnet-Befehl diesen Fehler:

    Code
    1. Setting pipeline to PAUSED ...
    2. ERROR: Pipeline doesn't want to pause.
    3. ERROR: from element /GstAlsaSink:alsasink0: Could not open audio device for playback. Device is being used by another application.

    Gruß Sven (aka Dreamy)


    (DM920 mit unstable OE2.5 DMM)

  • Das ALSA Device ist die unterste Ebene für den Sound und wird immer exclusiv geöffnet. Da enigma2 das ALSA-Gerät öffnet, kann man es nicht anderweitig nutzen. Wenn das Audio-Layer Pulse-Audio mit Mixing Fähigkeiten das ALSA-Gerät nutzen würde und enigma2 Pulse-Audio kann es gehen. Aber dazu ist viel Aufwand in der Software notwendig...

    Solche Änderungen plant man normalerweise für ein neues OE.

    Ich sehe im Augenblick keine reale Chance.

  • Aber klar kann man wenn man eine alsa shared Lib in Python verwendet da auch das vom E2 geöffnete alsa dev aufmachen, du musst nur in /proc den filepointer rausfinden, aber da muss man halt wissen was man tut und statt zu versuchen das gestreamer binary in einem Container starten <X aber ich halte mich da wohl besser raus....

    Bad mood, bad manners, bad Plugins, you have been warned :whistling:

  • Wenn du sagst "du musst nur …", dann heißt das ja noch lange nicht, dass andere das dann auch begreifen ;)

    Schade, dass du da selten mit ein paar Codezeilen daherkommst.

    Weil so werde ich den richtigen Weg wohl nie finden.


    Und wie könnte ich das gstreamer-Binary direkt aus dem Plugin starten (ohne den Umweg über den Container) ?

    Was anderes fiel mir da nicht ein, wie ich den funktionierenden Telnet-Befehl ins Plugin bekomme ;)

    Gruß Sven (aka Dreamy)


    (DM920 mit unstable OE2.5 DMM)

  • Ist da - was gsteamer angeht - irgendwie eine Abhängigkeit zwischen Video URLs und Audiostreams (mit alsasink) wenn man beide (Video u. Audio) gleichzeitig nutzen will?

    Denn ich habe ein Plugin womit ich live Video von meinen (foscam) Kameras (rtsp urls) auf der dm920 sehen kann. Da wird also geschaltet zwischen die Kameras. Das alles funkionierte gut; dann habe ich sowohl audio (Radiostream: mp3) als auch video ausprobiert. Auch das geht, aber während das zappen zwischen den Kameras wird den mp3 Stream unterbrochen (gestoppt) und geht - wenn Bild von nächsten Kamera da ist - wieder weiter. Ich möchte gerne,daß den Radiostream während das zappen nicht unterbrochen wird. Schalten zwichen die Kameras geht mit:


    self.session.nav.stopService()

    self.session.nav.playService(eServiceReference(sref))


    Der (mp3) Stream wird geöffnet mit: self.container.execute('gst-launch-1.0 playbin uri='+ URLAUDIO + ' audio-sink="alsasink"')


    Dann habe ich fürs zappen zwischen den Kameras statt 'stopService und playService' noch einen Container geöffnet mit

    "playbin uri [...]" und danach auch veruscht mit "playbin rtspsrc [...]" aber leider fehlen mir die richtige Befehle bzw. Parameter. Also habe ich das gelassen für was es ist.


    Ich habe die Kamera URLs ersetzt durch 4 URLs von öffentliche (web)Kameras, alle m3u8. Alle URLs geben Video:

    1. https://video2archives.earthca…08/1300.mp4/playlist.m3u8

    2. http://streaming3.netcam.nl:19…hunklist_w1658570285.m3u8

    3. http://live.streamink.nl/live/sys6.stream/.m3u8

    4. https://stream.vid.nl:1935/rtp…B_33.stream/playlist.m3u8

    Das komische ist, daß wenn ich nur die URLs 2, 3 und 4 nutze alles i.O. ist; d.h. Video ist da und den Radiostream wird ununterbroichen abgespielt.

    Aber so bald ich die erste URL hinzufüge (also URLs 1, 2, 3, und 4) dann wird den Radiostream nicht mehr ununterbrochen abgespielt.


    Also Frage ist wie kann ich zwischen die Kameras schalten und ein ununterbrochen mp3 Stream im Hintergrund haben.