Aktuelles
Digital Eliteboard - Das Digitale Technik Forum

Registriere dich noch heute kostenlos, um Mitglied zu werden! Sobald du angemeldet bist, kannst du auf unserer Seite aktiv teilnehmen, indem du deine eigenen Themen und Beiträge erstellst und dich über deinen eigenen Posteingang mit anderen Mitgliedern unterhalten kannst! Zudem bekommst du Zutritt zu Bereichen, welche für Gäste verwehrt bleiben

Registriere dich noch heute kostenlos, um Mitglied zu werden! Sobald du angemeldet bist, kannst du auf unserer Seite aktiv teilnehmen, indem du deine eigenen Themen und Beiträge erstellst und dich über deinen eigenen Posteingang mit anderen Mitgliedern unterhalten kannst! Zudem bekommst du Zutritt zu Bereichen, welche für Gäste verwehrt bleiben

M3U VOD Player - Linux / Windows

sidian

Ist gelegentlich hier
Registriert
25. September 2024
Beiträge
41
Reaktionspunkte
85
Punkte
75
Hallo zusammen,

ich spiele seit ein paar Monaten an einem "headless"-PlaylistPlayer um bequem von meinem Office-PC, Telefon oder KDE Plasma Widget LiveTV oder Filme zur Hintergrundbeschallung auf meinem Wohnzimmer PC (TV) zu starten.

Ich verstehe das Konzept nicht, einen großen Fernseher zu haben und immer nur eine (fensterlose) Vollbildanwendung zu haben. - So scheidet für mich irgendwie alles Richtung AndroidTV, Kodi Boxen, RokuFire-Sticks oder was auch immer aus.

Du musst Regestriert sein, um das angehängte Bild zusehen.

Du musst Regestriert sein, um das angehängte Bild zusehen.

Du musst Regestriert sein, um das angehängte Bild zusehen.

Du musst Regestriert sein, um das angehängte Bild zusehen.


In Linux muss der mpv Player und ffmpeg installiert sein. Im Windows-Paket habe ich die Programme mit ins Paket gelegt und müssen nicht installiert werden.

Das Tool startet einen lokalen NodeJS/Express Server auf Port: 3302
Heißt: Nach dem starten solltet Ihr das Webinterface über den Webbrowser unter der Adresse: erreichen können
HowTo Kurzfassung:
  • Das Video wird auf dem Computer abgespielt, auf dem das Tool gestartet wurde.
    • Auch wenn Linux dran steht, ist es keine Serveranwendung. - Ihr braucht einen Desktop (KDE, Gnome, Fluxbox, ...)
  • Ihr braucht fertige M3U Dateien
    • Am besten getrennt nach Live und VOD
    • Ziemlich schöne Listen bekomme ich mit dem Stalker Portal Manager von @tem_invictus
      • Stand: 10.10.2025: Beachtet meinen Beitrag
        • ich habe da eine "diff" abgelegt, die mit dem Linux-Tool "patch" automatisch meine Änderungen in die Originaldatei einpflegen kann.
    • Kopiere die Listen nach playlists in den entsprechenden Ordner: vod, live, series (Serien werde ich in einer kommenden Version vermutlich rausschmeißen)
  • Windows fragt beim ersten Start, ob die Firewall einen Port für NodeJS öffnen darf (Erforderlich für Fernsteuerung vom Smartphone oder anderen Rechner)
    • PlaylistPlayer startet nur in einer Kommandozeilen-Ansicht
    • Öffnet einen Webbrowser mit der Adresse: - Für die Fernsteuerung ersetzt Ihr einfach die 127.0.0.1 durch die IP Adresse den Host PC
  • Die Playlistauswahl ist seit Version 0.2.0 in den Einstellungen versteckt.
    • Playlistauswahl muss in Filme und Live jeweils separat vorgenommen werden.
0.1.0 - Proof of concept
0.1.1 - Anpassungen für Windows Pakete
0.1.2 - Serien Watchlist und History + Erstes öffentliche Release
0.1.3 - Shuffle bei Filmlisten + Sortierung für Watchlist und History umgedreht, Limit bei Seriensuche erhöht + M3U8-Playlisterkennung
0.1.4 - Backend aufgeräumt und CSS Anpassungen
0.1.5 - Neue Kategorie: "Live" + Bugfixing
  • Neue Kategorien: Mediatheken und Webradio
    • Mediathek-Inhalte von mediathekviewweb.de
    • Webradio über radio-browser.info mit Favoritenliste und History
  • Neue Einstellungen:
    • Wiedergabemodus (Host, Host Vollbild, URL in Zwischenablage kopieren, eingebetteter Videoplayer (experimentell und fehlerhaft)
      • Modus kann auch einmalig über Kontextmenü gestartet werden
    • Sortierreihenfolge für Filme (Random, Alphabetisch und Playlistvorgabe
  • EPG
    • mehrere EPG Quellen
    • Mapping aus dem Kontextmenü
  • Integrierter Video Player, Lokaler Wiedergabemodus (Experimentell!)
    • ffmpeg Remux für mkv (Filme starten, aber Suchen/Vorspulen funktioniert nicht)
      • sagen, dass Firefox einen .mkv Support bekommen sollte. - Das sitze ich aus :P
    • "Miniplayer" flackert beim scrollen.
    • Playergröße bei einigen Formaten "zu hoch"
  • Kategoriefilter (z.B. Sprache)
  • Mobile Ansicht verbessert
    • swipe Gesten für Sidebar/Menü
    • Maximale Titellänge begrenzt
  • Tastatursteuerung hinzugefügt
  • Einige Bugs beseitigt, viele neue hinzugefügt
  • Neue Kategorien: System
    • Playlist
      • Playlisten (de-)aktivieren
      • Kategoriefilter
      • Online Playlisten
    • Verhalten
      • Derzeit noch ohne Funktion!!!
    • Profile
      • Mehrere Profile für:
        • Aktivierte Playlisten / Kategorien
        • History, Watchlist
        • Radio Favoriten
    • EPG Einstellungen
      • EPG Quellen waren bei Version 0.2.0 noch in der Sidebar
  • Optik:
    • Playersteuerung im Footer wird ausgeblendet, wenn nicht erforderlich
    • Header wird beim runterscrollen aus- und beim hochscrollen wieder eingeblendet
    • Benachrichtigungen, wenn ein Stream gestartet wird und wenn er nicht starten kann
  • Neue Funktionen
    • Lautstärke-Slider
    • Webradio zeigt nun den Titel an
  • MPV Player startet bei Windows nun im Vordergrund
    • Workaround: mpv wird nun mit dem Parameter --on-top gestartet.
      • MPV startet zwar im Vordergrund, hat aber keinen Fokus auf das Fenster
  • Neue Abhängigkeiten(Nur Windows / Ist bereits im PlaylistPlayer eingebaut)
    • dient zur Lautstärke-Steuerung auf Windows-Hosts
  • Tastatursteuerung verbessert
  • Einige Bugs beseitigt, viele neue hinzugefügt
Changelog schreibe ich später nochmal schön.

In aller Kürze: In dieser Version sind die Hauptänderungen im Webradio.
  • Songinfos über APIs
    • Musicbrainz als Fallback falls kein API Key forhanden ist
    • Genius für Album, Cover und Label (API Key erforderlich)*
    • LastFM für Kurzbiografie (API Key erforderlich)*
  • Mapping der Radiometadaten
    • Standardmäßig erwartet der Player die Metadaten im Format "%artist% - %title%"
      • Kann bei Favoriten über das Kontextmenü umgemappt werden

Sonstiges
  • Profilfunktion verbessert
  • Etwas am CSS gespielt
Im Download Ordner "DEB" hab ich Euch mal die Settings mit API Keys von Wegwerf-Accounts geteilt
KommentarWaereNett

Achtung: Es ist eher eine "Spielerei"
Hier nutze ich nur die Fernsteuerungs-Funktion aus, um von einem anderen Computer Youtube-Links an mein Wohnzimmer-Computer zu senden.

da auf meinem HTPC nun ein Service läuft, der URLs annehmen und den MPV Player starten kann, hab ich nun an meinem Schreibtisch-PC ein kleines Chrome-Addon, das mir Links, unter anderem aus Mediatheken oder Youtube auf dem Fernseher-PC sendet.

  • Die Dateien manifest.json und background.js in einen Ordner legen
  • IP Adresse des Hosts in beiden Dateien anpassen
  • Navigiere zu den Erweiterungen: chrome://extensions
  • Entwicklermodus öffnen
  • Entpackte Erweiterung laden

Eine Liste unterstützter Webseiten findet sich hier:
JSON:
{
  "manifest_version": 3,
  "name": "Link an MPV senden",
  "version": "1.0",
  "permissions": ["contextMenus", "activeTab"],
  "host_permissions": ["http://192.168.0.101:3302/"],
  "background": {
    "service_worker": "background.js"
  }
}
Javascript:
chrome.runtime.onInstalled.addListener(() => {
    chrome.contextMenus.create({
        id: "sendLinkToMPV",
        title: "Link mit MPV abspielen",
        contexts: ["link"]
    });
});

chrome.contextMenus.onClicked.addListener((info, tab) => {
    if (info.menuItemId === "sendLinkToMPV") {
        fetch("http://192.168.0.101:3302/api/play", {
            method: "POST",
            headers: {
                "Content-Type": "application/json"
            },
            body: JSON.stringify({ url: info.linkUrl })
        })
        .then(response => {
            if (response.ok) {
                console.log("Link erfolgreich an MPV gesendet.");
            } else {
                console.error("Fehler beim Senden des Links an MPV.");
            }
        })
        .catch(error => {
            console.error("Netzwerkfehler:", error);
        });
    }
});
PlaylistPlayer-plasma6 Plasmoid für KDE und systemd User-Service.

Plasmoid für KDE6 liegt im Download-Ordner

~/.config/systemd/user/PlaylistPlayer.service
Code:
[Unit]
Description=PlaylistPlayer Service
After=network.target

[Service]
ExecStart=/home/$USER/PlaylistPlayer/PlaylistPlayer-linux
Restart=on-failure

[Install]
WantedBy=default.target
systemctl --user daemon-reload
systemctl --user enable --now PlaylistPlayer.service

  • Siehe: Changelogs
Wird, je nach Rückmeldung erweitert... - It works on my machine ¯\(ツ)


Entwicklerbereich
...naja, nicht wirklich bauen.
Es ist ein einfaches NodeJS Projekt.
"npm" muss installiert sein.
Bash:
npm install
node server.js
 

Anhänge

Du musst angemeldet sein, um die Anhangsliste zu sehen.
Zuletzt bearbeitet:
Hey, @testerstaron
Ja, die M3Us gehören in den playlists Ordner.
Für Filme in den "vod" Ordner und bei Serien "series". - Hier wird versucht nach Serie/Staffel zu gruppieren.

Im Grunde: VOD Playlist (m3u) in den passenden Ordner packen, Webinterface neu laden und hoffen, dass er die Liste erkennt.
--> Bei einer Anzeige von: "Playlistname (0)" scheint das parsen nicht zu funktionieren. - Wie erwähnt, hatte ich das bei den Serien M3Us aus @salidos Portals Probleme mit dem Zeichensatz.
Wird bei Dir die M3U im Interface schon erkannt?

Btw.:
@salidos - besten Dank für Dein Projekt. - Erst das hat mich zu diesem hier inspiriert.
 
Zuletzt bearbeitet:
Die utf16 Geschichte schaue ich mir morgen mal an.
Kann mich gar nicht daran erinnern... ;)
 
jepp, in Deiner data2/series.py
Ich hab es bei mir mal auf UTF-8 geändert und bin noch am testen.
Es gab Portale, da hat es nach einer Änderung der series.py funktioniert und es gab auch den Fall, dass die M3U mehrfach generiert wurde (Neustart nach Fertigstellung).
Außerdem hatte ich das Gefühl, dass es deutlich langsamer ist.
Hatte aber noch nicht genug Zeit zum testen. - Serien, Watchlist und History kamen erst letztes Wochenende hinzu
 
Zuletzt bearbeitet:
Teste mal die def main in der series.py:

Python:
async def main() -> None:
    try:
        args = parse_arguments()
        base_url: str = args.url
        mac_addresses: List[str] = load_mac_addresses(args.mac_file)
        mac: str = get_random_mac(mac_addresses)
        country_code: str = args.country
        portal_name = extract_portal_name(args.mac_file)
        m3u_file_path = get_m3u_file_path(portal_name, country_code)
        category_json_file_path = get_category_json_file_path()
        cookies: Dict[str, str] = {'mac': f'{mac}'}
       
        async with aiohttp.ClientSession(cookies=cookies) as session:
            token: Optional[str] = await get_token(session, base_url)
            if not token:
                print("Failed to obtain token.")
                return
            if not await get_subscription(session, base_url, token):
                print("Failed to fetch subscription info.")
                return

            headers: Dict[str, str] = {"Authorization": f"Bearer {token}"}
            series_categories = await get_series_categories(session, base_url, headers)
            if not series_categories:
                print("No series categories found.")
                return
            filtered_categories = filter_categories_by_country(series_categories, country_code)
            save_json_to_file(filtered_categories, category_json_file_path)

            try:
                with open(m3u_file_path, 'w', encoding='utf-16') as file:
                    file.write('#EXTM3U\n')
                    for category in filtered_categories:
                        try:
                            result = await fetch_and_save_series(session, base_url, headers, category, file)
                            print(f"Fetched {result} episodes for category: {category['title']}")
                        except Exception as e:
                            print(f"Error fetching series for category {category['title']}: {e}")
                sort_m3u_file(m3u_file_path)
                with open(m3u_file_path, 'r', encoding='utf-16') as file:
                    content = file.read()
                with open(m3u_file_path, 'w', encoding='utf-8') as file:
                    file.write(content)
                subprocess.run(['chown', 'www-data:www-data', m3u_file_path], check=True)
                os.chmod(m3u_file_path, 0o755)
                print(f"Successfully set ownership and permissions for {m3u_file_path}")
            except IOError as e:
                print(f"Error writing to M3U file: {e}")
    except KeyboardInterrupt:
        print("\nExiting gracefully...")
        sys.exit(0)
    except Exception as e:
        print(f"Unexpected error: {e}")
        await main()
 
hallo sidian,
das sieht echt mal
""end schick"" aus!!! *** (y)

so wie du das gebastelt hast, mit der index der main, server, css und js
huuust
verhält sich das ""ähnlich""
mit den widgets / addons auf den samsung tvs °!*

...nostalgisch und im positiven sinne,
erinnert es mich grade ein wenig an " ".

##wie geil wäre dein player nativ als widget auf samsung-tv, oder als apk für die androiden##
 
Zuletzt bearbeitet:
Freut mich, dass das Tool so gut bei Euch ankommt.

Leider schaffe ich es zeitlich nicht, großartig zu testen oder Funktionen einzubinden (Bzw. Portierung auf andere Plattformen) - Zumal es in meinem Setup schon ziemlich gut funktioniert.

@salidos - Vielen Dank für Deinen Fix. - Ich würde den Test aber gerne an die Community weiterleiten.
In meiner lokalen Installation habe ich selbst schon Anpassungen zum Zeichensatz gemacht, kann aber mangels Erfahrung (wann sich welches Portal wie verhält) keine Aussagen treffen.

@Ctrl_Esc - Die Idee, es für weitere Systeme zu portieren hatte ich auch schon. Insbesondere für meinen Samsung im Schlafzimmer:
Allerdings habe ich an jedem Bildschirm einen Computer angeschlossen und mir ist es erstmal wichtiger, dass ich vom Schreibtisch die Wohnzimmer-Medien und vom Smartphone die Schlafzimmer-Medien steuern kann.

Aber, alles was ich mache stelle ich als Quellcode zur Verfügung.
Benutzt ihn, tobt euch aus und habt Spaß damit...
In erster Linie soll das Projekt meine Bedürfnisse erfüllen -> da andere Leute ähnliche haben (könnten), hab ich mich zum veröffentlichen entschieden.

Ich bin dankbar über alle Beiträge / Commits (auch KI generiert*)
das Projekt ist klein genug, dass es vollständig in ein Chat Kontext passt*.

**Ich spiele immernoch Maintainer, überprüfe und "merge" Funktionen, bis sich eine besser qualifizierte Person findet.
 
Zuletzt bearbeitet:
Servus

Läuft bei mir auf Kubuntu mit Listen von vxparser,
nur die m3u8 wollte er nicht aber nach umbennen zu m3u
geht es.
 
  • Shuffle bei Filmlisten - Reihenfolge der Filme "zufällig"
  • Sortierung für Watchlist und History umgedreht (neu nach alt)
  • Limit bei Seriensuche erhöht
  • Suche angepasst (kein Exakt-Match nötig)
  • M3U8-Playlisterkennung
  • Pakete liegen im Download-Ordner (siehe erster Beitrag)
  • Es reicht, nur die ausführbare Datei (PlaylistPlayer-win.exe oder PlaylistPlayer-linux) auszutauschen.

@salidos - Deinen Fix aus Beitrag #9 hatte ich bei mir mal nach einem Restore der originalen series.py eingebaut und es läuft besser, als mein Workaround.
 
So, diesmal gibts das Update vor dem Wochenende:

  • Backend komplett neu strukturiert und aufgeräumt
  • CSS Anpassungen - Insbesondere die Bedienung auf einem Smartphone wurde verbessert.

Erster Beitrag angepasst:
  • Experimentelle Chrome-Erweiterung im "Extras" Spoiler
  • Screenshot vom Smartphone.
  • Alte "src-Pakete" entfernt, sind aber im Mega-Ordner "_Archiv" weiterhin zu finden.
  • Pakete liegen im Download-Ordner (siehe erster Beitrag)
  • Es reicht, nur die ausführbare Datei (PlaylistPlayer-win.exe oder PlaylistPlayer-linux) auszutauschen.
  • "Alle auswählen / keine auswählen" der Playlisten funktioniert in der 0.1.4 nicht
  • CSS für Smartphones braucht noch etwas "Liebe"

Über Euer Feedback würde ich mich freuen
 
hallo sidian,,
wie dir bereits schon hier im thread geschrieben,
es sieht echt sehr "schick / edel" aus!
aber weiter, bis "schick / edel" bin ich hier in "Portals" noch nicht gekommen!

daher schreib ich mal nen kleines "Feedback" was gemacht wurde,
bzw. was nicht ganz klar ist, wo files hingehören, und angesprochen werden wollen!!!
#####
zu meinem system:
  • raspi 3b+
  • Ubuntu 24.10 (GNU/Linux 6.11.0-1009-raspi aarch64)
#####
ich habe deine files (PlaylistPlayer_0.1.2-src)
auf den raspi nach portals geschoben
und dann den ordner umbenannt zu "PP". für "PlaylistPlayer".

sieht dann so aus:
Code:
root@raspi:/var/www/servermanager/portal/portals/PP# ls -la
total 43776
drwxr-xr-x  6 www-data www-data     4096 Mar 30 17:43 .
drwxr-xr-x 13 www-data www-data     4096 Mar 31 04:01 ..
-rwxr-xr-x  1 www-data www-data 44743993 Mar 30 17:44 PlaylistPlayer-linux
drwxr-xr-x  2 www-data www-data     4096 Mar 31 14:48 data
drwxr-xr-x 70 www-data www-data     4096 Mar 30 15:27 node_modules
-rwxr-xr-x  1 www-data www-data    27951 Mar 30 15:38 package-lock.json
-rwxr-xr-x  1 www-data www-data      483 Mar 30 15:27 package.json
drwxr-xr-x  4 www-data www-data     4096 Mar 28 16:35 playlists
drwxr-xr-x  2 www-data www-data     4096 Mar 28 16:35 public
-rwxr-xr-x  1 www-data www-data    19084 Mar 28 16:35 server.js


kiste neu gestartet.

dann
Code:
sudo apt update
sudo apt install nodejs
sudo apt install npm
sudo apt install mpv
sowohl auch mit dem docker container / id getestet:
Code:
docker exec -it "id1234f3ftjgjh" bash -c "apt update && apt install -y nodejs npm"
...usw
im "playlist" ordner einmal die vod aus portals hinzugefügt,
sowie vod vom portal mutant.

reboot

.. das express paket war jedoch noch erforderlich,
daher noch fehlendes paket nach installiert mit:
-
Code:
npm install express

um den server zu starten musste ich folgendes in putty eingeben,::

zuerst in den PP ordner wechseln:
Code:
cd /var/www/servermanager/portal/portals/PP/
dann:
Code:
npm start


öffne ich nen browser und öffne den PlaylistPlayer / PP:
Code:
http://192.168.2.88:3302/
wird zwar alles angezeigt und kann auch zwischen den vod listen auswählen,
welche angezeigt werden soll,
ABER

wenn ich auf nen film klicker,
gibts nen error log, bzüglich der mpv / pfade,
Code:
Fehler in /api/mpv/status: Error: connect ENOENT /tmp/mpvsocket
    at PipeConnectWrap.afterConnect [as oncomplete] (node:net:1601:16) {
  errno: -2,
  code: 'ENOENT',
  syscall: 'connect',
  address: '/tmp/mpvsocket'

sowie bei geklicker im browser
auf start / stop nicht gefunden,
ergibt auch nen fehlerlog.
Code:
###auswahl play / pause im browser###
Fehler: mpv läuft nicht in /api/mpv/playpause

###auswahl stop im browser###
Fehler: mpv läuft nicht in /api/mpv/stop


nach einem fehler,
ist zudem danach der server im browser nicht mehr erreichbar
und muss zwingend erneut gestartet werden:
Code:
npm start
damit dieser wieder über nen webbrowser wie (chrome / FF) ansprechbar wird!

wie muss ich weiter vorgehen?
auch ist mir noch nicht ganz klar, wo die "PlaylistPlayer_0.1.2-linux" files hin müssen,
bzw. was noch fehlt, dass bei nem klick im browser,
der film gestartet wird.

nen tut für deinen PP (PortalsPlayer) wäre fein,
bzw. wenn salidos das als nächstes update mit hinzufügen könnte,
wäre das doch super!
falls du nen log benötigst, schick ich dir das per pn.

würde mich freuen, wenn du mir hilfestellung geben kannst.

sonnigen gruß

-- log --
Code:
Welcome to Ubuntu 24.10 (GNU/Linux 6.11.0-1009-raspi aarch64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

 System information as of Mon Mar 31 17:25:49 CEST 2025

  System load:            0.17
  Usage of /:             22.6% of 27.89GB
  Memory usage:           33%
  Swap usage:             0%
  Temperature:            46.2 C
  Processes:              173
  Users logged in:        0
  IPv4 address for wlan0: 192.168.x.xx
  IPv6 address for wlan0: 2003:xx:xxx:xxxx:xxxx:xxxx:xxxx:xxxx

 * Strictly confined Kubernetes makes edge and IoT secure. Learn how MicroK8s
   just raised the bar for easy, resilient and secure K8s cluster deployment.

   https://ubuntu.com/engage/secure-kubernetes-at-the-edge

31 updates can be applied immediately.
To see these additional updates run: apt list --upgradable


Last login: Mon Mar 31 16:54:49 2025 from 192.168.x.xx
root@raspi:~#
root@raspi:~# node -v
v20.16.0
root@raspi:~# npm -v
9.2.0
root@raspi:~# mpv -v
[cplayer] Command line options: '-v'
[cplayer] mpv 0.38.0 Copyright © 2000-2024 mpv/MPlayer/mplayer2 projects
[cplayer] libplacebo version: v7.349.0
[cplayer] FFmpeg version: 7.0.2-3ubuntu1
[cplayer] FFmpeg library versions:
[cplayer]    libavutil       59.8.100
[cplayer]    libavcodec      61.3.100
[cplayer]    libavformat     61.1.100
[cplayer]    libswscale      8.1.100
[cplayer]    libavfilter     10.1.100
[cplayer]    libswresample   5.1.100
[cplayer]
[cplayer] Configuration: -Dpython.bytecompile=-1 -Dlibmpv=true -Dbuild-date=false -Dcdda=enabled -Ddvdnav=enabled -Dsdl2=enabled -Davfoundation=disabled -Degl-angle-win32=disabled -Dgl-cocoa=disabled -Dgl-win32=disabled -Dios-gl=disabled -Dsndio=disabled -Duwp=disabled -Dvaapi-win32=disabled -Dwasapi=disabled -Dwin32-threads=disabled -Ddvbin=enabled -Dprefix=/usr -Dlibdir=lib/aarch64-linux-gnu -Dlocalstatedir=/var -Dsysconfdir=/etc -Dbuildtype=plain -Dwrap_mode=nodownload
[cplayer] List of enabled features: alsa av-channel-layout avif-muxer caca cdda cplugins cuda-hwaccel cuda-interop dmabuf-interop-gl dmabuf-wayland drm dvbin dvdnav egl egl-drm egl-wayland egl-x11 ffmpeg ffnvcodec gbm gl glibc-thread-name glob glob-posix gpl iconv jack javascript jpeg jpegxl lavu-uuid lcms2 libarchive libass libavdevice libbluray libdl libplacebo linux-fstatfs lua52 memfd-create pipewire posix posix-shm ppoll pthread-condattr-setclock pulse rubberband rubberband-3 sdl2 sdl2-audio sdl2-gamepad sdl2-video sixel uchardet vaapi vaapi-drm vaapi-wayland vaapi-x11 vdpau vector vk-khr-display vt.h vulkan vulkan-interop wayland wayland-protocols-1-27 wayland-protocols-1-31 wayland-protocols-1-32 x11 xv zimg zimg-st428 zlib
[cplayer] Reading config file /etc/mpv/encoding-profiles.conf
[ifo_dvdnav] Opening /etc/mpv/encoding-profiles.conf
[bdmv/bluray] Opening /etc/mpv/encoding-profiles.conf
[file] Opening /etc/mpv/encoding-profiles.conf
[cplayer] Applying profile 'default'...
[cplayer] Reading config file /etc/mpv/mpv.conf
[ifo_dvdnav] Opening /etc/mpv/mpv.conf
[bdmv/bluray] Opening /etc/mpv/mpv.conf
[file] Opening /etc/mpv/mpv.conf
[cplayer] Applying profile 'default'...
[cplayer] Setting option 'hwdec' = 'vaapi' (flags = 4)
[cplayer] Setting option 'v' = '' (flags = 8)
[cplayer] mpv 0.38.0 Copyright © 2000-2024 mpv/MPlayer/mplayer2 projects
[cplayer] libplacebo version: v7.349.0
[cplayer] FFmpeg version: 7.0.2-3ubuntu1
[cplayer] FFmpeg library versions:
[cplayer]    libavutil       59.8.100
[cplayer]    libavcodec      61.3.100
[cplayer]    libavformat     61.1.100
[cplayer]    libswscale      8.1.100
[cplayer]    libavfilter     10.1.100
[cplayer]    libswresample   5.1.100
[cplayer]
[cplayer] Usage:   mpv [options] [url|path/]filename
[cplayer]
[cplayer] Basic options:
[cplayer]  --start=<time>    seek to given (percent, seconds, or hh:mm:ss) position
[cplayer]  --no-audio        do not play sound
[cplayer]  --no-video        do not play video
[cplayer]  --fs              fullscreen playback
[cplayer]  --sub-file=<file> specify subtitle file to use
[cplayer]  --playlist=<file> specify playlist file
[cplayer]
[cplayer]  --list-options    list all mpv options
[cplayer]  --h=<string>      print options which contain the given string in their name
[cplayer]
[cplayer] Set property: user-data/osc/visibility="auto" -> 1
[cplayer] Set property: user-data/osc/margins={"r":0,"b":0,"l":0,"t":0} -> 1
root@raspi:~#
root@raspi:~#
root@raspi:~#
root@raspi:~#
root@raspi:~# cd /var/www/servermanager/portal/portals/PP/
root@raspi:/var/www/servermanager/portal/portals/PP#
root@raspi:/var/www/servermanager/portal/portals/PP#
root@raspi:/var/www/servermanager/portal/portals/PP#
root@raspi:/var/www/servermanager/portal/portals/PP# ls -la
total 43776
drwxr-xr-x  6 www-data www-data     4096 Mar 30 17:43 .
drwxr-xr-x 13 www-data www-data     4096 Mar 31 04:01 ..
-rwxr-xr-x  1 www-data www-data 44743993 Mar 30 17:44 PlaylistPlayer-linux
drwxr-xr-x  2 www-data www-data     4096 Mar 31 14:48 data
drwxr-xr-x 70 www-data www-data     4096 Mar 30 15:27 node_modules
-rwxr-xr-x  1 www-data www-data    27951 Mar 30 15:38 package-lock.json
-rwxr-xr-x  1 www-data www-data      483 Mar 30 15:27 package.json
drwxr-xr-x  4 www-data www-data     4096 Mar 28 16:35 playlists
drwxr-xr-x  2 www-data www-data     4096 Mar 28 16:35 public
-rwxr-xr-x  1 www-data www-data    19084 Mar 28 16:35 server.js
root@raspi:/var/www/servermanager/portal/portals/PP#
root@raspi:/var/www/servermanager/portal/portals/PP#
root@raspi:/var/www/servermanager/portal/portals/PP#
root@raspi:/var/www/servermanager/portal/portals/PP#
root@raspi:/var/www/servermanager/portal/portals/PP# npm start

> PlaylistPlayer@0.1.2 start
> node server.js

Server läuft auf Port 3302


###aufgerufen im Chrome- oder FF- browser unter http://192.168.x.xx:3302/###
wird angezeigt. die auswahl der m3u dateien werden auch angezeigt.


###auswahl play / pause im browser###
Fehler: mpv läuft nicht in /api/mpv/playpause


###auswahl stop im browser###
Fehler: mpv läuft nicht in /api/mpv/stop


###klick ich nun einen film im browser an###
MPV gestartet: http://mutant.arrox.top:80/play/movie.php?mac=00:1A:79:xx:xx:xx&stream=755548.mkv&play_token=lUyV2vkhDy&type=movie
Fehler in /api/mpv/status: Error: connect ENOENT /tmp/mpvsocket
    at PipeConnectWrap.afterConnect [as oncomplete] (node:net:1601:16) {
  errno: -2,
  code: 'ENOENT',
  syscall: 'connect',
  address: '/tmp/mpvsocket'
}
Fehler in /api/mpv/status: Error: connect ENOENT /tmp/mpvsocket
    at PipeConnectWrap.afterConnect [as oncomplete] (node:net:1601:16) {
  errno: -2,
  code: 'ENOENT',
  syscall: 'connect',
  address: '/tmp/mpvsocket'
}

###weiterer fehler###
root@raspi:/var/www/servermanager/portal/portals/PP# npm start

> PlaylistPlayer@0.1.2 start
> node server.js

node:events:497
      throw er; // Unhandled 'error' event
      ^

Error: listen EADDRINUSE: address already in use :::3302
    at Server.setupListenHandle [as _listen2] (node:net:1898:16)
    at listenInCluster (node:net:1955:12)
    at Server.listen (node:net:2057:7)
    at Function.listen (/var/www/servermanager/portal/portals/PP/node_modules/express/lib/application.js:635:24)
    at Object.<anonymous> (/var/www/servermanager/portal/portals/PP/server.js:584:5)
    at Module._compile (node:internal/modules/cjs/loader:1358:14)
    at Module._extensions..js (node:internal/modules/cjs/loader:1416:10)
    at Module.load (node:internal/modules/cjs/loader:1208:32)
    at Module._load (node:internal/modules/cjs/loader:1024:12)
    at Function.executeUserEntryPoint [as runMain] (node:internal/modules/run_main:174:12)
Emitted 'error' event on Server instance at:
    at emitErrorNT (node:net:1934:8)
    at process.processTicksAndRejections (node:internal/process/task_queues:82:21) {
  code: 'EADDRINUSE',
  errno: -98,
  syscall: 'listen',
  address: '::',
  port: 3302
}

Node.js v20.16.0
root@raspi:/var/www/servermanager/portal/portals/PP#
 
Zuletzt bearbeitet:
Zurück
Oben