Warning: Novel incoming!
You are absolutely correct. Acquiring and downloading ultra high res images can take a while. I assume you are using my sample script from the Octolapse wiki page? If so, this script not only takes a pic, but waits for it to save to internal ram, then downloads the image to the pi via USB2 (at least it's usb2 in my case). For very large images this can add several seconds to the capture time.
I've developed two alternative methods (my next video will be about this) to deal with this.
Option 1: - Render manually, don't download images to pi
- Use a camera initialization script (in camera profile settings) to set the capture target to SD instead if internal ram. Here is an example:
#!/bin/sh
# Camera Pre-Render script
# Written by: Formerlurker@pm.me
# Put the arguments sent by Octolapse into variables for easy use
CAMERA_NAME=$1
# Set camera to save images to flash memory
gphoto2 --set-config capturetarget=2
- Switch the snapshot acquisition script to use the --trigger-capture flag instead of the --capture-image-and-download flag like so:
#!/bin/sh
# Put the arguments sent by Octolapse into variables for easy use
SNAPSHOT_NUMBER=$1
DELAY_SECONDS=$2
DATA_DIRECTORY=$3
SNAPSHOT_DIRECTORY=$4
SNAPSHOT_FILENAME=$5
SNAPSHOT_FULL_PATH=$6
# trigger the camera and exit immediately, this will return right after the shutter closes, so no camera delay is necessary
gphoto2 --trigger-capture
- Manually download the images from your camera and render them as you see fit.
Option 2 - Erase ALL images from SD, don't download images to pi, and allow Octolapse to render. The script I'm using also leaves images on SD so you can also render manually if you want. You could easily delete the images from the camera after downloading them if you are so inclined.
- In the camera initialization script, also DELETE ALL IMAGE FILES RECURSIVELY (save your family photos first!!!). I haven't found a workaround for this yet, but it's required later on (you'll see why).
#!/bin/sh
# Camera Pre-Render script
# Written by: Formerlurker@pm.me
# Put the arguments sent by Octolapse into variables for easy use
CAMERA_NAME=$1
# Set camera to save images to flash memory
gphoto2 --set-config capturetarget=2
# DELETE ALL FILES ON THE CAMERA, SO BACKUP YOUR FAMILY PHOTOS FIRST!
gphoto2 --delete-all-files --recurse
- Use the same snapshot acquisition script as above.
- Use this pre-render script to download and rename all of the images from the DSLR right before rendering:
#!/bin/sh
# Camera Pre-Render script
# Written by: Formerlurker@pm.me
# Put the arguments sent by Octolapse into variables for easy use
CAMERA_NAME=$1
SNAPSHOT_DIRECTORY=$2
SNAPSHOT_FILENAME_TEMPLATE=$3
SNAPSHOT_FULL_PATH_TEMPLATE=$4
# Check to see if the snapshot directory exists
if [ ! -d "${SNAPSHOT_DIRECTORY}" ];
then
echo "Creating directory: ${SNAPSHOT_DIRECTORY}"
mkdir -p "${SNAPSHOT_DIRECTORY}"
fi
# switch to the snapshot directory
cd "${SNAPSHOT_DIRECTORY}"
# download all of the images on the camera
gphoto2 --get-all-files --force-overwrite
# rename images according to the supplied file template
a=0
for i in *.JPG *.jpg *.JPEG *.jpeg; do
new=$(printf "${SNAPSHOT_FILENAME_TEMPLATE}" "${a}")
mv -- "${i}" "${new}"
a=$((a+1))
done
This way you will get a rendered timelapse at the end, AND you will have all of the images on your camera! Either method should cut your DSLR image acquisition time down by several seconds (reduced by over half for me at 4000x6000 resolution).
There are some drawbacks. You won't get any timelapse preview for the DSLR within the Octolapse tab. My workaround for this is to also capture a timelapse with my webcam. It's nice to have multiple angles anyway! Also, currently no metadata will be captured so the rendering text overlay will not work with this method. Similarly the image transformations (rotate, mirror, etc) will not work. I know how to fix these two limitations, but haven't done so yet. Hopefully sometime soon.
Let me know how it turns out or if you have any questions or suggestions! Good luck!