Mit Remote zwischen Foto und Video umschalten

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

Mit Remote zwischen Foto und Video umschalten

Beitragvon roijo » 04.01.2014, 00:57

Hallo!
Hier im Forum gabs zwar schon mal so eine Frage, aber dort kann ich nichts hilfreiches für mich finden.

Also: Ich habe eine Remote Fernauslösung und kann mit meiner IXUS 115 HS schon Fotos schießen (Quadrocopter).
Als Script verwende ich "Zoomshoot" welches ich um die Zoomfunktionen reduziert habe, weil ich diese nicht brauche. Nun sieht es jedenfalls so aus, und es funktioniert auch einwandfrei:

Syntax: [ Download ] [ Verstecken ]
Benutze uBasic Syntax Highlighting
@title Foto
do
  a=20
  z=0
  while is_key "remote"
    z=z+1
    cls
  wend
  n=n+1
  if n=900 then
    click "shoot_half"
    n=0
  endif
  if z>0 then gosub "auswerten"
until is_key "set"

:auswerten
if z<=a then shoot
z=0
return
Erstellt in 0.003 Sekunden, mit GeSHi 1.0.8.9


Nun möchte ich aber auch die Möglichkeit haben, eine Videoaufnahme zu starten.
Ich habe mich daher schon ein wenig mit dem Befehl click "video" gespielt, habe aber keinen Erfolg - eine Videoaufnahme wird nicht gestartet.
Eigenartigerweise passiert aber folgendes: wenn ich das Script mit der Taste "set" stoppe - dann läuft plötzlich die Videoaufnahme und ich kann diese sogar mittels Fernbedienung stoppen! Aber natürlich bringt mir das nichts, weil ich
1. nicht während des Flugs die "Set" Taste drücken kann und
2. durch drücken der "Set" Taste das Script gestoppt wird und dadurch keine weiteren Aufnahmen mehr möglich sind.

Kann mir jemand sagen, warum der Befehl click "video" nicht funktioniert - ich habe diese versuchweise statt "shoot" eingesetzt, also

:auswerten
if z<=a then click "video"
z=0
return

Bzw. kann mir jemand erklären, warum die Videoaufzeichnung erst beginnt, wenn das Script gestoppt wurde?

Danke für eure Hilfe
Zuletzt geändert von msl am 04.01.2014, 01:09, insgesamt 1-mal geändert.
Grund: edit by Mod: fehlendes Syntax-Tag gesetzt
roijo
CHDK-Einsteiger
CHDK-Einsteiger
 
Beiträge: 19
Registriert: 04.01.2014, 00:22
Kamera(s): IXUS 115 HS
Version 101c

Re: Mit Remote zwischen Foto und Video umschalten

Beitragvon roijo » 05.01.2014, 17:25

Leider gabs keine Reaktionen von euch - vielleicht war mein Problem ja auch zu trivial...

Nun: nachdem ich Stunden auf der Suche nach einer Lösung verbracht habe, kann ich mir selbst eine Antwort geben - vielleicht braucht es ja jemand anderer auch?

Mein Problem - wie im ersten Beitrag beschrieben - war, dass ich mit dem Befehl click "video" keine Videoaufnahme starten konnte.
Nun weiß ich, dass es daran lag, dass ich in der Menüeinstellung den Punkt "USB Fernbedienung an/aus" aktivieren muss!
Denn eigenartigerweise konnte ich auch bei deaktivierter USB Fernbedienung ganz normal Fotos schießen (!) - eine Videoaufnahme funktioniert aber so nicht; daher habe ich den Fehler nicht gleich erkannt.

Weiters kommt hinzu, dass eine Videoaufnahme erst startet, wenn das Objektiv ausgefahren ist - ist es das nicht, dann gibt es beim ersten Auslösen keine Videoaufnahme sondern es wird nur das Objektiv ausgefahren - mehr nicht. Erst beim zweiten Auslösen startet das Video.

Ich habe nun das Script derart umgeschrieben, dass damit wechselweise Fotos oder Videos gemacht werden können. Hier ist es:

Code: Alles auswählen
@title FotoVideo

f=1
do
  z=0
  while is_key "remote"
    z=z+1
    cls
  wend
  wait_click 1
  n=n+1
  if n=900 then
    click "shoot_half"
    n=0
  endif
  if z>0 then gosub "fv"
until is_key "set"

:fv
if z<20 then
   shoot
   f=2
endif
if z>20 then
   if f<=1 then
      shoot
      f=2
   endif
   click "video"
endif
z=0
return


