Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Music play ??? #213

Open
cap-blackbeard opened this issue Nov 13, 2022 · 11 comments
Open

Music play ??? #213

cap-blackbeard opened this issue Nov 13, 2022 · 11 comments

Comments

@cap-blackbeard
Copy link

Hallo Florian,
ich frage mich, ob der Client Musik (Ordner auf dem Server) abspielen/ streamen kann?
Internetradio funktioniert ja sehr gut.
Ich habe einige Alben auf meinem NAS und würde den Client gerne als Musicplayer benutzen.
Durch KODI sind alle Titel auch fein säuberlich (getagged???). Naja, zumindest hat jeder Titel: Künstler, Album, Genre, Jahr... hinterlegt.
Richtig toll wäre so etwas wie: "Spiele bitte alle Lieder von Volbeat im Zufallsmodus." Oder: "Spiele alle Lieder aus dem Genre Rock im Zufallsmodus."

Grüße
Christian

@fquirin
Copy link
Contributor

fquirin commented Nov 13, 2022

Grundsätzlich ja, aber es gibt leider (noch) keine KODI API Integration. Dafür ist das Music-Player Widget vorgesehen, was bisher aber nur den "Demo" und Youtube unterstützt.
Die Integration ist nicht besonders kompliziert, das das Widget selbst schon alle Daten wie "Artist", "Genre", "Song" bekommt und man diese dann nur an KODI schicken müsste (plus start, pause, next, volume, usw.), aber es erfordert Kenntnis der KODI API und ein Testsystem, was ich beides momentan nicht habe ^^

@fquirin
Copy link
Contributor

fquirin commented Nov 13, 2022

Was eventuell gehen könnte wäre Playlist URLs von KODI via Teach-UI zu nutzen, falls sowas bei KODI möglich ist, also Streaming via URL.

@cap-blackbeard
Copy link
Author

Ich dachte eher, komplett ohne KODI. Wie funktioniert das Music-Player Widget?
Ich habe die Musik ja einfach nur als .mp3 auf der Platte. Was muss ich konfigurieren, dass Sepia auf meine Musik zugreifen kann?

@fquirin
Copy link
Contributor

fquirin commented Nov 14, 2022

So ganz einfach ist das leider nicht. Man braucht mindestens eine dieser Voraussetzungen:

  1. Webserver, der die Mp3 Dateien bereitstellt (das kann in SEPIA entweder der SEPIA Assist-Server oder der Nginx Proxy sein)
  2. Ein Programm wie KODI, das Mp3s via (REST) API abspielen kann (die Beste Option)
  3. Eine direkte Schnittstelle zum Betriebssystem, die Mp3s startet (nicht zu empfehlen, aber theoretisch möglich mit z.B. SEPIA Mesh-Node oder CLEXI)

In Fall 1 und 3 bräuchte man noch einige zusätzliche Funktionen, wie z.B. einen Index, der Song, Künstler etc. mit dem Dateinamen (und somit auch der potentiellen URL) verbindet.

Wie funktioniert das Music-Player Widget?

Das fungiert als Abstraktions-Layer zwischen SEPIA und einem beliebigen Musik Service. Im Falle von Youtube wurde früher z.B. der Input (Künstler, Song, Genre etc.) in eine Youtube search URL umgewandelt und dann die Ergebnis-Playlist geladen. Seitdem das von Google abgeschafft wurde, wird die URL vorher vom SEPIA Server über die Youtube API generiert und dann direkt ans Media-Player Widget weitergegeben. Zusätzlich wurde die Youtube Player API implementiert, für Befehle wie "stop, vor, zurück".

Der Demo-Player ist ganz einfach so aufgebaut:

  • Es gibt 2 Mp3s, die mit ihrer URL hard-coded im Widget hinterlegt sind
  • Wenn Daten ans Widget übermittelt werden (z.B. "Spiele den Song Twister" -> song=twister), wird geprüft ob der Song Name zu einer der beiden Mp3s passt
  • Falls der Name passt wird die URL in ein einfaches audio-HTML Element geladen
  • Die Befehle "start, stop, weiter, nächster Song, Lautstärke" etc. steuern das audio-HTML Element

