[Lua] AirFox - Skript zu Steuerung von Videoaufnahmen

CHDK-Skripte, CHDK-Entwicklung, PC-Zusatzprogramme, Informationen für Tüftler

AirFox - Skript zu Steuerung von Videoaufnahmen

Beitragvon msl » 11.10.2010, 12:32

Hallo,

da immer wieder gefragt wird, ob auch eine Videoaufnahme per Skript gesteuert werden kann, hier eine erweiterbare Skriptvorlage. Da das Skript auch in der Luft verwendbar ist, habe ich es in Anlehnung an das Airwolf-Skript von gehtnix Airfox genannt. :D

Per Parameter kann man auswählen, ob ein manueller oder automatischer Start erfolgen soll. Bei automatischem Start wird für eine in den Parametern festgelegte Zeit aufgenommen. Im manuellen Modus kann per [SET]-Taste oder USB-Fernbedienung die Videoaufnahme gestartet und gestoppt werden. Die [MENU]-Taste beendet im Manuellen Modus das Skript.

Weitere Einstellmöglichkeiten (z.B. Fokussierung, manueller Fokus, ISO-Empfindlichkeit, Blende) gibt es nicht, da diese sehr kameraabhängig sind und man über die Funktionsweise tief greifende Kenntnisse haben muss.

Das Skript ist umfangreich kommentiert und sollte somit auch für "Nichtskripter" einen Einblick in das Innenleben von Skripten geben und vielleicht sogar ermutigen, selbst an diesem Skript weiter zu basteln.

Syntax: [ Download ] [ Verstecken ]
Benutze Lua Syntax Highlighting
--[[
***************************
(c) msl 10/10/2010
***************************
@title AirFox
@param a Auto=0 Manuell=1
@default a 1
@param b Aufnahmezeit in Sek.
@default b 30
@param c Startverz. in Sek.
@default c 5
]]


-- Plausibilitätsprüfung der Parameter
if a<0 or a>1 then a=0 end
if b<5 then b=5 end
if c<1 then c=1 end

-- verständliche Namen für Parameter-Variablen
recMode = a
recTime = b*1000 -- Umrechnung in Sekunden
recDelay= c*1000 -- Umrechnung in Sekunden

-- Funktion für Start und Stopp der Videoaufnahme definieren
function StartStopVideo()
    press("shoot_full")
    sleep(300)
    release("shoot_full")
end

-- Funktion für Tastaturabfrage definieren
function button()
    repeat
        key=""
        wait_click(200) -- Tastaturwiederholrate 200 ms
        if     is_pressed "set"     then key = "SET"  -- SET-Taste
        elseif is_pressed "remote"  then key = "SET"  -- USB-Fernbedienung
        elseif is_pressed "menu"    then key = "MENU" -- Menü-Taste
        end
    until key~=""
end

-- *****eigentlicher Skriptstart*****
rec,vid,mode=get_mode() -- Prüfung auf richtigen Modus
print("Aufnahmemodus:",rec) -- Aufnahmemodus wahr oder falsch
print("Videomodus:",vid) -- Videomodus wahr oder falsch
if rec~=true then error("Fehler - kein Aufnahmemodus!") end -- definierte Fehlermeldung
if vid~=true then error("Fehler - kein Videomodus!") end -- definierte fehlermeldung
sleep(recDelay) -- Wartezeit laut Parametereinstellung
if recMode==0 then -- automatische Aufzeichnungsmethode wenn recMode gleich 0 ist
    endTime=get_tick_count()+recTime --Endzeit berechnen
    StartStopVideo() --Start
    repeat --Warteschleife
        sleep(10) -- Damit die Schleife nicht so schnell ist.
    until get_tick_count()>=endTime --Abfrage Endzeit
    StartStopVideo() --Stopp