Falls ich hier einen völligen Schwachsinn gemacht habe, dann bitte helft mit - es funktioniert jedenfalls so, wie ich mir das vorgestellt habe.
- ein "kurzer" Auslöseimpuls (weniger als 2 sec.) mit dem Steuerhebel der Fernbedienung schießt ein Foto
- ein langer Impuls startet eine Videoaufnahme - ein weiterer langer Impuls beendet die Aufnahme wieder
und so kann man nach Belieben weitere Fotos machen oder Videos drehen.

Die Variable "f" dient dazu, festzustellen, ob das Objektiv schon ausgefahren wurde oder nicht. Ist es das nämlich noch nicht, würde die erste Videoaufnahme nicht starten - daher wird, falls das Objektiv noch eingefahren ist und eine Videoaufnahme gestartet wird, zuerst ein Foto geschossen (stört ja nicht - oder?)

jetzt muss ich schauen, ob ich meine Frage selbst als "gelöst" markieren kann - falls nicht, kann das bitte ein Admin übernehmen :badgrin: - Danke!

(CHDK ist schon eine tolle Sache!)
roijo
CHDK-Einsteiger
CHDK-Einsteiger
 
Beiträge: 19
Registriert: 04.01.2014, 00:22
Kamera(s): IXUS 115 HS
Version 101c

Re: Mit Remote zwischen Foto und Video umschalten

Beitragvon Werner_O » 05.01.2014, 21:14

Hallo roijo,

zunächst einmal herzlich willkommen hier im Forum!

Leider gabs keine Reaktionen von euch - vielleicht war mein Problem ja auch zu trivial...

Sinnvolle Antworten zu solch schwierigen Fragen sind nicht trivial, ganz im Gegenteil!

Zudem verhält sich jede FB anders, und man muß auch unterscheiden, inwieweit der Empfänger direkt durch CHDK und/oder durch entsprechende Skripts (in uBasic oder Lua) entsprechende Befehle an der Kamera auslöst.

Für den Empfänger meiner eigenen IR-FB (wo Fotos und Videos separat auslösbar sind) brauche ich bspw. ein Lua-Skript, und dessen Befehlssprache ist anders als bei einem uBasic-Skript, weshalb ich Dir auch nicht helfen konnte.
Auch die bei mir nötigen CHDK USB-Remote-Einstellungen mußte ich selber durch Ausprobieren herausfinden.

Vielleicht findet sich ja hier noch ein Skriptexperte, der Dein geändertes Skript weiter optimieren kann. So ganz perfekt scheint das ja noch nicht zu sein. Bitte habe dazu aber etwas Geduld!

Liebe Grüße
Werner_O
Benutzeravatar
Werner_O
CHDK-Legende
CHDK-Legende
 
Beiträge: 1014
Registriert: 22.10.2010, 14:12
Wohnort: Köln
Kamera(s): SX20 1.02d
SX240 1.01a
S100 1.01a
S3 1.00a

Re: Mit Remote zwischen Foto und Video umschalten

Beitragvon msl » 05.01.2014, 22:19

Für eine schnelle Beantwortung fehlten einfach zu viele Hintergrundinformationen. Und da ist nicht immer Zeit und Lust vorhanden, alle notwendigen Dinge zu hinterfragen. ;)

Firmware-Version
CHDK-Version
funktionierende Fernbedienung?
CHDK-Einstellungen

u.s.w.

Einige Dinge hast du ja nun bereits selbst herausgefunden. Offensichtlich startest du das Skript im Wiedergabemodus. Hierzu könnte man noch eine zusätzliche Funktion einbauen, die bei erster Fernbedienungsbenutzung den Aufnahmemodus aktiviert. Dann bleibt dir das Problem mit der ersten Videoaufnahme erspart.

uBASIC-Skript sind mit einem end-Befehl zu beenden. Deshalb würde ich vor der Zeile ":fv" eine Zeile mit "end" setzen. Das verhindert dann ein zufälliges Auslösen nach dem Beenden mit [SET].

Für den Flugeinsatz würde ich mir noch eine Funktion überlegen, mit der ich die Kamera ausschalten kann (shotdown). Das könnte im Fall des Falles das Objektiv schützen.

Gruß msl
■ "Hey you, don't tell me there's no hope at all. Together we stand, divided we fall."CHDK inside FAQCHDK-Neuigkeiten auf Twitter
Benutzeravatar
msl
Super-Mod
Super-Mod
 
Beiträge: 4512
Bilder: 271
Registriert: 22.02.2008, 12:47
Wohnort: Leipzig
Kamera(s): A720 1.00c
SX220 1.01a

Re: Mit Remote zwischen Foto und Video umschalten

Beitragvon roijo » 06.01.2014, 12:26

