[ANNOUNCE] pulsecontrol 0.1.9 - Pulseaudio aus dem OSD heraus steuern

  • Auja - danke Dir, kommt aufn Tach nich an... Der Rest läuft einfach top - yavdr eben!

  • Code
    start on started vdr
    
    
    task
    
    
    script
      sleep 10
      svdrpsend plug pulsecontrol move-sink-input 2
    end script


    So kann man x Sekunden nach dem vdr-Start etwas ausführen lassen. Ich hoffe, es hilft.


    Lars.

  • Vielen lieben Dank, das läuft wunderbar (auch ohne sleep)... :tup

  • Ich stehe vor einem ähnlichen Problem, komme mit der beschriebenen Lösung leider nicht weiter. Jedes Mal beim Reboot vergisst der VDR meine Standardeinstellung. Nach dem Reboot habe ich in lsnk folgendes:

    Code
    mod@HTPC-WZ:~$ sudo svdrpsend plug pulsecontrol lsnk
    220 HTPC-WZ SVDRP VideoDiskRecorder 2.2.0; Sat Feb 20 12:41:48 2016; UTF-8
    900- sink 1: alsa_output.pci-0000_00_1b.0.analog-stereo
    900 *sink 0: alsa_output.pci-0000_01_00.1.hdmi-stereo-extra1
    221 HTPC-WZ closing connection


    Nun wäre das Kartenprofil "sink 0" das Richtige, das Ausgabegerät um Ton zu bekommen muss aber (lt. OSD-Menü) alsa_output.pci-0000_01_00.1.hdmi_surround-extra3 heißen. Fragen:
    - mit welchem Befehl kann ich die unterschiedlichen Ausgabegeräte listen ?
    - welchen Befehl aus der Commandline muss ich absetzen um auf das gewünschte Profil umzuschalten.
    Ob ich es dann mit startup.script, mit Upstart oder sonstwie löse entscheide ich, wenn ich die richtigen Schritte zum Ziel gefunden habe,


    Ich muss Taipan schon recht geben wenn er schreibt:

    Das wirkt sich auf den WAF sehr negativ aus, wenn beim Start kein Ton da ist...

    Danke

  • Vermutlich:
    Mit list-cards die Kartennamen anzeigen lassen (einmalig)
    Mit set-card-profile das richtige Profil setzen (vermutlich hdmi_surround-extra3).
    Mit set-default-sink dann die Ausgabe setzen.


    Im startup.script sollte set-card-profile mit Kartennamen funktionieren (dann ist man unabhängig von der Initialisierungsreihenfolge), in der system.pa muss man wahrscheinlich den Kartenindex benutzen.


    Lars

  • Hi mini73,


    Hast vielleicht nen Tip für mich ?
    Krieg hier die simultane Ausgabe also einmal den Ton per Soundcard und nochmal den Ton per nvidia hdmi nicht hin.
    Besser gesagt es funktioniert schon, jedoch nach jedem Reboot des Systems (yavdr-0.6) bleibt der Ton aus also alles stumm.
    Starte ich dann entweder den Vdr neu oder speicher übers WebIf pulseaudio erneut ab is der Ton dann immer sofort da auf beiden devices.
    Klingt nach dem hier im Thread erwähnten Timing Problem jedoch hab ich einiges probiert und kriegs aber leider nicht hin.


    svdrpsend plug pulsecontrol list-cards zeigt das;


    Demnach hab ich in die /etc/pulse/system.pa am Ende folgendes eingetragen;

    Code
    set-card-profile alsa_card.pci-0000_00_1b.0 output:analog-stereo
    set-card-profile alsa_card.pci-0000_01_00.1 output:hdmi-stereo-extra1
    
    
    load-module module-combine-sink
    set-default-sink combined


    Das Startup Script in /var/lib/vdr/plugins/pulsecontrol mit Namen startup.script hab ich wie folgt angelegt;

    Code
    set-card-profile HDA NVidia output:hdmi-stereo-extra1



    Gruss
    Bert

    Hardware: Intel Core i9-9900K, ASUS ROG Maximus XI Hero, MSI GeForce GTX 1050 Ti (vdpau), Dvbsky S952 V3 mit 2X DVB-S2 Tuner
    Multibootsystem (yavdr-ansible auf Ubuntu-20.04, Kubuntu-20.04 Focal Fossa, Win10)
    yavdr-ansible, Ausgabe über Nvidia vdpau

  • Zu meinem Problem , das sich mit ähnlichen anderer User deckt bin ich zu dem Ergebnis gekommen, dass die sauberste Lösung jene mit Upstart ist. Allerdings verwende ich kein

    Code
    sleep

    - das ist nicht notwendig. Und ich verwende den Befehl

    Code
    svdrpsend plug pulsecontrol set-card-profile alsa_card.pci-0000_01_00.1 output:hdmi-surround-extra3

    Lieber wäre mir das startup.script bzw. /etc/pulse/system.pa gewesen, doch das sind m.E. mit den jetzigen Restriktionen potentielle Problemträger.
    Gründe:

    • mein startup.script endet nach reboot mit rc -4, nach restart funktioniert alles
    • die Einträge in der /etc/pulse/system.pa können keine Kartennamen sein (soweit ich weiß) und von daher kann bei unterschiedlicher Initialisierung die Kartennummer unterschiedlich sein.

    Danke an alle die hier geholfen haben.

  • [quote='Joe L','index.php?page=Thread&postID=1265491#post1265491']...ich verwende den Befehl:

    Code
    svdrpsend plug pulsecontrol set-card-profile alsa_card.pci-0000_01_00.1 output:hdmi-surround-extra3


    In welche Datei/Verzeichnis wird der Code eingefügt?

    #1: HD-VDR yaVDR 0.6 - DD Cine S2 - ZOTAC ION ITX F-E - 2GB Kingston HyperX-Kit - Silverstone SST-SG05B Sugo
    #2: MLD 5.0 -TeVii S660 DVB-S2 USB - RaspberryPI 2
    #3: Server: MLD 5.0 - TeVii S470 DVB-S2 PCIe - ASUS M4A78LT-M

    Einmal editiert, zuletzt von Hundeschnauze ()

  • In das Upstart Script. Aber bitte aufpassen: die Kartennamen entsprechen MEINER Konfiguration. Bitte deine Karten/Outputnamen entsprechend mit den Befehlen "lsnk" und "list-cards" herausfinden (siehe auch meine anderen posts in diesem Thread) !


    Mein Upstart sieht dann so aus:

    Code
    start on started vdr
    
    
    task
    
    
    script
      svdrpsend plug pulsecontrol set-card-profile alsa_card.pci-0000_01_00.1 output:hdmi-surround-extra3
    end script
  • Sorry ich steh immer noch auf dem Schlauch. Die Antwort ist wahrscheinlich zu einfach.


    Wo liegt das Upstart Script?


    in /var/lib/vdr/plugins/pulsecontrol/startup.script?
    in /etc/init/vdr.conf?
    in /etc/init/pulseaudio.conf?


    Danke!

    #1: HD-VDR yaVDR 0.6 - DD Cine S2 - ZOTAC ION ITX F-E - 2GB Kingston HyperX-Kit - Silverstone SST-SG05B Sugo
    #2: MLD 5.0 -TeVii S660 DVB-S2 USB - RaspberryPI 2
    #3: Server: MLD 5.0 - TeVii S470 DVB-S2 PCIe - ASUS M4A78LT-M

  • Es ist ein neues Upstart-Script, den Namen darfst du dir aussuchen.
    Es muss unter /etc/init liegen und auf .conf enden.


    Lars.

  • Kurzanleitung:


    1. Outputname/Kartenname ermitteln:

    Code
    svdrpsend plug pulsecontrol lsnk


    Ausgabe:

    Code
    220 hdvdr SVDRP VideoDiskRecorder 2.2.0; Tue Feb 23 15:54:03 2016; UTF-8
    900  sink 2: alsa_output.pci-0000_00_08.0.hdmi-stereo
    221 hdvdr closing connection


    Code
    svdrpsend plug pulsecontrol list-cards


    Ausgabe:


    Ergebnis:

    Code
    output:hdmi-stereo
    alsa_card.pci-0000_00_08.0


    2. Datei mit Script erstellen:

    Code
    sudo nano /etc/init/pulse_startup.conf


    Inhalt:

    #1: HD-VDR yaVDR 0.6 - DD Cine S2 - ZOTAC ION ITX F-E - 2GB Kingston HyperX-Kit - Silverstone SST-SG05B Sugo
    #2: MLD 5.0 -TeVii S660 DVB-S2 USB - RaspberryPI 2
    #3: Server: MLD 5.0 - TeVii S470 DVB-S2 PCIe - ASUS M4A78LT-M

    Einmal editiert, zuletzt von Hundeschnauze ()

  • Hallo Zusammen,


    ich habe auf meiner ZBOX das interne Audio Device und den Nvidia Sound Controller:


    Angeschlossen ist eine Anlage über SPDIF und ein Kopfhörer über "Analog out". Also beides Profile der KArt "HDA Intel". Deshalb habe ich die NVidia KArte abgeschaltet.


    Mein startup.script sieht folgendermaßen aus:

    Code
    set-card-profile alsa_card.pci-0000_03_00.1 off
    set-card-profile alsa_card.pci-0000_00_1b.0 output:iec958-stereo+input:analog-stereo
    set-card-profile alsa_card.pci-0000_00_1b.1 output:analog-stereo+input:analog-stereo
    set-default-sink alsa_output.pci-0000_00_1b.0.iec958-stereo+input:analog-stereo
    set-sink-formats alsa_output.pci-0000_00_1b.0.iec958-stereo "pcm;ac3-iec61937;eac3-iec61937;mpeg-iec61937;dts-iec61937;mpeg2-aac-iec61937"


    Ich würde jetzt gerne mit einer einzigen Taste auf der FErnbedienung zwischen Anlage und Kopfhörer hin- und herschalten, also in etwa was "move-sink-input next" anbietet, ABER dies verschiebt die Ausgabe zwischen den beiden Soundkarten, nicht zwischen Profilen der gleichen KArte. (wie auch die README beschreibt :"The special sink name "next" selects the next sink from the list returned by list-sinks.". Bzw. da ich die zweite Karte auf "off" stehen habe, bietet mir "list-sinks" sowieso nur einen einzigen sink an:

    Code
    hd-vdr@HD-VDR:~$ svdrpsend plug pulsecontrol list-sinks
    220 HD-VDR SVDRP VideoDiskRecorder 2.2.0; Sun Oct 16 13:20:05 2016; UTF-8
    900  sink 10: alsa_output.pci-0000_00_1b.0.iec958-stereo
    221 HD-VDR closing connection


    Gibt es eine Möglichkeit zwischen den Profilen einer einzelnen "sink" zu "togglen"? bzw. beide als "sinks" zu definieren?


    Noch eine andere Frage, sind ide Anführungszeichen bei den passthrough DEfinitionen richtig/nötig? Finde das in der Doku nicht und im OSD sind immer alle passthrough auf "nein" gesetzt, egal was ich mache.


    Danke für eure Hilfe!


    Tim

    System 1: Zotac ZBOX HD-ID41 Plus, Intel Atom D525, Chipset: Intel NM10, IGP: GeForce G 210, 2x Sundtek SkyTV Ultimate(DVB-S/S2), Fernbedienung Hama-MCE, yavdr64-0.6.1 testing, SSD 1TB

  • Wenn du zwischen zwei Profilen wechseln willst, müsste es mit set-card-profile eigentlich gehen. Da es dann aber abhängig vom aktiven Profil sein soll, musst du dieses erst bestimmen.


    Ungetestet:

    Bash
    #!/bin/bash
    
    
    if [[ $(svdrpsend plug pulsecontrol list-cards | grep "*profile: output:iec958-stereo+input:analog-stereo") ]]
    then
      svdrpsend plug pulsecontrol set-card-profile alsa_card.pci-0000_00_1b.1 output:analog-stereo+input:analog-stereo
    elif [[ $(svdrpsend plug pulsecontrol list-cards | grep "*profile: output:analog-stereo+input:analog-stereo") ]]
    then
      svdrpsend plug pulsecontrol set-card-profile alsa_card.pci-0000_00_1b.1 output:iec958-stereo+input:analog-stereo
    fi


    Und das dann auf eine Taste der Fernbedienung legen.


    Lars.

  • Noch eine andere Frage, sind ide Anführungszeichen bei den passthrough DEfinitionen richtig/nötig? Finde das in der Doku nicht und im OSD sind immer alle passthrough auf "nein" gesetzt, egal was ich mache.


    Im startup.script sollte es nicht nötig sein, auf der Shell allerdings schon, weil das Semikolon ein Trenner zwischen zwei Befehlen ist.
    Steht irgendwas im syslog, evtl. sowas wie "error in formats"?


    Lars.


  • Im startup.script sollte es nicht nötig sein, auf der Shell allerdings schon, weil das Semikolon ein Trenner zwischen zwei Befehlen ist.
    Steht irgendwas im syslog, evtl. sowas wie "error in formats"?


    Lars.


    hm, habe sie im startup.script weggelassen und bekomme im syslog keinerlei Fehlermeldungen. Im OSD sind aber alle Passthrough-Einträge zu den verschiedenen Formaten auf "nein". hm....


    Tim

    System 1: Zotac ZBOX HD-ID41 Plus, Intel Atom D525, Chipset: Intel NM10, IGP: GeForce G 210, 2x Sundtek SkyTV Ultimate(DVB-S/S2), Fernbedienung Hama-MCE, yavdr64-0.6.1 testing, SSD 1TB

  • Danke für Deine schnelle Reaktion!
    hm. irgendwas hängt noch im skript, selbst wenn ich es manuell ausprobiere:

    Code
    ./skript_pulsecontrol_audio_sink_wechseln: Zeile 7: Syntaxfehler beim unerwarteten Wort »fi«
    ./skript_pulsecontrol_audio_sink_wechseln: Zeile 7: `fi'


    falsche syntax? falsche konsole? Ich kenne mich da leider viel zu schlecht aus mit :(


    wie würdest Du das denn dann integrieren? über keymakros.conf? oder wenn ich im pulsecontrol plugin richtig gesehen habe (und mich korrekt erinnere), gab es auch dort eine Möglichkeit eigenen Code auszuführen?


    DAnke für Deine Hilfe!


    Tim

    System 1: Zotac ZBOX HD-ID41 Plus, Intel Atom D525, Chipset: Intel NM10, IGP: GeForce G 210, 2x Sundtek SkyTV Ultimate(DVB-S/S2), Fernbedienung Hama-MCE, yavdr64-0.6.1 testing, SSD 1TB

  • hm, habe gerade mal das Kommando zum Umschalten getestet:

    Code
    hd-vdr@HD-VDR:~$ svdrpsend plug pulsecontrol set-card-profile alsa_card.pci-0000_00_1b.1 output:analog-stereo+input:analog-stereo
    220 HD-VDR SVDRP VideoDiskRecorder 2.2.0; Sun Oct 16 16:03:52 2016; UTF-8
    900 Ok
    221 HD-VDR closing connection


    hat aber leider keinen Effekt :( (wobei das Umschalten im OSD unter "Wechsel Kartenprofil" funktioniert und auf den Kopfhörer umschaltet)


    Tim

    System 1: Zotac ZBOX HD-ID41 Plus, Intel Atom D525, Chipset: Intel NM10, IGP: GeForce G 210, 2x Sundtek SkyTV Ultimate(DVB-S/S2), Fernbedienung Hama-MCE, yavdr64-0.6.1 testing, SSD 1TB

  • Nach der Zeile mit dem elif fehlt noch ein then, hab ich oben ergänzt.


    Wenn es im OSD klappt, aber über svdrp nicht, dann hab ich auch spontan keine Idee. "Eigentlich" wird dann immer der gleiche Code ausgeführt.


    Lars

  • In Sachen Fernbedienung bin ich auch nicht ganz firm, aber keymacros taugen nur bedingt dafür, wenn ich mich richtig erinnere. Es gibt aber Wege, umm bei Tastendruck beliebige Programme ausführen zu lassen, das passiert aber außerhalb des vdr.


    Lars

Jetzt mitmachen!

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