Sunday, August 14, 2016

Go Pro Long Exposure Testing

Recently I wanted to figure out the best settings in regards to the go pro long exposure hack for my Go Pro 3 Black.
Some Links:

I eventually would like to figure out the best settings for: fireworks, night skies, and camp fires.  To be used for timelapse videos

Summary Video:




In order to test I created a lengthy ash script with most (not all) of the setting options laid out in the authors site.

t app appmode photo
sleep 1
t ia2 -ae still_exp 100 2 8,5
sleep 1
t app button shutter PR
sleep 5
t ia2 -ae still_exp 300 2 8,5
sleep 1
t app button shutter PR
sleep 5
t ia2 -ae still_exp 600 2 8,5
sleep 1
t app button shutter PR
sleep 5
t ia2 -ae still_exp 800 2 8,5
sleep 1
t app button shutter PR
sleep 5
t ia2 -ae still_exp 100 5 7,7
sleep 1
t app button shutter PR
sleep 5
t ia2 -ae still_exp 300 5 7,7
sleep 1
t app button shutter PR
sleep 5
t ia2 -ae still_exp 600 5 7,7
sleep 1
t app button shutter PR
sleep 5
t ia2 -ae still_exp 800 5 7,7
sleep 1
t app button shutter PR
sleep 5
t ia2 -ae still_exp 100 15 7,3
sleep 1
t app button shutter PR
sleep 5
t ia2 -ae still_exp 300 15 7,3
sleep 1
t app button shutter PR
sleep 5
t ia2 -ae still_exp 600 15 7,3
sleep 1
t app button shutter PR
sleep 5
t ia2 -ae still_exp 800 15 7,3
sleep 1
t app button shutter PR
sleep 5
t ia2 -ae still_exp 100 20 7,1
sleep 1
t app button shutter PR
sleep 5
t ia2 -ae still_exp 300 20 7,1
sleep 1
t app button shutter PR
sleep 5
t ia2 -ae still_exp 600 20 7,1
sleep 1
t app button shutter PR
sleep 5
t ia2 -ae still_exp 800 20 7,1
sleep 1
t app button shutter PR
sleep 5
t ia2 -ae still_exp 100 30 6,8
sleep 1
t app button shutter PR
sleep 5
t ia2 -ae still_exp 300 30 6,8
sleep 1
t app button shutter PR
sleep 5
t ia2 -ae still_exp 600 30 6,8
sleep 1
t app button shutter PR
sleep 5
t ia2 -ae still_exp 800 30 6,8
sleep 1
t app button shutter PR
sleep 5
t ia2 -ae still_exp 100 85 5
sleep 1
t app button shutter PR
sleep 5
t ia2 -ae still_exp 300 85 5
sleep 1
t app button shutter PR
sleep 5
t ia2 -ae still_exp 600 85 5
sleep 1
t app button shutter PR
sleep 5
t ia2 -ae still_exp 800 85 5
sleep 1
t app button shutter PR
sleep 5
t ia2 -ae still_exp 100 255 2
sleep 1
t app button shutter PR
sleep 5
t ia2 -ae still_exp 300 255 2
sleep 1
t app button shutter PR
sleep 5
t ia2 -ae still_exp 600 255 2
sleep 1
t app button shutter PR
sleep 5
t ia2 -ae still_exp 800 255 2
sleep 1
t app button shutter PR
sleep 5
t ia2 -ae still_exp 100 600 0,33333
sleep 1
t app button shutter PR
sleep 5
t ia2 -ae still_exp 300 600 0,33333
sleep 1
t app button shutter PR
sleep 5
t ia2 -ae still_exp 600 600 0,33333
sleep 1
t app button shutter PR
sleep 5
t ia2 -ae still_exp 800 600 0,33333
sleep 1
t app button shutter PR
sleep 5
d:\autoexec.ash
REBOOT yes
  • The script above takes a total of 32 images every iteration
  • 6 second delay between each picture
  • each picture has a setting change
    • either raising iso (100,300,600,800)
    • or the "Exposure time, Iris (exposure time also?)"  changes (according to author) 
  • There was a total of 3002 pictures taken
  • iteration between pictures of the same seconds: 5 mins

See this video for the results.  I am posting a warning.  There were alot of steps in making this where human error could happen.  if it did, it throws everything off.  But everything aligned, and seems correct.


Battery Life Note:
  • Replaced battery once, so total of 2 batteries plus I have an external power cell battery thing and as far as I can tell it ran from 8:20pm - 5:26am

Java code used to sort pictures into their respective folder


package picsorter;

import java.io.File;

/**
 * PicSorter.java
 * 
 * @author Owen Gerig / AA
 *         Created on Aug 7, 2016
 */
