MJPG Stream in einem Fenster anzeigen

Fragen zu Tkinter.
Antworten
uasamo
User
Beiträge: 3
Registriert: Freitag 1. Mai 2015, 23:59

Hallo liebe Com.!

Ich bin am verzweifeln... Hab ein Projekt am laufen.. Ich möchte gerne ein Stream in einen Fenster anzeigen. Dieser Stream wird im Lokalen Netz verteilt! HTTP://192.168....stream.mjpg
Ich bin seit 2 Wochen auf der suche nach einem Befehl diesen Stream in einem Fester darstellen zu können. Benutze Python 3.4

Mein Skript sieht so aus..

Code: Alles auswählen

from tkinter import *
import urllib.request

def oeffnen():
    urllib.request.urlopen('http://192.168.178.1....')

menue=Tk()
menue.title('Test')
menue.geometry('300x450')
videoFrame=Frame(master=menue)
videoFrame.place(x=0,y=0,width=300,height=300)
videoLabel=Label(master=videoFrame,background='black',text='STREAM',fg='white')
videoLabel.place(x=0,y=0,width=300,height=300)
buttonsFrame=Frame(master=menue)
buttonsFrame.place(x=0,y=300,height=150,width=300)
button=Button(master=buttonsFrame,bg='black',fg='White',text='Open', command=lambda: oeffnen)
button.place(x=0,y=0,width=300,height=150)

menue.mainloop()
In dem Streamfeld möchte ich gerne die von der Kamera gestreamte MJPG einfügen :/

In der Hoffnung das ihr mir Helfen könnt
Zuletzt geändert von Anonymous am Samstag 2. Mai 2015, 00:44, insgesamt 1-mal geändert.
Grund: Quelltext in Python-Code-Tags gesetzt.
BlackJack

@uasamo: Wenn Gstreamer etwas mit dem MJPEG-Stream anfangen kann, könnte man das benutzen.

Anmerkungen zum Quelltext:

Namenschreibweisen und Leerraum von Deinem Quelltext hält sich übrigens nicht an den Style Guide for Python Code.

Sternchen-Importe sollte man vermeiden weil dann sehr schnell sehr undurchsichtig wird wo eigentlich welcher Name her kommt. Wenn man das mit mehreren Modulen macht besteht ausserdem die Gefahr von Namenskollisionen.

`place()` ist keine Methode die man im allgemeinen benutzen möchte. Das ist umständlich und fehleranfällig und in der heutigen Zeit mit teilweise sehr verschiedenen Bildschirmauflösungen (DPI bzw. PPI) und daraus resultierenden absoluten Grössen kann eine GUI die auf dem eigenen Rechner mit absoluten Pixelangaben layoutet gut aussieht, auf anderen Rechnern kaputt aussehen bis hin zu unbenutzbar sein.

Das ``lambda`` ist unnötig wenn die gleichen Argumente einfach nur an eine Funktion weitergereicht werden. Also in diesem Fall gar keine.

Auf Modulebene gehört nur Code der Konstanten, Funktionen, und Klassen definiert. Das Hauptprogramm steht üblicherweise in einer Funktion die `main()` heisst und mit folgendem Idiom aufgerufen wird:

Code: Alles auswählen

if __name__ == '__main__':
    main()
Dann kann man das Modul sowohl als Programm ausführen, als auch importieren ohne dass das Hauptprogramm abläuft. Zum Beispiel um einzelne Funktionen oder Klassen interaktiv auszuprobieren, zum Beispiel zur Fehlersuche, oder automatisierte Tests auszuführen, und auch einige andere Werkzeuge erwarten das man Module ohne Seiteneffekte importieren kann.
uasamo
User
Beiträge: 3
Registriert: Freitag 1. Mai 2015, 23:59

Hi BlackJack!

Bin Python einsteiger! Danke für die Antwort. Habe mir heute die .pack und .grid Methoden angeschaut :D
Lambda habe ich eingesetzt weil ich sonst das Problem hatte das mit Programmstart die Tür aufging... Mit Lambda konnte ich diesen Fehler beheben.

Über den Gstreamer habe ich so nichts gehört. Kann mir einer einen Skript oder Befehl Ideen geben damit ich eine .MJPG Wiedergabe in meinem Programm realisieren kann?

Gruß Samo
Paigner
User
Beiträge: 10
Registriert: Montag 31. Dezember 2018, 14:37

Hallo,
Ich habe das selbe Problem und würde mich ebenfalls über eine Lösung Freuen :)

Grüße Paigner
Antworten