Bildschirmschoner

Antworten
Benutzeravatar
fritz
Moderator
Moderator
Beiträge: 1341
Registriert: Mi 13. Jul 2011, 23:15
Wohnort: Bundesdorf
Hat sich bedankt: 72 Mal
Danksagung erhalten: 215 Mal

Bildschirmschoner

#1

Beitrag von fritz »

Ich bin am basteln für einen einfachen Bildschirmschoner dran welchen ich via einen LUA-Script umsetzen möchte.
Aktuell habe ich es so weit hinbekommen dass wärend des TV-Betrieb der Ton deaktiviert und der Bildschirm gelöscht wird und an Stelle dessen ein kleines Bild ...
sleep.png
welches automatisch, nach Zeit = x, den Anzeigeort wechselt angezeigt wird.
anzeige_auf_bildschirm.png

Code: Alles auswählen

--[[
	simpler Bildschirmschoner
	Vers.: 0.1
	Copyright (C) 2019 fritz

	License: GPL

	This program is free software; you can redistribute it and/or
	modify it under the terms of the GNU General Public
	License as published by the Free Software Foundation; either
	version 2 of the License, or (at your option) any later version.

	This program is distributed in the hope that it will be useful,
	but WITHOUT ANY WARRANTY; without even the implied warranty of
	MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
	General Public License for more details.

	You should have received a copy of the GNU General Public
	License along with this program; if not, write to the
	Free Software Foundation, Inc., 51 Franklin St, Fifth Floor,
	Boston, MA  02110-1301, USA.
]]
	bild         = '/var/tuxbox/plugins/sleep.png' -- Bild welches verwendet werden soll 
	size_x       = 248     -- Breite der Anzeige
	size_y       = 248     -- Höhe der Anzeige
	timeout      = 30      -- Wartezyklen (jeweils 500 ms) 

function main()
	n     = neutrino()
		size_x = size_x
		size_y = size_y
		x_beg  = SCREEN.OFF_X
		y_beg  = SCREEN.OFF_Y
		x_end  = SCREEN.END_X - size_x
		y_end  = SCREEN.END_Y - size_y
	n:StopPicture() -- Bildschirm wird geleert = Schwarzbild
	p_tv = cpicture.new{x=SCREEN.OFF_X, y=SCREEN.OFF_Y, dx=size_x, dy=size_y, image= bild}
	p    = p_tv
	os.execute('pzapit -mute') -- Stummschaltung
	repeat
		if  size_x == size_x
		then
			start_x = math.random(x_beg, x_end)
			start_y = math.random(y_beg, y_end)
			p:hide()
			p = cpicture.new{x=start_x, y=start_y, dx=size_x, dy=size_y, image= bild}
			p:paint()
		end
		i = 0
		repeat
			i = i + 1
			msg, data = n:GetInput(500)
		until msg == RC.ok or msg == RC.home or i == timeout -- mit RC.ok erfolgt ein vorzeitiger Positionswechsel des Bildes 

	until msg == RC['home'] -- zum Benden 

	os.execute('pzapit -unmute') -- Ton wird wieder aktiviert
        os.execute("pzapit -rz") -- Um das laufende Fernsehbild wieder anzuzeigen, wird ein Rezap durchgeführt
end

main()
Das Miniplugin habe ich bei mir zum testen zusätzlich auch auf das Benutzermenü "Gelb" gelegt..
benutzermenue_gelb.png
d.h. mit der Taste "Gelb" der Fernbedienung wird das Plugin im TV-Betrieb gestartet, mit der Home-Taste der RCU wird es wieder bendet und der TV-Modus läuft wieder normal mit Bild & Ton.