public class PicSorter {

private static String pathString = "C:\\Users\\dever\\Desktop\\picdir\\";

private static String folder1 = "C:\\Users\\dever\\Desktop\\picdir\\100,2,8,5\\";
private static String folder2 = "C:\\Users\\dever\\Desktop\\picdir\\300,2,8,5\\";
private static String folder3 = "C:\\Users\\dever\\Desktop\\picdir\\600,2,8,5\\";
private static String folder4 = "C:\\Users\\dever\\Desktop\\picdir\\800,2,8,5\\";

private static String folder5 = "C:\\Users\\dever\\Desktop\\picdir\\100,5,7,7\\";
private static String folder6 = "C:\\Users\\dever\\Desktop\\picdir\\300,5,7,7\\";
private static String folder7 = "C:\\Users\\dever\\Desktop\\picdir\\600,5,7,7\\";
private static String folder8 = "C:\\Users\\dever\\Desktop\\picdir\\800,5,7,7\\";

private static String folder9 = "C:\\Users\\dever\\Desktop\\picdir\\100,15,7,3\\";
private static String folder10 = "C:\\Users\\dever\\Desktop\\picdir\\300,15,7,3\\";
private static String folder11 = "C:\\Users\\dever\\Desktop\\picdir\\600,15,7,3\\";
private static String folder12 = "C:\\Users\\dever\\Desktop\\picdir\\800,15,7,3\\";

private static String folder13 = "C:\\Users\\dever\\Desktop\\picdir\\100,20,7,1\\";
private static String folder14 = "C:\\Users\\dever\\Desktop\\picdir\\300,20,7,1\\";
private static String folder15 = "C:\\Users\\dever\\Desktop\\picdir\\600,20,7,1\\";
private static String folder16 = "C:\\Users\\dever\\Desktop\\picdir\\800,20,7,1\\";

private static String folder17 = "C:\\Users\\dever\\Desktop\\picdir\\100,30,6,8\\";
private static String folder18 = "C:\\Users\\dever\\Desktop\\picdir\\300,30,6,8\\";
private static String folder19 = "C:\\Users\\dever\\Desktop\\picdir\\600,30,6,8\\";
private static String folder20 = "C:\\Users\\dever\\Desktop\\picdir\\800,30,6,8\\";

private static String folder21 = "C:\\Users\\dever\\Desktop\\picdir\\100,85,5\\";
private static String folder22 = "C:\\Users\\dever\\Desktop\\picdir\\300,85,5\\";
private static String folder23 = "C:\\Users\\dever\\Desktop\\picdir\\600,85,5\\";
private static String folder24 = "C:\\Users\\dever\\Desktop\\picdir\\800,85,5\\";

private static String folder25 = "C:\\Users\\dever\\Desktop\\picdir\\100,255,2\\";
private static String folder26 = "C:\\Users\\dever\\Desktop\\picdir\\300,255,2\\";
private static String folder27 = "C:\\Users\\dever\\Desktop\\picdir\\600,255,2\\";
private static String folder28 = "C:\\Users\\dever\\Desktop\\picdir\\800,255,2\\";

private static String folder29 = "C:\\Users\\dever\\Desktop\\picdir\\100,600,0,33333\\";
private static String folder30 = "C:\\Users\\dever\\Desktop\\picdir\\300,600,0,33333\\";
private static String folder31 = "C:\\Users\\dever\\Desktop\\picdir\\600,600,0,33333\\";
private static String folder32 = "C:\\Users\\dever\\Desktop\\picdir\\800,600,0,33333\\";

/**
 * moves the file via the renameTo method
 * 
 * @param file to be moved
 * @param newPath path that the file should be moved to
 */
public static void renameFile(File file, String newPath) {

String fileName = file.getName();
if (file.renameTo(new File(newPath + fileName))) {
System.out.println(fileName + " was moved successful!");
} else {
System.out.println(fileName + " failed to move!");
}
}

/**
 * main, runs when the program starts, sorts photos into specific folders
 * 
 * @param args no arguements taken!!!
 */
public static void main(String[] args) {

File folder = new File(pathString);
File[] listOfFiles = folder.listFiles();

int counter = 1;
for (int i = 0; i < listOfFiles.length; i++) {
if (listOfFiles[i].isFile()) {
File file = listOfFiles[i];

switch (counter) {
case 1:
renameFile(file, folder1);
break;
case 2:
renameFile(file, folder2);
break;
case 3:
renameFile(file, folder3);
break;
case 4:
renameFile(file, folder4);
break;
case 5:
renameFile(file, folder5);
break;
case 6:
renameFile(file, folder6);
break;
case 7:
renameFile(file, folder7);
break;
case 8:
renameFile(file, folder8);
break;
case 9:
renameFile(file, folder9);
break;
case 10:
renameFile(file, folder10);
break;
case 11:
renameFile(file, folder11);
break;
case 12:
renameFile(file, folder12);
break;
case 13:
renameFile(file, folder13);
break;
case 14:
renameFile(file, folder14);
break;
case 15:
renameFile(file, folder15);
break;
case 16:
renameFile(file, folder16);
break;
case 17:
renameFile(file, folder17);
break;
case 18:
renameFile(file, folder18);
break;
case 19:
renameFile(file, folder19);
break;
case 20:
renameFile(file, folder20);
break;
case 21:
renameFile(file, folder21);
break;
case 22:
renameFile(file, folder22);
break;
case 23:
renameFile(file, folder23);
break;
case 24:
renameFile(file, folder24);
break;
case 25:
renameFile(file, folder25);
break;
case 26:
renameFile(file, folder26);
break;
case 27:
renameFile(file, folder27);
break;
case 28:
renameFile(file, folder28);
break;
case 29:
renameFile(file, folder29);
break;
case 30:
renameFile(file, folder30);
break;
case 31:
renameFile(file, folder31);
break;
case 32:
renameFile(file, folder32);
counter = 0;
break;
default:
break;
}
counter++;

}
}
}
}