Videoübertragung per Python

Python auf Einplatinencomputer wie Raspberry Pi, Banana Pi / Python für Micro-Controller
Antworten
CallMeGuardian
User
Beiträge: 8
Registriert: Donnerstag 12. Oktober 2023, 16:26

Hallo liebes Python-Forums,

ich hätte eine kleine Frage bzgl. eines Projektes welches ich ausführen muss. Um es kurz und bündig zu halten überspringe bzw. fasse ich Sachen zusammen. Allgemein soll über einen Raspberry Pi 3B ein Video abgespielt werden, dabei wird eine Textdatei durch NodeRed erzeugt in welcher steht, welches Video abgespielt werden soll (ca. so: Video1 = 1, Video2 = 0, Video3 = 0 usw.) mein Problem besteht jetzt aus zwei Punkten (da ich mich weder mit Python auskenne, noch irgendetwas zu diesen Punkten in meiner Recherche gefunden habe)

-Punkt 1: Ist es überhaupt möglich eine Textdatei in Python aufzurufen und diese dann im Programm zu nutzen und wenn ja wie?

-Punkt 2: Kann man dadurch (zb. wenn Video1 = 1) ein bestimmtes Video Auf dem Pi öffnen welches dann abgespielt wird?

Ich arbeite übrigens mit PyCharm zum jetzigen Zeitpunkt, Falls jemand eine Andere Empfehlung hat gerne her damit :)

Danke schonmal im voraus für alle Lösungsvorschläge oder Ratschläge

MfG
Noah :)
__deets__
User
Beiträge: 14545
Registriert: Mittwoch 14. Oktober 2015, 14:29

Übertragung eines Videos ist da ja eher nicht.

Und eigentlich braucht es auch kein Python. Einfach omxplayer, den kann man über DBus fernsteuern, und das direkt aus node red.

https://www.npmjs.com/package/dbus
Sirius3
User
Beiträge: 18051
Registriert: Sonntag 21. Oktober 2012, 17:20

Punkt1: ja, steht in jedem Grundlagentutorial
Punkt2: auch ja

Warum so ein komisches Text-Datei-Format?
Warum überhaupt eine Datei?
Warum überhaupt Python? Kennst Du Dich mit etwas anderem besser aus?
CallMeGuardian
User
Beiträge: 8
Registriert: Donnerstag 12. Oktober 2023, 16:26

__deets__ hat geschrieben: Donnerstag 12. Oktober 2023, 19:10 Übertragung eines Videos ist da ja eher nicht.

Und eigentlich braucht es auch kein Python. Einfach omxplayer, den kann man über DBus fernsteuern, und das direkt aus node red.

https://www.npmjs.com/package/dbus
OMXPlayer habe ich selber auch schon überlegt aber leider ist dies bei uns nicht zugelassen desswegen fällt das leider raus :/
CallMeGuardian
User
Beiträge: 8
Registriert: Donnerstag 12. Oktober 2023, 16:26

Sirius3 hat geschrieben: Donnerstag 12. Oktober 2023, 19:13 Punkt1: ja, steht in jedem Grundlagentutorial
Punkt2: auch ja

Warum so ein komisches Text-Datei-Format?
Warum überhaupt eine Datei?
Warum überhaupt Python? Kennst Du Dich mit etwas anderem besser aus?
Da ich die Daten des SPS Datenbausteins über NodeRed übertragen muss, dadurch muss ich dieses irgendwie auf den Pi bekommen, dies ist mit ner Textdatei am „einfachsten“ allgemein kenn ich mich leider garnicht mit Programmierhochsprache aus und hatte mich für Python entschieden da ich hier am meisten Infos gefunden habe, dazu kam das ich dies über die „CV2“ Bibliothek laufen lassen wollte diese ist aber nicht mehr verfügbar.
__deets__
User
Beiträge: 14545
Registriert: Mittwoch 14. Oktober 2015, 14:29

Wer macht denn so eine unsinnige Vorgabe, dass der OMX-Player (als die Standardloesung in dem Bereich auf dem Pi schlechthin) nicht zugelassen ist?

Ich vermute mit CV2 meinst du OpenCV, das ist garantiert verfuegbar. Allerdings natuerlich nur, wenn nicht auch da wieder die Hand Gottes irgendwelche abstrusen Vorgaben macht.

Das mit der Datei ist nicht am einfachsten. Am einfachsten ist ein UNIX domain socket, in den man zeilenweise schreibt von Node Red aus, und genauso einfach zeilenweise einliest.

Ich wuerde aber nochmal mit Nachdruck empfehlen, dem Vorgeber auf's Dach zu steigen. Das nicht zuzulassen, ist eine unnoetige Komplikation.
Benutzeravatar
__blackjack__
User
Beiträge: 13533
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

@__deets__: Das macht aber schon Sinn einen Player nicht mehr zu erlauben der nicht mehr weiterentwickelt wird, weil der auf eine API aufsetzt die tot ist, und wo absehbar ist, dass das irgendwann schlicht nicht mehr funktionieren wird. Also auf 64-Bit-Kerneln ja jetzt schon nicht mehr.

Code: Alles auswählen

- (void)countSheep {
    unsigned int sheep = 0;
    while ( ! [self isAsleep]) { ++sheep; }
}
__deets__
User
Beiträge: 14545
Registriert: Mittwoch 14. Oktober 2015, 14:29

Das wusste ich nicht. Aber denke auch nicht, dass das hier der Grund ist. Doch dann ist es halt VLC, und immer noch DBus. https://wiki.videolan.org/DBus-usage/
CallMeGuardian
User
Beiträge: 8
Registriert: Donnerstag 12. Oktober 2023, 16:26

__deets__ hat geschrieben: Donnerstag 12. Oktober 2023, 19:10 Übertragung eines Videos ist da ja eher nicht.

Und eigentlich braucht es auch kein Python. Einfach omxplayer, den kann man über DBus fernsteuern, und das direkt aus node red.

https://www.npmjs.com/package/dbus
Hast du zufällig dazu nen Beitrag o. VIdeo wie das über DBus fernsteurebar ist? Die Beschränkung mit OMX, lag eher daran, dass ich nur wusste das man diesen per Fernbedienung und/oder Maus und Tastatur steuerbar wäre. Da es aber allgemein im "Industriestandard" bleiben soll wurde OSMX nicht aufgrund des Programmes sondern der Bedienung abgelehnt, falls es möglich wäre dieses zu Automatisieren, würde es auch funktionieren.

Also wie ich mit dem DBus den OMXPlayer steuern kann.
__deets__
User
Beiträge: 14545
Registriert: Mittwoch 14. Oktober 2015, 14:29

Alles, was ich jetzt mache, ist diese Information zu googeln. Nenn mich verrückt, aber ich bin sicher, das du das selbst kannst. Wenn du dann konkrete Fragen oder Problem hast, gerne. Aber Vorleseservice aus dem Internet mache ich nicht.
Benutzeravatar
__blackjack__
User
Beiträge: 13533
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

Wobei dass dann auch tatsächlich ein Standard ist, denn mit der gleichen DBus-API kann man auch VLC steuern. Und auch auch andere Mediaplayer. Das ist also auch eine Lösung die keine grossen Änderungen erfordert wenn man den Player austauscht will oder muss.

Code: Alles auswählen

- (void)countSheep {
    unsigned int sheep = 0;
    while ( ! [self isAsleep]) { ++sheep; }
}
Antworten