VLC will nicht mit der HifiBerry DAC+ spielen

Heute ist Stammtischzeit:
Jeden Donnerstag 20:30 Uhr hier im Chat.
Wer Lust hat, kann sich gerne beteiligen. ;)
  • Hallo zusammen,

    ich hoffe, dass das hier die richtige Kategorie ist.

    Folgendes Problem:

    Ich habe ein Python(3.9) Script, das Audiodateien mit VLC über die HifiBerry DAC+ Karte abspielen soll, die in dem RPi 4 mit Bullseye Raspi OS 64 steckt, der headless betriben werden soll. Die Dateien werden abgespielt, aber es kommt kein Ton.

    Was ich weiß ist:

    Der VLC versucht immer über Pulseaudio die Dateien abzuspielen und Pulseaudio kennt die Karte aber im Usermodus nicht. Mit sudo aufgerufen wird die Karte mit meinem TestScript angezeigt, aber im sudo Modus ist der Pulseaudio Server nicht konnektierbar. Abgesehen davon, dass man Pulseaudio nicht im Systemmod laufen lassen soll, bekomme ich da auch einen Access denied.

    Hier das Testscript:

    und hier die Ergebnisse

    ...als User:

    Code
    $ python3 /mnt/smb/Audio/AudioTest.py
    0
    1
    2
    3
    4
    b'alsa_output.platform-bcm2835_audio.analog-stereo'
    b'alsa_output.platform-soc_sound.stereo-fallback'

    ... sudo Aufruf:

    Darüber hinaus noch die folgenden Ergebnisse:

    lsmod | grep -i snd

    pactl list cards

    Ich habe auch schon den snd_bcm2835 "geblacklistet". Es hat leider nichts geholfen, außer dass in allen o.g. Abfragen der bcm2835 Headphones fehlen. sonst leider kein Erfolg.

    Die Soundkarte funktioniert aber, denn mit AUDIODEV=hw:3 play -v 1 -q "/mnt/usb/musik/18 Con Chiglia.mp3" bekomme ich Musik zu hören (play basiert auf sox). Leider ist es keine Alternative, da ich dort nicht die Lautstärke wärend des abspielens regeln kann.

    Auch andere Alternativen zu python-vlc habe ich mir angeschaut aber es waren keine Alternativen, nach dem was ich recherchiert habe.

    • pygame geht leider immer auf die onboard soundcard.
    • soundplayer (basierend auf sox s.o.) kann nicht wärend des abspielens die Lautstärke regeln und kann keine .wma Dateien.
    • alsaaudio ist (für mich) sehr komplex und muss auf jede Audiodatei passend eingestellt werden (kann mit dem mir vorliegenden Script nur Wave).
    • und einige mehr.
    • und pulseaudio bekomme ich nicht dazu den Sound über die DAC+ Karte abzuspielen (abgesehen davon rät HifiBerry auch von Pulseaudio ab, wegen geringfügig schlechterer Qualität, das wäre dann für mich ein Luxusproblem).

    Warum VLC, HifiBerry und Python:

    HifiBerry, weil es kompakt sein soll. Es ist für meine Mutter und da soll kein HDMI Extractor Kabel dran hängen, außerdem kommen da ein paar Buttons und LEDs dran über GPIO, deshalb Python, da kann ich das ;). Und VLC habe ich gewählt, weil es alle gängigen Audioformate kann und zur laufzeit auch die Lautstärke regeln kann. Ich kann und möchte meiner Mutter nicht sagen und zumuten: Wenn Du das Stück hören möchtest musst Du es erst in mp3 oder wave konvertieren...

    Wenn jemand weiß, wie ich VLC dazu bewegen kann die Soundkarte zu benutzen oder auch Pulseaudio, wäre das super? Gibt es bei VLC eine Conf wo ich das HifiBerry Board als Standard setzen kann? Oder hat jemand noch eine andere Idee? Achja in der raspi-config habe ich das Board schon als Output gesetzt und seit dem der bcm2835 geblacklistet ist, ist die Soundkarte auch der einzige Output, den man wählen kann.

    Vielen Dank für die Unterstützung.

    Heiko

    PS: Den Artikel:

    HiFiBerry DAC+ ADC funktioniert nach python script nicht mehr

    hab ich auch schon gelesen.

  • Hier mal ein kleines Testskript:

    Vielleicht kommt da schon was raus.

  • Vielen Dank für die Mühe und die schnelle Antwort.

    Das ist das Ergebnis als User:

    Code
    $ python3 /mnt/smb/Audio/test2.py
    [0000007f60005600] prefetch stream error: unimplemented query (264) in control
    [00000000329ff5f0] vlcpulse audio output error: stream connection failure: No such entity
    [00000000329ff5f0] main audio output error: module not functional
    [0000007f6004c3b0] main decoder error: failed to create audio output

    und das als sudo...:

    Da sich ja durch das Blacklisten und Prioritätsänderung in der /etc/modprobe.d/alsa-base.conf

    options snd_soc_iqaudio_dac index=0

    options snd_soc_hdmi_codec index=1

    einiges verändert hat, poste ich nochmal die aktuellen Ergebnisse: (Ich hab Dein TestScript auch mit p.audio_output_device_set(None, '2') versucht. Gleiche Ergebnis dann halt nur mit "2". )

    Ich wollte mir heute eigendlich bei MediaMarkt einen HDMI Audio Extractor kaufen um zu schauen ob wenigstens was auf dem HDMI was ankommt, aber die haben sowas "high sophisticated" leider nicht. Muss ich jetzt erstmal bestellen um meine Neugier zu stillen, Am Ende soll es aber weiterhin die HifiBerry Karte bleiben.

  • Moin Alti,

    es kommt aber grundsätzlich Musik aus dem DAC+ raus?

    Also ohne VLC und Co. Einfach speaker-test -c 2 t wave.

    73 de Bernd

    Ich habe KEINE Ahnung und davon GANZ VIEL!!
    Bei einer Lösung freue ich mich über ein ":thumbup:"
    Vielleicht trifft man sich in der RPi-Plauderecke.
    Linux ist zum Lernen da, je mehr man lernt um so besser versteht man es.

  • Moin hyle,

    noe, ich will wissen ob die Defaultausgabe auf dem DAC liegt.

    Das war bisher immer die richtige Vorgehensweise.

    73 de Bernd

    Ich habe KEINE Ahnung und davon GANZ VIEL!!
    Bei einer Lösung freue ich mich über ein ":thumbup:"
    Vielleicht trifft man sich in der RPi-Plauderecke.
    Linux ist zum Lernen da, je mehr man lernt um so besser versteht man es.

  • Ändere mal in Zeile 10 von meinem Testskript die "3" in eine "2", also

    Python
    p.audio_output_device_set(None, '2')

    Was ist eigentlich die Ausgabe von aplay -l?

    Ja hatte ich bereits und die Ausgabe war die gleiche, dann halt nur mit 2 statt mit 3. (aber ich hab da was interessantes was ev. weiterhilft. Aber dazu im nächsten Post)

    aplay ist ein Befehlszeilen-Audiodatei-Player für den ALSA-Soundkartentreiber. Es unterstützt mehrere Dateiformate und mehrere Soundkarten mit mehreren Geräten. (Wikipedia ;) ) Besser hätte ich es nicht erklären können.

    aplay -l listet alle ALSA zur Verfügung stehenden Devices auf.

  • Moin!

    Man mag es nicht glauben, aber eine /etc/sound.conf funktioniert immer noch. Gerade wieder getestet.

    Aber wer nicht will der hat schon.

    73 de Bernd

    Ich habe KEINE Ahnung und davon GANZ VIEL!!
    Bei einer Lösung freue ich mich über ein ":thumbup:"
    Vielleicht trifft man sich in der RPi-Plauderecke.
    Linux ist zum Lernen da, je mehr man lernt um so besser versteht man es.

  • Ich habe etwas mit Deinem TestScript rumgespielt und habe mir gedacht, wenn Pulseaudio nur auf Userebene läuft, teste ich mal den String den mein Testscript ausgeworfen hat. Also

    p.audio_output_device_set(None, 'alsa_output.platform-soc_sound.stereo-fallback')

    und siehe da, die Ausgabe des Scripts lieferte dann nur noch;

    Code
    $ python3 /mnt/smb/Audio/test2.py
    [0000007f7c005600] prefetch stream error: unimplemented query (264) in control

    (die Fehlermeldung fällt auch weg, wenn ich eine Audiodatei nehme und keinen Stream)

    und es ist ganz ganz leise Musik zu hören. Ich muss die Anlage bis zum Anschlag auf drehen und es ist egal ob ich CD, Video, Tape, AUX oder was auch immer auswähle (der Pi hängt an Video), es ist immer gleich laut, oder vielmehr leise. So dass ich vermute, dass es durch irgendwelche fehlenden Abschirmungen kommt und nicht durch die Soundkarte selber, Wenn ich die Cinchstecker ziehe oder das Script beende ist die Musik weg.

    Die Frage ist dann, wie mache ich die Soundcarte im Usermodus bekannt? Als Admin ist sie zu sehen, als normaler User nicht.

    Einmal editiert, zuletzt von Alti (17. Mai 2023 um 22:53) aus folgendem Grund: neue Erkenntnisse.

  • Moin hyle,

    noe, ich will wissen ob die Defaultausgabe auf dem DAC liegt.

    Das war bisher immer die richtige Vorgehensweise.

    73 de Bernd

    Hallo Bernd,

    Das ist eigentlich genau das was ich suche, oder mir einbilde das es funktionieren könnte. Dem VLC oder dem Pulseaudio sagen, nimm standardmäßig die DAC Karte. Da soll später nicht zwischen irgendwelchen Output devices hin und her geschaltet werden.

    Welche Infos brauchst Du und wo finde ich sie?

    Ich denke nicht dass die Defaultausgabe auf der DAC liegt musste ja das Device 3 explizit angeben um was zu hören.

    ...Eine sound.conf in /etc habe ich nicht.

  • Moin Alti,

    ich gehe davon aus das du das Overlay für HifiBerry Dac+ eingeschaltest hast?! Dann solltest du das Device in der Ausgabe von aplay -l sehen.

    Hifiberry macht da immer Probleme mit der Lautstärkeregelung, aber grundsätzlich sollte es so gehen.

    Meine Ausgabe von aplay -l. Ein Auszug

    Code
    Karte 3: Set [C-Media USB Headphone Set], Gerät 0: USB Audio [USB Audio]
      Sub-Geräte: 1/1
      Sub-Gerät #0: subdevice #0

    Und meine /etc/asound.conf

    Code
    pcm.!default {
        type hw
        card 3
    }
    
    ctl.!default {
        type hw           
        card 3
    }

    dann mal den Befehl : speaker-test -c2 -t wave testen. Ob was kommt.

    Aber wie ich schon geschrieben habe, Hifiberry braucht da manchmal so andere Einstellungen.

    Müsste man auf der Seite des Herstellers suchen.

    73 de Bernd

    Ich habe KEINE Ahnung und davon GANZ VIEL!!
    Bei einer Lösung freue ich mich über ein ":thumbup:"
    Vielleicht trifft man sich in der RPi-Plauderecke.
    Linux ist zum Lernen da, je mehr man lernt um so besser versteht man es.

  • Moin Alti,

    es kommt aber grundsätzlich Musik aus dem DAC+ raus?

    Also ohne VLC und Co. Einfach speaker-test -c 2 t wave.

    73 de Bernd

    das funktioniert. Da kommt ein weisses Rauschen mal rechts mal links :)

  • aber eine /etc/sound.conf funktioniert immer noch

    Du meinst die /etc/asound.conf und ja, die funktioniert bestens! :)

    Welche Infos brauchst Du und wo finde ich sie?

    Was ist eigentlich die Ausgabe von aplay -l?

    Ich fragte doch nicht umsonst danach! :shy:

  • Moin Alti,

    eigentlich solle da "Front left Front right" kommen. Als Frauestimme. der Befehl:

    speaker-test -c2 -t wave

    Man achte auf das - vor dem t.

    73 de Bernd

    Ich habe KEINE Ahnung und davon GANZ VIEL!!
    Bei einer Lösung freue ich mich über ein ":thumbup:"
    Vielleicht trifft man sich in der RPi-Plauderecke.
    Linux ist zum Lernen da, je mehr man lernt um so besser versteht man es.

  • Ok mit dem - vor dem t quatscht die jetzt auch, auch in normaler Lautstärke.

    die Ausgabe von aplay -l steht im #3 post... (deshalb hatte ich es erklären wollen ;) )

    Code
    $ aplay -l
    **** List of PLAYBACK Hardware Devices ****
    card 0: vc4hdmi0 [vc4-hdmi-0], device 0: MAI PCM i2s-hifi-0 [MAI PCM i2s-hifi-0]  Subdevices: 1/1  Subdevice #0: subdevice #0
    card 1: vc4hdmi1 [vc4-hdmi-1], device 0: MAI PCM i2s-hifi-0 [MAI PCM i2s-hifi-0]  Subdevices: 1/1  Subdevice #0: subdevice #0
    card 2: IQaudIODAC [IQaudIODAC], device 0: IQaudIO DAC HiFi pcm512x-hifi-0 [IQaudIO DAC HiFi pcm512x-hifi-0]  Subdevices: 1/1  Subdevice #0: subdevice #0
  • und es ist ganz ganz leise Musik zu hören

    alsamixer (und F6) könne helfen!

    die Ausgabe von aplay -l steht im #3 post

    Nach dem Blacklisten hätte es anders aussehen können, deshalb die Nachfragen.

    Sieh mal hier: https://www.hifiberry.com/docs/software/…g-linux-3-18-x/ was HifiBerry empfielt! Lies und beachte das aber bitte Reihe nach (ist wichtig!) ;) Was bei Dir bezüglich vc4-fkms / vc4-kms da ist, musst Du selber mal schauen.

Jetzt mitmachen!

Du hast noch kein Benutzerkonto auf unserer Seite? Registriere dich kostenlos und nimm an unserer Community teil!