else -- manuelle Aufzeichnungsmethode, wenn recMode ungleich 0 ist
    repeat -- Schleife für wiederholtes Starten und stoppen
        cls() -- Konsolenanzeige löschen
        print("Benutze für Start/Stop") -- Ausgabe Skript-Konsole
        print("[SET] oder [Remote]") -- Ausgabe Skript-Konsole
        print("und für Ende [MENU].") -- Ausgabe Skript-Konsole
        button() -- Tastenabfrage
        if key=="SET" then StartStopVideo() end --Start oder Stopp
        console_redraw() -- Neuschreiben der Skript-Konsole erzwingen, weil durch andere Anzeigen nicht lesbar.
    until key=="MENU" -- Schleife beenden, wenn Menütatse gedrückt wurde.
end -- Ende Aufzeichnungsmethode
 
Erstellt in 0.016 Sekunden, mit GeSHi 1.0.8.9


Gruß msl

Update 16/10/2010

Anwendungsskript air_fox2 mit der Option zur manuellen Einstellung des Fokus hinzugefügt.
Dateianhänge
air_fox2.lua
Anwendungsskript für Videoaufnahmen mit einstellbarem Fokus
(2.59 KiB) 1006-mal heruntergeladen
air_fox.lua
Demo-Skript für Videoaufnahmen
(2.49 KiB) 492-mal heruntergeladen
Zuletzt geändert von msl am 16.10.2010, 09:32, insgesamt 2-mal geändert.
Benutzeravatar
msl
Super-Mod
Super-Mod
 
Beiträge: 4567
Bilder: 271
Registriert: 22.02.2008, 11:47
Wohnort: Leipzig
Kamera(s): A720 1.00c
SX220 1.01a

Beitragvon Hicki » 11.10.2010, 13:32

Hi msl,

gute Arbeit, aber in meiner Ixus100 kommt im Videomodus die Fehlermeldung "Fehler 48 - kein Videomodus".

Gruß Hicki
Ixus 100is für Luftaufnahmen - Mikrokopterpilot
Hicki
CHDK-Einsteiger
CHDK-Einsteiger
 
Beiträge: 31
Registriert: 15.07.2010, 17:22
Wohnort: Sangerhausen/OT Grillenberg

Beitragvon msl » 11.10.2010, 14:07

Wie schon im anderen Beitrag geschrieben in solchen Fällen, die Zeile, die die Fehlermeldung erzeugt, auskommentieren.

Also einen Texteditor hernehmen und die Zeile 48 durch Einfügen von "--" am Zeilenanfang auskommentieren.

Gruß msl
Benutzeravatar
msl
Super-Mod
Super-Mod
 
Beiträge: 4567
Bilder: 271
Registriert: 22.02.2008, 11:47
Wohnort: Leipzig
Kamera(s): A720 1.00c
SX220 1.01a

Beitragvon Hicki » 14.10.2010, 15:13

Hi msl,

bis auf den USB-Start funktioniert es soweit. Beim Starten mit USB zieht die Kamera das Objektiv ein und geht in den Displaymodus.

MfG Hicki
Ixus 100is für Luftaufnahmen - Mikrokopterpilot
Hicki
CHDK-Einsteiger
CHDK-Einsteiger
 
Beiträge: 31
Registriert: 15.07.2010, 17:22
Wohnort: Sangerhausen/OT Grillenberg

Beitragvon msl » 14.10.2010, 15:25

Das liegt aber nicht am Skript. Das ist sicherlich ein kameraspezifisches Problem und damit ein Fall für diesen Thread. Funktioniert denn der Skriptstart per USB-Fernbedienung mit anderen Skripten?

Gruß msl
Benutzeravatar
msl
Super-Mod
Super-Mod
 
Beiträge: 4567
Bilder: 271
Registriert: 22.02.2008, 11:47
Wohnort: Leipzig
Kamera(s): A720 1.00c
SX220 1.01a

Beitragvon Hicki » 14.10.2010, 15:30

Hi msl,

ja, das Fotografieren über USB funktioniert.

Gruß Hicki
Ixus 100is für Luftaufnahmen - Mikrokopterpilot
Hicki
CHDK-Einsteiger
CHDK-Einsteiger
 