Kurz gesagt, was du machen könntest wäre die Mp3s in einen Ordner zu legen, den der Nginx Proxy öffnen kann und dann eine Mp3 URL-Liste ins Widget per Hand einfügen. Damit es nicht in endlosen name-checks endet könnte man noch mehrere Mp3s zu Listen zusammenfügen und mit Stichworten versehen wie Genre oder Playlist name ("Spiele die Playlist mit Namen XY"). Ich glaube hier wird dann aber auch ziemlich schnell klar, warum man am Besten direkt die KODI API ansteuern würde, bzw. das ganze Name -> Mp3 mapping einem dedizierten Musik Tool überlässt (optimalerweise mit Datenbank und Such-API).

@cap-blackbeard
Copy link
Author

Na, da hab ich ja mal wieder ne Frage gestellt. Jetzt landen wir schon wieder bei der KODI-Geschichte, ohne dass ich darüber nachgedacht habe. Meine KODI-Steuerung mittelts Teach-UI läuft noch gut.

2. Ein Programm wie KODI, das Mp3s via (REST) API abspielen kann (die Beste Option)

  • Dann müsste KODI auf dem Client installiert sein? Schafft der Raspi 3 das? Da bin ich mir nicht so sicher.

KODI selbst streamt eigentlich nicht (nur per Addon). Aber das onboard Web Interface (Chorus2) bietet die Möglichkeit die Filme oder Musik am KODI-Host abzuspielen oder lokal auf dem "PC" per Stream. Wobei für Filme halt immer der richtige Codec vorhanden sein muss. Der Codec ist ja bei Musik aber erstmal egal.

  • Man könnte einen externen KODI-Host benutzen. Dann hat man aber 2 Geräte und der Host müsst 24/7 laufen. Habe aber gerade einen Musik-Stream vom Host auf meinem PC und gleichzeitig einen Film am KODI-Host (RPI 4 8GB) gestartet. Läuft ohne Probleme.
  • Oder als docker container auf men Server installieren. Es gibt nen headless container (https://github.com/linuxserver/docker-kodi-headless). Es wäre interessant, ob das hier ebenfalls mit dem Web Interface klappt.

Im Web Interface gibt es auch einen API Browser der alle Kommandos auflistet.

@fquirin
Copy link
Contributor

fquirin commented Nov 15, 2022

Meine KODI-Steuerung mittelts Teach-UI läuft noch gut.

😎

Dann müsste KODI auf dem Client installiert sein? Schafft der Raspi 3 das? Da bin ich mir nicht so sicher.

Wahrscheinlich etwas knapp 😅 , Musik spielen alleine müsste aber eigentlich nicht so Ressourcen hungrig sein. RAM ist vielleicht ein Problem.
Vielleicht gibt es eine simplere Alternative 🤔, also ein Programm, was nur dafür gedacht ist ohne den ganzen UI Schnickschnack ^^. VLC kann das übrigens glaube ich auch. Auf Android kannst du die VLC App steuern mit SEPIA :-) (leider ist allerdings start, stop kaputt gerade in der neuesten Version 🤦). Die VLC API ist aber auch nicht integriert bisher.

Oder als docker container auf men Server installieren

Vielleicht eine gute Option, ja. Dieser Headless Container ist allerdings "deprecated" und wurde 2019 das letzte mal aktualisiert :-(

@cap-blackbeard
Copy link
Author

cap-blackbeard commented Nov 15, 2022

Vielleicht eine gute Option, ja. Dieser Headless Container ist allerdings "deprecated" und wurde 2019 das letzte mal aktualisiert

Dann nehmen wir den?
https://hub.docker.com/r/matthuisman/kodi-headless

@fquirin
Copy link
Contributor

fquirin commented Nov 17, 2022

Vielleicht auch interessant: mStream

@cap-blackbeard
Copy link
Author

cap-blackbeard commented Nov 17, 2022 via email

@fquirin
Copy link
Contributor

fquirin commented Nov 17, 2022

Ich wäre definitiv an einem KODI Media Player Widget für SEPIA interessiert. Vielleicht teste ich diesen Container auch mal :-)

[EDIT] Gerade zufällig gefunden ^^: https://magpi.raspberrypi.com/books/raspberry-pi-media-player

@cap-blackbeard
Copy link
Author

Guck mal in Dein E-Mail-Postfach 😄

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants