YAMuPlay - Yet Another Music PLAYer für Python3 auf Basis von omxplayer.bin

Ein neuer Artikel wurde veröffentlicht
  • Servus Leute,


    EDIT 04.01.2018:
    Ich habe eine neue Version V0.2.2 von YAMuPlay veröffentlicht, die auch unter Raspbian Jessie bzw. Stretch richtig läuft, siehe Beitrag #11


    ich möchte hier dem Forum mal was zurückgeben und nicht immer nur einseitig Informationen abziehen:


    Bei meinem Projekt handelt es sich um einen Mediaplayer für den Raspberry Pi unter Python3. Dabei bin ich nicht den Weg gegangen, das Rad (hier die Software zum Abspielen von Mediadateien) neu zu erfinden. Vielmehr fand ich es wichtig, den vorhandenen Mediaplayer omxplayer.bin in Python einzubinden.


    Das Problem war die Ansteuerung von omxplayer.bin über Python. Nach einiger Recherche fand ich heraus, dass der omxplayer.bin eine Kommunikation zu anderen Prozessen (Programmen) über dbus unterstützt. Dafür gibt es bereits ein Python-Modul: python-omxplayer-wrapper.


    Mein Mediaplayer YAMuPlay besteht aus einer tkinter-GUI, die sich an einem klassischen CD-Spieler orientiert. Anstelle von CDs werden dem Player USB-Sticks mit Musiktiteln zugeführt. Hier war dann auch schon die zweite Herausforderung: Das Erkennen von USB-Ereignissen. Für diese Aufgabe habe ich das Python-Modul pyudev verwendet.



    Meiner Software habe ich auch eine ausführliche(?) Dokumentation im PDF-Format beigefügt. Das ganze Softwarepaket inkl. PDF-Doku kann von Github heruntergeladen werden: https://github.com/schlizbaeda/bauwong


    Direkter Download auf den RPi über folgendes Kommando in /home/pi:

    Code
    1. git clone https://github.com/schlizbaeda/bauwong.git


    Das Projekt liegt dann im Verzeichnis /home/pi/bauwong
    Die PDF-Doku liegt unter /home/pi/bauwong/latex/YAMuPlay.pdf. Dort ist dann der ganze Rest erklärt.



    viel Spaß


    Peter

    To make it better just tux it a little bit.
    3735929054 = 0xDEADC0DE

    Dieser Beitrag wurde bereits 2 Mal editiert, zuletzt von schlizbäda () aus folgendem Grund: neue Programmversion veröffentlicht

  • was ist denn heute los, erst klappt die eine Anleitung nicht, dann deine



    egal wo ich J drücke, per Synergy oder per BT Tastatur immer folgt Abbruch


    PS. j oder <SHIFT> J egal

    lasst die PIs am Leben !
    Energiesparen:
    Das Gehirn kann in Standby gehen. Abschalten spart aber noch mehr Energie, was immer mehr nutzen. Dieter Nuhr

    Dieser Beitrag wurde bereits 1 Mal editiert, zuletzt von jar ()

  • Servus jar,
    schön, dass Du dich für mein Projekt interessierst und auf einem RPi2 unter jessie installieren willst! :danke_ATDE:


    Ich hatte es damals (Nov. 2015-Jan. 2016) auf einem RPi B+ noch unter wheezy (Imagedatei 2015-05-05-raspbian-wheezy.img mit den verfügbaren Updates) aufgesetzt und entwickelt. Am Schluss testete ich die Installation nochmals auf einer 4GB-SD-Karte mit dem jungfräulichen wheezy-Image vom 05.05.2015. Mit jessie (obwohl bereits verfügbar) hatte ich es dann nicht mehr ausprobiert. Vielmehr ging ich davon aus, dass dies wohl wesentlich unproblematischer sei, wegen des neueren Kernels etc.



    Du hast ja offenbar meine Anleitung gelesen und versucht, die Software-Pakete aus Kapitel 3.2 zu installieren.
    Da muss ich gleich den ersten Fehler meinerseits gestehen, die Anleitung nicht präzise genug verfasst zu haben: Kapitel 3.2 soll eigentlich nur allgemein aufzählen, welche Module prinzipiell notwendig sind. In der Quellenangabe habe ich der Einfachheit halber aber die Download-Kommandos für die jeweiligen Original-Pakete eingetragen. Es fehlt der Hinweis, dass diese Pakete so nicht installiert zu werden brachen. Die Schritt-für-Schritt-Installation beginnt erst in Kapitel 3.3. Das werde ich in der Doku demnächst ändern und auf >> github << stellen.


    Trotzdem finde ich die Ausgaben auf Deinem RPi2 unter jessie aus dem Spoiler sehr seltsam:
    Ich habe mir daraufhin das aktuelle jessie-Full-Desktop-Image >> 2016-05-27-raspbian-jessie.img << heruntergeladen, auf eine 8GB-Karte kopiert und nach

    Code
    1. raspi-config
    2. sudo apt-get update


    das Kommando

    Code
    1. sudo apt-get install python3-dbus


    ausgeführt. Es gab bei mir keine Probleme, siehe Screenshot Bildschirmfoto1.png. Bei mir lief die Installation ohne Abbruch.



    Was mir einfällt, aber da kenne ich mich vermutlich weniger aus als Du:
    * Ist bei Dir in der Lokalisierung von Raspbian irgendwo noch "englisch" eingestellt, so dass der RPi zwar deutsche Bildschirmausgaben macht, aber intern für Ja/Nein-Abfragen trotzdem noch ein "Y" erwartet?
    * Ist die SD-Karte bzw. die genutzte Partition groß genug? Jessie auf 4GB-Karten ist ja äußerst knapp. Aber da wäre die Ausgabe von apt-get vermutlich anders...


    Peter




    Nachtrag vom 27.06.2016:
    Ich habe bei mir zu Hause auf meinem RPi2 den relevanten Abschnitt 3.3.3 der Installation aus der Anleitung unter einem jungfräulichen jessie nachvollzogen: Bei mir funktioniert es.
    Ich weiß aus eigener leidvoller Erfahrung, dass "vorbelastete" bzw. stark behandelte Systeme aber oft streiken. :baeh2: 
    Siehe die folgenden Beiträge!


    Nachtrag vom 02.07.2016:
    Die Software läuft unter wheezy problemlos, unter jessie funktioniert die automatische USB-Laufwerk-Erkennung nicht, da USB-Laufwerke unter jessie automatisch in /media/pi gemountet werden und nicht mehr einfach nur in /media wie unter wheezy. Siehe Beitrag #7.
    Die >> PDF-Dokumentation << wurde auf Github aktualisiert.


  • Servus jar,
    schön, dass Du dich für mein Projekt interessierst und auf einem RPi2 unter jessie installieren willst! :danke_ATDE:


    Was mir einfällt, aber da kenne ich mich vermutlich weniger aus als Du:
    * Ist bei Dir in der Lokalisierung von Raspbian irgendwo noch "englisch" einestellt, so dass der RPi zwar deutsche Bildschirmausgaben macht, aber intern für Ja/Nein-Abfragen trotzdem noch ein "Y" erwartet?


    ist möglich, mit der tastaturlocalisation stehe ich oder das ganze config immer noch auf Kriegsfuss, ich habe den Eindruck als wenn die linke PI Hand nicht weiss was die rechte PI Hand tut.



    * Ist die SD-Karte bzw. die genutzte Partition groß genug? Jessie auf 4GB-Karten ist ja äußerst knapp. Aber da wäre die Ausgabe von apt-get vermutlich anders...


    8GB - 32GB sollte reichen, aber auch da schwimme ich, verschiedene probiert und die IMGs werden ja besonders nach unaufgeräumten update nicht kleiner, habe das Gefühl das mittlerweile 8GB schon zu klein ist, aber ich habe nur eine 8GB, eine 32GB in microSD und da wechsel ich halt um nicht alles von vorne zu installieren.


    Der Wechsel auf microSD muss wohl den SD Karten Herstellern geschuldet sein, für den PI1 B hatte ich 10x SD bestellt um leichter zu wechseln, beim PI2 sehe ich nicht ein noch mal etliche zu bestellen bis wieder ein neues Format kommt.

    lasst die PIs am Leben !
    Energiesparen:
    Das Gehirn kann in Standby gehen. Abschalten spart aber noch mehr Energie, was immer mehr nutzen. Dieter Nuhr

  • ist möglich, mit der tastaturlocalisation stehe ich oder das ganze config immer noch auf Kriegsfuss, ich habe den Eindruck als wenn die linke PI Hand nicht weiss was die rechte PI Hand tut.


    ...also den Eindruck habe ich auch bisweilen, aber ganz generell bei vielen Betriebssystem-Einstellungen von Raspbian... Da kann ich mir auch alles Mögliche als Ursache vorstellen. Ich habe selbst schon die seltsamsten Dinge erlebt, vor allem wenn das OS schon stark konfiguriert wurde.
    Da habe ich geDuckDuckGoed und Lösungsvorschläge ausprobiert: Nicht angebissen!
    Neu aufgesetzt und es hat einwandfrei gefunzt. Großes Fragezeichen...
    Wahrscheinlich gibt's deswegen auch so viele Anleitungen/Tutorials, die anscheinend nicht funktionieren :denker:




    8GB - 32GB sollte reichen, aber auch da schwimme ich, verschiedene probiert und die IMGs werden ja besonders nach unaufgeräumten update nicht kleiner, habe das Gefühl das mittlerweile 8GB schon zu klein ist, aber ich habe nur eine 8GB, eine 32GB in microSD und da wechsel ich halt um nicht alles von vorne zu installieren.


    Der Wechsel auf microSD muss wohl den SD Karten Herstellern geschuldet sein, für den PI1 B hatte ich 10x SD bestellt um leichter zu wechseln, beim PI2 sehe ich nicht ein noch mal etliche zu bestellen bis wieder ein neues Format kommt.



    Also da habe ich die Devise: Man kann nie genug SD-Karten vorrätig haben, vor allem wenn man - wie ich - heute das eine ausprobiert und morgen das andere. Nach drei Tagen weiß man dann nicht mehr, was jetzt auf dieser grünen Karte drauf ist :s


    Ich verwende immer möglichst kleine SD-Karten, damit dann nach dem Abschluss das Image für die Datensicherung nicht so groß wird.





    PS:
    Dir traue ich zu, dass Du das Problem dann trotzdem lösen konntest bzw. dass es für Dich letztlich keines war ;)

    To make it better just tux it a little bit.
    3735929054 = 0xDEADC0DE

    Dieser Beitrag wurde bereits 1 Mal editiert, zuletzt von schlizbäda ()


  • PS:
    Dir traue ich zu, dass Du das Problem dann trotzdem lösen konntest bzw. dass es für Dich letztlich keines war ;)


    nö ohne Hardware bin ich am PI eine Niete, ist mir zu undurchsichtig und das ändert sich alles schneller als man lernen kann, andere Baustellen überall fordern mich, der PI liegt nun ausser als mediaPlayer hinten

    lasst die PIs am Leben !
    Energiesparen:
    Das Gehirn kann in Standby gehen. Abschalten spart aber noch mehr Energie, was immer mehr nutzen. Dieter Nuhr

  • ACHTUNG:


    Mir ist beim Testen in der jessie-Distribution noch aufgefallen, dass die USB-Sticks bei wheezy und jessie in unterschiedlichen Verzeichnissen gemountet werden:


    Code
    1. wheezy:  /media/<Laufwerksbezeichnung>
    2. jessie:  /media/<user>/<Laufwerksbezeichnung>
    3.    z.B.  /media/pi/<Laufwerksbezeichnung>


    Bei der Suche der einzubindenden Musikdateien läuft die Software unter wheezy derzeit korrekt, für jessie (oder ganz generell) muss ich mir da noch ein paar Zeilen Python-Code einfallen lassen...



    Mir ist das ja schon an meinem PC aufgefallen, auf dem debian jessie drauf ist, während damals auf meinem RPi noch Raspbian wheezy drauf war: Auch da verhielt sich der Mount von USB-Sticks (und anderen "Laufwerken") auf dem jessie-PC entsprechend obiger Ausführung. Ich führte das fälschlicherweise auf den Unterschied Debian<-->Raspbian zurück. Der wahre Grund ist aber offenbar der Release-Unterschied wheezy<-->jessie.


    Ich bin halt ein echter Linux-Noob! :)



    schlizbäda

  • Neue Version yamuplay V0.2.1 für aktuelle Raspbian-Versionen Jessie with Desktop (PIXEL) vom 05.07.2017 und neuer (Stretch)


    Servus Leute,


    ich habe (nachdem es mich eeeewig lange nicht gefreut hat) eine lauffähige Version meines Mediaplayers für das aktuelle Release von Raspbian Jessie erstellt und auf >> github << veröffentlicht. Die Einzelheiten können dort entnommen werden.


    Ich möchte mich an dieser Stelle insbesondere bei >> meigrafd << bedanken, der mein ursprüngliches Script einfach so auf Vordermann brachte, indem er u.a. den Code auf objektorientierte Programmierung umgestellt hatte. Darauf aufbauend korrigierte und erweiterte ich das Script auf den Versionsstand V0.2


    schlizbäda

    To make it better just tux it a little bit.
    3735929054 = 0xDEADC0DE

    Dieser Beitrag wurde bereits 1 Mal editiert, zuletzt von schlizbäda ()

  • Genau!


    Da stellt man sein Programm auf Raspbian Jessie um und dann bringt die RPi-Foundation >> Raspbian Stretch << heraus. Bin mal gespannt, ob meine Änderungen auch unter Stretch laufen :s
    Ich lade Raspbian Stretch gerade herunter und werde es gleich testen. Diesen Beitrag werde ich dann editieren...


    EDIT1:
    Das Image 2017-08-16-raspbian-stretch.img hat eine Größe von 4 907 675 648 Bytes, ein

    Code
    1. sudo dd if=2017-08-16-raspbian-stretch.img of=/dev/sdb bs=1M status=progress


    dauert bei mir geschmeidige 405 Sekunden


    EDIT2:
    So, nagelneue Sandisk 16GB-SD mit dem Stretch-Image auf meinem RPi2 eingesteckt, mit dem ich gerade arbeite. Bleibt beim Booten bei den vier Himbeeren stehen, kein Text, nur blinkender Cursor! :baeh2: 
    Daraufhin meinen neuen RPi3 ausgepackt, Stretch-SD umgesteckt, dito. :wallbash: 
    Also: >> Zähneputzen, pullern und ab ins Bett! << Hätte ich schon vor ein paar Stunden machen sollen :X


    EDIT3:
    ...und wie immer funktioniert es nach der Umstellung des Raspbian-Release nicht mehr!
    Dieses Programm läuft unter Raspbian Jessie (Imagedatei 2017-07-05-raspbian-jessie.img)
    aber leider NICHT unter Raspbian Stretch (Imagedatei 2017-08-16-raspbian-stretch.img)


    Also vor dem Herunterladen bitte die auf dem eigenen RPi (bzw. auf der SD-Karte) installierte Raspbian-Version kontrollieren!

    Code
    1. uname -a
    2. vcgencmd version


    Bei einem Datum >= Tue Aug 8 16:00:15 BST 2017 wird diese Version vermutlich nicht funktionieren :baeh2:


    EDIT4:
    Ich habe die Version 0.2.1 veröffentlicht, die sowohl mit Jessie als auch mit Stretch funktioniert.

    To make it better just tux it a little bit.
    3735929054 = 0xDEADC0DE

    Dieser Beitrag wurde bereits 1 Mal editiert, zuletzt von schlizbäda ()

  • aktueller Stand:


    Da schlug mal wieder meine brutale Noobhaftigkeit bezüglich Linux und Python zu :(


    Der Grund, warum es einige Tage später mit Raspbian Stretch nicht funktionierte und mit Raspbian Jessie schon, lag nicht an besagten Raspbian-Distributionen, sondern schlicht und einfach daran, dass offenbar gleichzeitig auch das von yamuplay.py benötigte Python-Modul >> python-omxplayer-wrapper << mal wieder so geändert wurde, dass es bezüglich der Funktionsaufrufe zu den alten Ständen inkompatibel wurde! =( 
    Bei einem frischen Download funktionierte es dann auch unter Jessie nicht mehr!


    Daraufhin habe ich jetzt beschlossen, alle auf GitHub gespeicherten externen Komponenten nicht mehr von den Originalquellen herunterzuladen, wo sie möglicherweise immer wieder inkompatiblen Änderungen unterworfen sind. Stattdessen habe ich die von mir verwendeten Versionsstände in mein eigenes >> GitHub-Repository << aufgenommen, um von künftigen Änderungen unabhängig zu bleiben.
    Selbst wenn man das eigentlich so eher nicht machen sollte... :angel:
    Dies führt dann zu Konflikten, wenn mehrere Programme verschiedene Versionen der gleichen Bibliothek voraussetzen. Beste Voraussetzungen für ein Problem, das vor allem unter Windows (vor .NET) lange allgegenwärtig war und mit dll-Hell bezeichnet wird.


    Jedenfalls funktioniert YAMuPlay mit dieser Methode künftig hoffentlich etwas unabhängiger von diversen Rahmenbedingungen, die ich nicht beeinflussen kann. :baeh2:
    Meine Schimpftirade auf Raspbian Wheezy/Jessie/Stretch nehme ich hiermit auch zurück :blush:


    schlizbäda

    To make it better just tux it a little bit.
    3735929054 = 0xDEADC0DE

    Dieser Beitrag wurde bereits 1 Mal editiert, zuletzt von schlizbäda ()

  • Version 0.2.2


    Da der omxplayer mittlerweile über den Kommandozeilenparameter -o alsa die Audioausgabe auch über ALSA eingebundene Soundkarten ermöglicht, habe ich diesen Kommandozeilenparameter 1:1 in meinen yamuplay übernommen. Diese Version kann bei github heruntergeladen werden.

  • Hi schlizbäda ,

    ich hätte für dein README auf GitHub ein paar Verbesserungen. Willst du einen Issue auf GitHub oder kann ich das einfach hier aufzählen?

  • schlizbäda sorry, hab's heute (gestern) nicht geschafft :neutral:

    Morgen hoffentlich, ich würde in dem Fall GitHub bevorzugen.

  • Hallo linusg,


    Du musst ja nicht gleich so schreien (mich erwähnen)... eine Antwort hätte gereicht, dass die Bimmel ober wackelt. ;)


    BTW: Grundsäztlich stimme ich Dir zu, aber was PEP angeht ist Ansichts- bzw. Geschmacksache. M.E. geht Funktionalität vor Konformität, auch wenn ihr (bootsmann, Du & Co) selbst meigraft missioniert habt. :stumm: Hut ab, aber ... :dau1: 

  • Du musst ja nicht gleich so schreien (mich erwähnen)... eine Antwort hätte gereicht, dass die Bimmel ober wackelt.

    hyle ICH DACHTE SCHREIEN IST CAPSLOCK DAS WAR FLÜSTERN!!!1elf Tut mir leid. Aber du hast nicht ganz recht, wenn du beim Antworten "Einstellungen > Thema abonnieren" abwählst, muss ich dich erwähnen oder zitieren. Und man weiß ja nie, doppelt hält besser und so...


    BTW: Grundsäztlich stimme ich Dir zu, aber was PEP angeht ist Ansichts- bzw. Geschmacksache.

    Nö, kann ich so nicht stehen lassen ;)

    <klugscheiss>

    PEP steht lediglich für Python Enhancement Proposal, solltest du der Englischen Sprache nicht mächtig sein: "Python Verbesserungsvorschlag". Das beschreibt ein beliebiges Dokument, in dem die Verschiedensten Dinge festgehalten werden: neue Features, Verbesserungen, Styleguides, weise Sprüche...

    Aber ich verstehe dich, denn der Laie neigt dazu, größtenteils PEP8 als "PEP" zu verallgemeinern. :angel:

    M.E. geht Funktionalität vor Konformität

    Zentris (sorry für's schreien :lol:) sagt das immer so schön, Code wird viel öfter gelesen als geschrieben... oder so... Und wenn ich mir das Geschmiere von so manchem anschaue freue ich mich über meine pingelige Korrektheit diesbezüglich. So kann ich den Code wenigstens anderen Zeigen, ohne mich schämen zu müssen und kann ihn selbst Monate oder Jahre später noch anschauen. :2cents:


    auch wenn ihr (bootsmann, Du & Co) selbst meigraft missioniert habt.

    Ja, danke für die Blumen. Das haben wir echt gut gemacht. Wenn er jetzt noch den #EOF comment weglassen würde :elektro:


    </klugscheiss>

  • Und wenn ich mir das Geschmiere von so manchem anschaue freue ich mich über meine pingelige Korrektheit diesbezüglich.

    Da bin ich ganz bei Dir! :bravo2:



    Wenn er jetzt noch den #EOF comment weglassen würde

    Da gibt es ganz andere Kandidaten, bei denen ich mir wünschte, es gäbe gar keine Kommentare/Beiträge in diversen Treads. Ich sage nur UGIDFO (User Gegen Iconisierung Des Forums):notfunny:  schlizbäda sorry für den OT! ;)