Beiträge: 31
Registriert: 15.07.2010, 17:22
Wohnort: Sangerhausen/OT Grillenberg

Beitragvon msl » 14.10.2010, 15:34

Das war nicht Frage. Dass das Auslösen funktioniert, glaube ich gerne.

Es geht doch um den Skriptstart per USB-Fernbedienung. Also, starten andere Skripte per USB-Fernbedienung?

Gruß msl
Benutzeravatar
msl
Super-Mod
Super-Mod
 
Beiträge: 4567
Bilder: 271
Registriert: 22.02.2008, 11:47
Wohnort: Leipzig
Kamera(s): A720 1.00c
SX220 1.01a

Beitragvon Antares01 » 14.10.2010, 15:37

Hallo!

Bei mir funktioniert das Skript perfekt!
Genau das hat mir noch gefehlt bei meinen Versuchen mit Kamera und Teleskop!
Ich danke dir!
PowerShot sx200is
Benutzeravatar
Antares01
CHDK-Begeisterter
CHDK-Begeisterter
 
Beiträge: 131
Bilder: 6
Registriert: 01.05.2010, 19:41
Kamera(s): Powershot SX200IS

Beitragvon Hicki » 14.10.2010, 21:58

Hi msl,

ich muß mich entschuldigen. Das Script läuft tadellos. Ich hatte im Menü vergessen Remote zu aktivieren.
Nochmals vielen Dank für das Teil.

MfG Hicki
Ixus 100is für Luftaufnahmen - Mikrokopterpilot
Hicki
CHDK-Einsteiger
CHDK-Einsteiger
 
Beiträge: 31
Registriert: 15.07.2010, 17:22
Wohnort: Sangerhausen/OT Grillenberg

Beitragvon msl » 16.10.2010, 09:43

Hallo,

da das Einführungsskript nur ein Beispiel darstellt, habe ich noch ein Anwender-Skript hinzugefügt. Mit diesem Skript besteht die Möglichkeit, auch den Fokus zu steuern.

Der Fokusbereich geht mathematisch gesehen von 0 - 65535. Das ist ein sehr großer Bereich, wenn dieser per Hand eingestellt werden soll. Deshalb wird im Skript die Einstellung auf 256 Schritte reduziert. Der Werteanstieg entspricht der Funktion f(x)=x².

Die Fokus-Einstellung kann im Parameter-Menü ein- und ausgeschaltet werden.

Das Skript ist im Eröffnungsbeitrag verfügbar.

Gruß msl
Benutzeravatar
msl
Super-Mod
Super-Mod
 
Beiträge: 4567
Bilder: 271
Registriert: 22.02.2008, 11:47
Wohnort: Leipzig
Kamera(s): A720 1.00c
SX220 1.01a

Beitragvon Hicki » 16.10.2010, 16:03

Hi msl,

ein schönes zusätzliches Future, aber bei mir funktioniert es nicht. Wenn ich den Focus verändere, ist optisch keine Änderung zu sehen.

Gruß Hicki
Ixus 100is für Luftaufnahmen - Mikrokopterpilot
Hicki
CHDK-Einsteiger
CHDK-Einsteiger
 
Beiträge: 31
Registriert: 15.07.2010, 17:22
Wohnort: Sangerhausen/OT Grillenberg

Beitragvon NormalZeit » 16.10.2010, 21:05

Hallo msl,

das nenne ich ja mal ein prima kommentiertes Script. Gute Idee die Kommentare gleich jeweils ans Ende jeder Zeile zu schreiben, damit werden auch keine zusätzlichen 10 ms zur Laufzeit verschenkt.

Viele andere Beispiele hier im Forum sind so komplett ohne Kommentare, was das Nachvollziehen nicht gerade einfacher macht.

Danke.

NormalZeit
Working with an Apple and OSX -- collecting ancient industrial and railwaystation clocks
Benutzeravatar
NormalZeit
CHDK-Einsteiger
CHDK-Einsteiger
 