Hi Werner_O und msl!
Danke für eure Rückmeldungen!
Das, mit den fehlenden Infos tut mir leid - ich hab zwar bei den Foren-Regeln davon gelesen auch z.B. die Firmwar-Version anzugeben, wusste in dem Moment aber nicht, wo ich die den jetzt finde bzw. hinschreiben soll (unter das Kameramodel?) und habs dann letztlich wieder vergessen.

Ich schreib das jetzt mal nachträglich hier auf - vielleicht braucht die Info ja mal wer anderer:
Also, wie gesagt das Kameramodel ist eine IXUS 115 HS (das ist wohl auch das Einzige was ich als gesichert angeben kann...)
Firmware-Version ist 101c
CHDK-Version ist 1.2.0
(Ich hoffe, dass ich "Firmware" und "CHDK-Version" richtig angegeben habe - ist schon wieder eine Zeit her, dass ich den ganzen Installationsprozess gemacht habe...)
Ich gebe hier auch noch den kompletten Namen des Ordners bekannt, dessen Inhalt ich auf meine Speicherkarte kopiert habe:
CHDK_DE_ixus115_elph100hs-101c-1.2.0-3238-full_BETA_rev_3238

Und jetzt noch zu den Anregungen von msl

- Das mit dem "end" Befehl werde ich schleunigst nachholen - Danke!
- Deinen Tipp, bei der ersten Benutzung den Aufnahmemodus zu aktivieren scheint sehr vernünftig - werde ich mal versuchen umzusetzen.
- und auch deinen Hinweis mit dem "shotdown" werde mir noch überlegen
(obwohl ich noch keinen blassen Schimmer habe wie ich das am besten umsetzen könnte: ich meine, wenns mit meinem Quadrocopter unkontrolliert bergab geht, hab ich höchstwahrscheinliche den Megastress den Crash zu verhindern :-) )

Jedenfalls werde ich "mein" Skript nochmals überarbeiten und abschließend hier posten.

Auf jeden Fall: Vollen Respekt vor solchen Typen wie ihr es seid!!
Das ihr euch die Mühe macht, anderen zu helfen finde ich großartig. Was ich im Internet durch Menschen wie euch schon gelernt habe kann ich gar nicht auflisten! Daher nochmals ein ganz großes DANKE! =D>

Liebe Grüße
roijo
roijo
CHDK-Einsteiger
CHDK-Einsteiger
 
Beiträge: 19
Registriert: 04.01.2014, 00:22
Kamera(s): IXUS 115 HS
Version 101c

Re: Mit Remote zwischen Foto und Video umschalten

Beitragvon roijo » 06.01.2014, 15:31

Frage an msl!
(oder einen anderen Fachkundigen)

Wegen meines "Problems mit der ersten Videoaufnahme" hast du vorgeschlagen, eine zusätzliche Funktion einzubauen, die beim Erstaufruf den Aufnahmemodus aktiviert - ich nehme an, dazu nimmt man die Anweisung "set_record 1" - oder?

Ich habe diese jedenfalls mal versuchsweise statt "shoot" in der if Abfrage vor dem click "video" gesetzt, also...

if z>10 and z<=80 then
if f<=1 then
f=2
set_record 1
sleep 1000
endif
click "video"
endif

... (zur Sicherheit auch noch eine lange Pause eingebaut) aber es wird nur das Objektiv ausgefahren, nicht die nachfolgende Videotaste gedrückt - jedenfalls wird die Aufnahme nicht gestartet.

Verwende ich die Anweisung set_record falsch - oder wo kann sonst das Problem liegen?
Oder:
Wie könnte ich das Problem mit der ersten Videoaufnahme sonst noch lösen? Gibts da vielleicht auch einen komplett anderen Weg?

Danke im voraus für alle Hinweise!
roijo
CHDK-Einsteiger
CHDK-Einsteiger
 
Beiträge: 19
Registriert: 04.01.2014, 00:22
Kamera(s): IXUS 115 HS
Version 101c

Re: Mit Remote zwischen Foto und Video umschalten

Beitragvon msl » 06.01.2014, 21:58

Wenn das Objekt ausfährt, funktioniert die Skript-Funktion set_record ordnungsgemäß. Möglicherweise ist die Kamera aber noch nicht bereit, die Videoaufnahme zu starten. Soll heißen, der Umschaltprozess mit set_record ist noch nicht fertig. Eine Sekunde Pause erscheint mir als etwas sehr knapp.

Gruß msl
■ "Hey you, don't tell me there's no hope at all. Together we stand, divided we fall."CHDK inside FAQCHDK-Neuigkeiten auf Twitter
Benutzeravatar
msl
Super-Mod
Super-Mod
 