Ich bekomme es leider nicht hin dass im Radiomode beim Pluginstart die Anzeige des normalen Radio-Hintergrundbild (radiomode.jpg) ausgeblendet/gelöscht wird, ich habe mit verschiedenen Befehlenbereit experimentiert, aber den richtigen bis her nicht gefunden. :(

Ich hoffe mal auf einen von euch der den entsprechenden Befehl herausfindet und mir mitteilt. :D

Im Angehangen Archiv befindet sich alle nötigen Dateien, einfach entpacken und auf der Box nach "/var/tuxbox/plugins/", besondere Dateirechte sind nicht nötig d.h. chmod 644 reicht aus.
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.
Folgende Benutzer bedankten sich beim Autor fritz für den Beitrag (Insgesamt 2):
dbox-all (Di 5. Mär 2019, 07:21) • blacky49 (Di 5. Mär 2019, 10:11)
Bewertung: 15.38%
Axas E4HD, AX HD 51, wwio Bre2ze 4K & Zgemma H7C
astra 19,2°E & DVB-T2 & DVB-C (Vodafone West)
mobi64
Registrierte Benutzer
Registrierte Benutzer
Beiträge: 5
Registriert: Sa 3. Jan 2015, 20:51
Hat sich bedankt: 0
Danksagung erhalten: 3 Mal

Re: Bildschirmschoner

#2

Beitrag von mobi64 »

Ich denke das brauchst du.
https://wiki.slknet.de/w/Lua:Neutrino-A ... nctions:de
Mit /share/tuxbox/neutrino/icons/screensaver/black.jpg
Benutzeravatar
fritz
Moderator
Moderator
Beiträge: 1341
Registriert: Mi 13. Jul 2011, 23:15
Wohnort: Bundesdorf
Hat sich bedankt: 72 Mal
Danksagung erhalten: 215 Mal

Re: Bildschirmschoner

#3

Beitrag von fritz »

Danke für den Tipp, aber damit habe ich auch keinen Erfolg (evtl. fehlt mir der genau Syntax oder es geht wirklich nicht) .
Mit ..

Code: Alles auswählen

--[[
	simpler Bildschirmschoner, wenig sinnvoll
]]
	bild         = '/var/tuxbox/plugins/sleep.png'
	schwarz      = '/var/tuxbox/plugins/schwarz.png'
	size_x       = 248     -- Breite der Anzeige
	size_y       = 248     -- Höhe der Anzeige
	timeout      = 30      -- Wartezyklen (jeweils 500 ms) 

function main()
	n     = neutrino()
		size_x = size_x
		size_y = size_y
		x_beg  = SCREEN.OFF_X
		y_beg  = SCREEN.OFF_Y
		x_end  = SCREEN.END_X - size_x
		y_end  = SCREEN.END_Y - size_y
	n:StopPicture() -- Bildschirm wird geleert = Schwarzbild
	p = cpicture.new{x=SCREEN.OFF_X, y=SCREEN.OFF_Y, dx=size_x, dy=size_y, image= bild}
	os.execute('pzapit -mute') -- Stummschaltung
	repeat
		if  size_x == size_x
		then
			start_x = math.random(x_beg, x_end)
			start_y = math.random(y_beg, y_end)
			p:hide()
			p = cpicture.new{x=1, y=1, dx=1920, dy=1080, image = schwarz}
			p:paint()
			p:setPicture{image=bild}
			p = cpicture.new{x=start_x, y=start_y, dx=size_x, dy=size_y, image= bild}
			p:paint()
		end
		i = 0
		repeat
			i = i + 1
			msg, data = n:GetInput(500)
		until msg == RC.ok or msg == RC.home or i == timeout -- mit RC.ok erfolgt ein vorzeitiger Positionswechsel des Bildes 

	until msg == RC['home'] -- zum Benden 

	os.execute('pzapit -unmute') -- Ton wird wieder aktiviert
        os.execute("pzapit -rz") -- Um das laufende Fernsehbild wieder anzuzeigen, wird ein Rezap durchgeführt
end

main()
bin ich etwas voran gekommen, d.h. der Bildschirm wird bei allen Empfangsmodi (webTV, TV, Radio und Webradio) zunächst schwarz und das Sleepbildchen wird mit ansonsten komplett schwarzen Bildschirm wie gewünscht an unterschiedlichen Positionen zeitgesteuert angezeigt und nach beenden läuft der vorherig genutzte Service weiter, aber auch diese Version hat noch einen Fehler und zwar dass jedesmal beim Positionswechsel kurz das (Web-)TV bzw. (Web-)Radio (radiomode.jpg) Bild/Video erscheint (aufblitzt).
Ich komme da leider nicht weiter :(
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.
Axas E4HD, AX HD 51, wwio Bre2ze 4K & Zgemma H7C
astra 19,2°E & DVB-T2 & DVB-C (Vodafone West)
mobi64
Registrierte Benutzer
Registrierte Benutzer
Beiträge: 5
Registriert: Sa 3. Jan 2015, 20:51
Hat sich bedankt: 0
Danksagung erhalten: 3 Mal

Re: Bildschirmschoner

#4

Beitrag von mobi64 »

Code: Alles auswählen

--[[
	simpler Bildschirmschoner
	Vers.: 0.1
	Copyright (C) 2019 fritz

	License: GPL

	This program is free software; you can redistribute it and/or
	modify it under the terms of the GNU General Public
	License as published by the Free Software Foundation; either
	version 2 of the License, or (at your option) any later version.

	This program is distributed in the hope that it will be useful,
	but WITHOUT ANY WARRANTY; without even the implied warranty of
	MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
	General Public License for more details.

	You should have received a copy of the GNU General Public
	License along with this program; if not, write to the
	Free Software Foundation, Inc., 51 Franklin St, Fifth Floor,
	Boston, MA  02110-1301, USA.
]]
	bild         = '/var/tuxbox/plugins/sleep.png' -- Bild welches verwendet werden soll 
	size_x       = 248     -- Breite der Anzeige
	size_y       = 248     -- Höhe der Anzeige
	timeout      = 30      -- Wartezyklen (jeweils 500 ms) 

function main()
	n     = neutrino()
		size_x = size_x
		size_y = size_y
		x_beg  = SCREEN.OFF_X
		y_beg  = SCREEN.OFF_Y
		x_end  = SCREEN.END_X - size_x
		y_end  = SCREEN.END_Y - size_y
	n:StopPicture() -- Bildschirm wird geleert = Schwarzbil

	p_tv = cpicture.new{x=SCREEN.OFF_X, y=SCREEN.OFF_Y, dx=size_x, dy=size_y, image= bild}
	p    = p_tv
	os.execute('pzapit -mute') -- Stummschaltung
	repeat
		if  size_x == size_x
		then
			start_x = math.random(x_beg, x_end)
			start_y = math.random(y_beg, y_end)
			p:hide()
			n:PaintBox(0,0,-1,-1,COL.BLACK )
			p = cpicture.new{x=start_x, y=start_y, dx=size_x, dy=size_y, image= bild}
			p:paint()
		end
		i = 0
		repeat
			i = i + 1
			msg, data = n:GetInput(500)
		until msg == RC.ok or msg == RC.home or i == timeout -- mit RC.ok erfolgt ein vorzeitiger Positionswechsel des Bildes 

	until msg == RC['home'] -- zum Benden 
	os.execute('pzapit -unmute') -- Ton wird wieder aktiviert
        os.execute("pzapit -rz") -- Um das laufende Fernsehbild wieder anzuzeigen, wird ein Rezap durchgeführt
end

main()
Noch mit Version 1 und n:PaintBox(0,0,-1,-1,COL.BLACK ) funktioniert auch.
https://wiki.slknet.de/w/Lua:Neutrino-API:PaintBox:de
Folgende Benutzer bedankten sich beim Autor mobi64 für den Beitrag:
fritz (Di 5. Mär 2019, 17:22)
Bewertung: 7.69%
Benutzeravatar
fritz
Moderator
Moderator
Beiträge: 1341
Registriert: Mi 13. Jul 2011, 23:15
Wohnort: Bundesdorf
Hat sich bedankt: 72 Mal
Danksagung erhalten: 215 Mal

Re: Bildschirmschoner

#5

Beitrag von fritz »

@mobi64
Funktioniert leider auch nicht richtig :(
a) es wird der Bildschirm bei WebTV, Radio und Webradio nicht komplett "schwarz" und es bleibt ein sichtbarer Rand
screenshot_tipp.png
b) beim Positionswechsel dess "Sleepbildchen" blitzt wie bei meiner letzten Testversion in unrgelm. Abständen auch das (Web-)TV bzw. (Web-)Radiobild durch
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.
Axas E4HD, AX HD 51, wwio Bre2ze 4K & Zgemma H7C
astra 19,2°E & DVB-T2 & DVB-C (Vodafone West)
mobi64
Registrierte Benutzer
Registrierte Benutzer
Beiträge: 5
Registriert: Sa 3. Jan 2015, 20:51
Hat sich bedankt: 0
Danksagung erhalten: 3 Mal

Re: Bildschirmschoner

#6

Beitrag von mobi64 »

Code: Alles auswählen

--[[
	simpler Bildschirmschoner
	Vers.: 0.1
	Copyright (C) 2019 fritz

	License: GPL

	This program is free software; you can redistribute it and/or
	modify it under the terms of the GNU General Public
	License as published by the Free Software Foundation; either
	version 2 of the License, or (at your option) any later version.

	This program is distributed in the hope that it will be useful,
	but WITHOUT ANY WARRANTY; without even the implied warranty of
	MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
	General Public License for more details.

	You should have received a copy of the GNU General Public
	License along with this program; if not, write to the
	Free Software Foundation, Inc., 51 Franklin St, Fifth Floor,
	Boston, MA  02110-1301, USA.
]]
	bild         = '/var/tuxbox/plugins/sleep.png' -- Bild welches verwendet werden soll 
	size_x       = 248     -- Breite der Anzeige
	size_y       = 248     -- Höhe der Anzeige
	timeout      = 30      -- Wartezyklen (jeweils 500 ms) 

function main()
	n     = neutrino()
		size_x = size_x
		size_y = size_y
		x_beg  = SCREEN.OFF_X
		y_beg  = SCREEN.OFF_Y
		x_end  = SCREEN.END_X - size_x
		y_end  = SCREEN.END_Y - size_y
	M = misc.new()
	local v = video.new()
	v:StopPicture() -- Bildschirm wird geleert = Schwarzbild
	p = cpicture.new{x=SCREEN.OFF_X, y=SCREEN.OFF_Y, dx=size_x, dy=size_y, image= bild}
	M:enableMuteIcon(false)
	M:AudioMute(true, false) -- Stummschaltung

	v:ShowPicture("/share/tuxbox/neutrino/icons/screensaver/black.jpg") 

	p_tv = cpicture.new{x=SCREEN.OFF_X, y=SCREEN.OFF_Y, dx=size_x, dy=size_y, image= bild}
	p    = p_tv
	repeat
		if  size_x == size_x
		then
			if start_x and start_y then 
				n:PaintBox(start_x,start_y,size_x,size_y,COL.BLACK )
			end
			start_x = math.random(x_beg, x_end)
			start_y = math.random(y_beg, y_end)
			p:hide()
			p = cpicture.new{x=start_x, y=start_y, dx=size_x, dy=size_y, image= bild}
			p:paint()
		end
		i = 0
		repeat
			i = i + 1
			msg, data = n:GetInput(500)
		until msg == RC.ok or msg == RC.home or i == timeout -- mit RC.ok erfolgt ein vorzeitiger Positionswechsel des Bildes 

	until msg == RC['home'] -- zum Benden 
	
	n:PaintBox(0,0,-1,-1,COL.BLACK )
	local rev, box = M:GetRevision()
	if rev == 1 then v:StopPicture() end
	M:enableMuteIcon(false)
	M:AudioMute(false, false) -- Ton wird wieder aktiviert
	n:channelRezap() -- Um das laufende Fernsehbild wieder anzuzeigen, wird ein Rezap durchgeführt
end

main()
Kombination von ersten und zweiten vorschlag.
Das mit Rand sind deine Bildbereich Einstelungen.
Folgende Benutzer bedankten sich beim Autor mobi64 für den Beitrag:
fritz (Di 5. Mär 2019, 17:22)
Bewertung: 7.69%
Benutzeravatar
fritz
Moderator
Moderator
Beiträge: 1341
Registriert: Mi 13. Jul 2011, 23:15
Wohnort: Bundesdorf
Hat sich bedankt: 72 Mal
Danksagung erhalten: 215 Mal

Re: Bildschirmschoner

#7

Beitrag von fritz »

@mobi64
kann es sein dass du nicht mit dem ddt-neutrino testest ?
Grund mit einen Image aus dem Sourcen des ddt gibt es z.B. kein "icons/screensaver/black.jpg" ?
Ich habe zum testen extra ein Image von Grund auf daraus ohne jegliche Änderungen gebaut und geflasht und auch keine Änderungen in den Bildbereicheinstellungen vorgenommen.

Mit deinen zweiten Entwurf kommt bei mir so was ...
screenshot_tipp2.png
Eine Datei "icons/screensaver/black.jpg" habe ich testweise im ddt-Image angelegt und den Pfad auch kontrolliert, das "black.jpg" wird hier aber lediglich beim beenden des Plugin kurzfristig angezeigt, d.h. wärend dess aktiven Bildschirmschonermodus wird nur das Sleepbildchen sichtbar angezeigt wo von nach jeden Sprung an eine andere Stelle ein rest auf dem Bildschirm liegen bleibt.

ps.: Mit den sichtbaren Rand hast du recht, der lag an den default-Werten des ddt-neutrino, nach dem ich dem auf max. gestellt habe ist der bei einer Bildschirmauflösung von 1280 x 720 px weg.

Dein erster Entwurf ist dem entsprechend der bessere.
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.
Axas E4HD, AX HD 51, wwio Bre2ze 4K & Zgemma H7C
astra 19,2°E & DVB-T2 & DVB-C (Vodafone West)
mobi64
Registrierte Benutzer
Registrierte Benutzer
Beiträge: 5
Registriert: Sa 3. Jan 2015, 20:51
Hat sich bedankt: 0
Danksagung erhalten: 3 Mal

Re: Bildschirmschoner

#8

Beitrag von mobi64 »

Ich habe jetzt mit gui-neutrino getestet.
black.jpg ist schwrze jpg pic-1280x720.

Was bei ddt mit der 2. Versuch kommt, sieht nach kaputte ShowPicture() funktion in neutrino oder libstb-hal.
Oder hat neutrino das Bild nicht gefunden, dann kommt so was in log:
[neutrino] [CFrameBuffer][showFrame - 1570], fallback is disabled, paint of image was stopped: /share/tuxbox/neutrino/icons/screensaver/black.jpg

Auf gui-neutrino die zweite und erste Version funktioniert ganz normal und ohne blitzer.
Folgende Benutzer bedankten sich beim Autor mobi64 für den Beitrag:
fritz (Di 5. Mär 2019, 17:22)
Bewertung: 7.69%
Benutzeravatar
fritz
Moderator
Moderator
Beiträge: 1341
Registriert: Mi 13. Jul 2011, 23:15
Wohnort: Bundesdorf
Hat sich bedankt: 72 Mal
Danksagung erhalten: 215 Mal

Re: Bildschirmschoner

#9

Beitrag von fritz »

@mobi64
das erklärt einiges, nach neuflashen, maximieren des Bildbereiches und eines geringfügen überarbeiten an der Optik des Codes tut es bei mir auch dein erster Vorschlag ohne aufblitzen des Hintergrundes beim Positionswechsel des "Sleepbildes" beim WebTV-, TV-, Webradio- oder Radiomodus mit meinen mit den BS-ddt und den neutrino-mp-ddt gebauten Image, woran es aber in Wirklichkeit lag werde ich wohl nie heraus finden.

Danke noch mal für deine Unterstützung und Tipps !

Meine Endversion welche im wesentlich auf deinen ersten Vorschlag fusst mit der Versions-Nr. 0.5 hänge ich dran!
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.
Axas E4HD, AX HD 51, wwio Bre2ze 4K & Zgemma H7C
astra 19,2°E & DVB-T2 & DVB-C (Vodafone West)
Antworten

Zurück zu „AX 4K HD51 - Allgemeines“