Beiträge: 43
Registriert: 29.08.2010, 16:09
Kamera(s): IXUS 850 IS + PowerShot A720 IS + SX100 IS

Beitragvon msl » 17.10.2010, 14:43

Hallo NormalZeit,

für Lua-Skripte gelten die 10ms Taktzeiten pro Zeile nicht. Das trifft nur für uBasic-Skripte zu.

Viele Kommentierungen könnten sich aber als Speicherballast auswirken, da auch sie mit in den Arbeitsspeicher geladen werden. Manche Kameras sind damit nicht unbedingt üppig ausgestattet. Da könnte es aber zukünftig Abhilfe geben -siehe hier.

Gruß msl
Benutzeravatar
msl
Super-Mod
Super-Mod
 
Beiträge: 4567
Bilder: 271
Registriert: 22.02.2008, 11:47
Wohnort: Leipzig
Kamera(s): A720 1.00c
SX220 1.01a

Re: AirFox - Skript zu Steuerung von Videoaufnahmen

Beitragvon ralf-chdk » 20.10.2011, 16:07

Hallo alle,
bin neu hier und gerade dabei meine Ixus 80 IS mittels CHDK für Luftaufnahmen mit dem Quadrokopter tauglich zu machen. Ich habe schon einige nützliche Skripte gefunden - danke an die Leute die so etwas programmieren können und dann zur Verfügung stellen (ich kann so etwas leider nicht) - bin aber jetzt auf der Suche nach einem Skript, das es erlaubt per USB eine Videoaufnahme zu starten und zu beenden und zusätzlich noch während der Aufnahme USB-ausgelöst rein- und raus zu zoomen. Ähnlich einem Skript, das ich auf der Mikrokopter-Seite unter dem Namen 'zoomshot' gefunden habe: je nachdem wieviel Sekunden die USB-Spannung anliegt, wird 1 Foto geschossen, reingezoomt, rausgezoomt oder Daueraufnahmen gemacht.
Gibt es so ein Skript für Video oder kann es jmd. schreiben?
Gruß und Dank
Ralf
ralf-chdk
CHDK-Einsteiger
CHDK-Einsteiger
 
Beiträge: 1
Registriert: 18.10.2011, 10:27
Kamera(s): ixus 80 is

Re: AirFox - Skript zu Steuerung von Videoaufnahmen

Beitragvon cularis » 26.02.2012, 22:22

Hallo,

auf der Suche nach einem Script, dass es ermöglicht, eine Videoaufnahme per USB-Fernbedienung zu starten und zu beenden , bin ich hier gelandet (Danke msl :) )

So, wie ich es es verstehe, soll Air Fox genau dies ermöglichen. Nachdem beim Testen von AirFox2 die Fehlermeldung in Zeile 62 erschien (if vid~=true then error("Fehler - kein Videomodus!") end), habe ich diese,wie empfohlen, per "--" auskommentiert.

Nun scheint das Script im Prinzip zu laufen, es reagiert auf USB-Signale mit "Aufnahme an" bzw. "Aufnahme aus". Da die Ixus 220 allerdings wohl keinen "expliziten" Videomodus besitzt, werden nur Fotoaufnahmen ausgeführt.

Ich habe also ein ähnliches Anliegen wie ralf-chdk, nur in dem Sinne, dass mir einfaches Videostart-/stop ausreichen würde.
Perfekt wäre die Lösung in Verbinndung mit video_ex.lua, so dass die Aufnahmezeit etwas länger als im Standardfall wäre.

Vielleicht gibt es seit Oktober (vorheriger Post) ja diesbezüglich schon neue Entwicklungen in der CHDK-Welt...


Gruß

cularis
cularis
CHDK-Einsteiger
CHDK-Einsteiger
 
Beiträge: 4
Registriert: 26.02.2012, 20:43
Kamera(s): Ixus 220HS 1.01d

Nächste

Zurück zu Code-Ecke

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 11 Gäste