Beiträge: 4512
Bilder: 271
Registriert: 22.02.2008, 12:47
Wohnort: Leipzig
Kamera(s): A720 1.00c
SX220 1.01a

Re: Mit Remote zwischen Foto und Video umschalten

Beitragvon roijo » 07.01.2014, 01:08

Danke, msl, für den Hinweis mit der zur kurzen Reaktionszeit!
Die 1 Sekunde war tatsächlich zu kurz - habe auf 3 Sekunden verlängert und es klappt!!

(da ist es halt gut, wenn ein Profi hilft :-) - ich habe ja gleich grundsätzlich an set_record gezweifelt...)

Nun, ich denke, dass ich das Thema abschließen kann - mein Script funktioniert tadellos. Danke!

Also, zusammengefasst:

Mit dem Skript kann ich nun per Fernbedienung (RC) und einem Remote-Auslöser für die USB Buchse der Kamera (http://jreise.de/RCUSB/RCUSB.html)
- per kurzem Impuls (am besten < 1 sec.) ein Foto schießen
- per ca. 2 Sekunden Impuls (ich zähle:21,22,start) eine Videoaufnahme starten bzw. durch Wiederholung stoppen
- per langen Impuls (>7sec.) die Kamera ausschalten (ich zähle mir einen Count Down:10,9,8,...2,1,aus)

Die tatsächlichen Impulszeiten sind bewußt großzügig gewählt, damit ich mir sicher sein kann, die richtige Funktion aktiviert zu haben - während des Flugs kann ich ja die Kamera nicht kontrollieren.

Und hier das fertige Skript:
Code: Alles auswählen
@title FotoVideo

f=1
do
  z=0
   while is_key "remote"
      z=z+1
      cls
      print "z=",z
   wend
  wait_click 1
  n=n+1
   if n=900 then
      click "shoot_half"
      n=0
   endif
   if z>0 then gosub "action"
until is_key "set"
end

:action
if z<20 then
   shoot
   f=2
endif
if z>30 and z<80 then
   if f<=1 then
      f=2
      set_record 1
      sleep 3000
   endif
   click "video"
endif
if z>100 then
   shut_down
   sleep 3000
endif
z=0
return


Das ganze wäre vielleicht noch besser zu lösen - ich bin halt kein Profi - aber ich kenn mich aus und es funktioniert.

Liebe Grüße
roijo

Ergänzung: Habe das Skript etwas überarbeitet!
Ich habe zwecks stabileren Ablaufens ein paar zusätzliche "sleep" eingebaut und es gibt nun nach etwa einer Minute ein "reboot" - dadurch wird das Objektiv eingefahren - und, so hoffe ich, Strom gespart.
Weiters habe ich den Abschnitt mit der Video-Aufnahme etwas geändert, weil ich die Erfahrung machen musste, dass eine Videoaufnhame nicht gestoppt, sondern gleich eine neue Aufnahme gestartet wurde!
Was nicht besonders gut ist, wenn ich am Boden von dem nichts mitbekomme...

Dann war es wegen dem "reboot" nötig, eine eigene Schleife einzubauen, in der das Skript solange "festhängt" bis eine aktive Videoaufnahme beendet ist - weil sonst startet sich die Kamera während der Aufnahme (wenn länger als 1 Minute) neu - was nicht so gut ist.
Bei der ganzen Tüftlerei habe ich übrigens festgestellt, dass eine Video-Aufnahme nicht unbedingt durch ein erneutes "Drücken" des Video Knopfes beendet wird, sonder bereits durch den "Remote" Impuls selbst. Daher die, vielleicht eigenartig wirkende, Skriptlösung mit until is_key "remote"

Jedenfalls gilt auch hier: Kritik und Anregungen sind gerne Willkommen :-)

Code: Alles auswählen
@title FotoVideo

n=0
do
   while is_key "remote"
      z=z+1
      cls
      print z
   wend
   n=n+1
   k=get_mode
   if n=650 and k=0 then
   rem 650 = ca. 1 Minute
      set_record 0
      sleep 50
      reboot
      sleep 50
   endif
   if z>1 then gosub "action"
until is_key "set"
end

:action
if z<10 then
   shoot
endif
if z>30 and z<80 then
   v=get_movie_status
   if v=0 then
      set_record 1
      sleep 3000
   endif
   sleep 1000
   click "video"
   do
      sleep 10
   until is_key "remote"
   sleep 5000
endif
if z>110 then
   shut_down
   sleep 3000
endif
z=0
n=0
return
roijo
CHDK-Einsteiger
CHDK-Einsteiger
 
Beiträge: 19
Registriert: 04.01.2014, 00:22
Kamera(s): IXUS 115 HS
Version 101c


Zurück zu Code-Ecke

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast