Dies ist eine mobil optimierte Seite, die schnell lädt. Wenn Sie die Seite ohne Optimierung laden möchten, dann klicken Sie auf diesen Text.

M3U VOD Player - Linux / Windows

sidian

Newbie
Registriert
25. September 2024
Beiträge
28
Reaktionspunkte
58
Punkte
13
Hallo zusammen,

nachdem ich lange auf der Suche nach einem simplen, aber flexiblen Player für M3U-Playlisten war, der nicht ständig abstürtzt, wenn die Liste ein paar Megabyte erreicht hat und nichts Passendes finden konnte, habe ich selbst angefangen, ein kleines Tool entwickelt: Den „M3U VOD Player“. Der Player zeigt übersichtlich Filme und Serien aus verschiedenen M3U-Playlisten an und ermöglicht direktes Abspielen über den MPV-Player – wahlweise lokal oder über eine praktische Fernsteuerung.

Das Projekt steckt zwar noch in einer frühen Phase und hat sicherlich hier und da noch kleine Schwächen, läuft aber bereits stabil genug, um im Alltag genutzt zu werden. Fertige Pakete für Windows und Linux stehen bereit, ebenso wie der offene Quellcode, falls ihr selbst Hand anlegen möchtet.

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


Im Anhang befindet sich nur der Quellcode.
Fertige Pakete für Linux und Windows hab ich hier:

In Linux muss der mpv Player vorhanden sein, beim Windows-Paket liegt er schon dabei.

Das Tool startet einen lokalen NodeJS Server auf Port: 3302
Heißt: Nach dem starten solltet Ihr das Webinterface über die Adresse: erreichen können
HowTo Kurzfassung:
  • Wenn Du im Alltag Windows verwendest, nimmst Du das Paket: "PlaylistPlayer_0.x.x-win"
    • Für Linux braucht man einen grafischen Desktop (KDE, Gnome, ...)
  • Entpackst den ZIP Ordner
  • Innerhalb der Entpackten Ordnerstruktur hast Du nun neben der .exe-Datei auch noch einen playlists-Ordner
  • Kopiere vorhandene Playlisten (z.B. aus Portals oder eine Testline mit VoD) in den jeweiligen Unterordner (vod oder series)
  • Öffne die PlaylistPlayer-win.exe
  • Das Tool ist erstmal recht unspektakulär und zeigt nur ein schwarzes Fenster mit dem Hinweis: Server läuft auf Port 3302
  • Windows fragt beim ersten Start, ob die Firewall einen Port für NodeJS öffnen darf (Erforderlich für Fernsteuerung, ohne Freigabe funktioniert es nur lokal)

  • Nach dem starten solltest Du dann das Webinterface von dem Gerät, auf dem der PlaylistPlayer läuft unter der Adresse: erreichen können.
  • Für die Fernsteuerung ist es dann die IP Adresse des Computers:
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
  • "Alle auswählen / keine auswählen" der Playlisten funktioniert in der 0.1.4 nicht
  • CSS für Smartphones braucht noch etwas "Liebe"
  • Socket-Verbindung zum MPV ist noch etwas instabil
    • Play/Pause, Stop und Fortschrittsanzeige sind gelegentlich nicht verfügbar

Serien VODs von Portals werden wohl mit UTF16 erstellt und machen beim einlesen Probleme.
Diese sollten zuvor nach UTF-8 konvertiert werden:
Bash:
iconv -f UTF-16LE -t UTF-8 quelle_series_DE.m3u > quelle_series_DE_utf8.m3u


Entwicklerbereich
Die "src-Pakete" dürften für die meisten von Euch erstmal eher uninteressant sein und ist eher für folgende zwei Situationen gedacht:
  • Misstrauen gegenüber fertige Pakete - man kann viel Blödsinn in einer .exe verstecken
    • in der "src" ist der ganze Inhalt der .exe als Menschenlesbarer Code.
  • Entwickler oder die, die es werden wollen
    • hier gibt es viele fähige Leute, die Ideen oder Fixes beitragen könnten

...naja, nicht wirklich bauen.
Es ist ein einfaches NodeJS Projekt.
"nodejs" und "npm" müssen installiert sein.
Bash:
npm install
node server.js
Chrome-Addon
Achtung: Es ist nur eine "Spielerei" und das Addon ist nicht erforderlich.

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);
        });
    }
});
 

Anhänge

Du musst angemeldet sein, um die Anhangsliste zu sehen.
Zuletzt bearbeitet:
@l00pm45ch1n3 geht mir genauso. Vielleicht ist wer so nett und hilft mir, wo muss ich die m3u den einfügen? In Playlist Ordner? Vielen Dank
 
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!!! ***

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:
Für die Nutzung dieser Website sind Cookies erforderlich. Du musst diese akzeptieren, um die Website weiter nutzen zu können. Erfahre mehr…