-
Notifications
You must be signed in to change notification settings - Fork 47
Timelapses
indi-allsky utilizes ffmpeg to convert a sequence of images into a timelapse video.
-
Framerate
- The number of frames per second to be utilized for the timelapse video. A smaller number will make the video longer, but it will be choppier. A larger number will be more smooth, but shorten the video. -
Bitrate
- The target data bit rate for the output. A larger number will result in more data and more detail at the expense of a larger file size.5000k
is a good number for HD videos.10000k
might be better for 4K. -
Scaling
- Scales the output of the video resulting in a lower resolution and smaller file size. Scaling the video also reduces the memory requirements to generate the video -
Codec
- The encoder for the video. x264 is the default and usually the best option -
Skip frames
- Skips frames at the beginning of the timelapse. The exposures are usually wrong when there is a transition between day and night resulting in over or under-exposed images. This setting give the opportunity to remove those frames from the video.
A common problem related to ffmpeg scaling is this selection can cause the timelapse generation to fail. If the scaling percentage results in a resolution that is not divisible by 2, the timelapse will fail. Unfortunately, ffmpeg is not smart enough to self-correct this problem and you cannot know ffmpeg will fail until it runs.
This is why there is a selection specifically for IMX477 (Raspberry Pi HQ camera). The percentage based calculations will fail (on IMX477).
Memory requirements are primarily driven by the resolution of the timelapse generated by the FFMPEG utility. A higher resolution camera can be used on lower memory system by scaling the output resolution of the FFMPEG process.
Output Resolution | Recommended Memory | Minimum Memory | FFMPEG Process Memory |
---|---|---|---|
1280 x 960 (1.2MP) | 2GB | 1GB with 1GB swap | 0.4GB |
1920 x 1080 (2MP) | 2GB | 1GB with 1GB swap | 0.6GB |
3840 x 2160 (8MP) | 4GB | 2GB with 1GB swap | 1.7GB |
3008 x 3008 (9MP) | 4GB | 2GB with 1GB swap | 1.8GB |
4056 x 3040 (12MP) | 4GB | 2.5GB | |
6224 x 4168 (26MP) | 8GB | 5.0GB | |
9152 x 6944 (64MP) | 16GB | 12.0GB |
Codec | Notes |
---|---|
x264 | |
x265 hevc | Slower on SBCs like Raspberry Pi. Greater memory usage. HVEC not widely supported by browsers |
webm | |
h264 OMX | Limited to Raspberry Pi running 32-bit OS |
h264 v4l2m2m | Raspberry Pi - Limited to 1920x1920 - Use Scaling |
h265 hvec v4l2m2m | Raspberry Pi - Limited to 1920x1920 - HVEC not supported by most browsers |
h264 QSV | Intel accelerated encoder |
sudo apt-get install \
intel-media-va-driver-non-free \
i965-va-driver
Processor | Description |
---|---|
Standard | No pre-processing is performed, images used as-is |
Wrapped Keogram | The keogram for the time period is wrapped around the image circle |
Setting | Description |
---|---|
Image Circle | Size of the image circle for processing (Used by Wrapped Keogram) |
Keogram Ratio | For the Wrapped Keogram, this is the ratio of the size of the keogram to the image circle. 0.15 = 15% |
Pre-processors that process every image for a timelapse have to read each image, run the processing, and write new temporary images. On a Raspberry Pi 3 system, processing averaged 1.5s per image for the wrapped keogram. This would mean a 2000 image timelapse required 3000 seconds (50 minutes) of pre-processing time, in addition to the 15-30 minutes for building the timelapse from those images.
Depending on the resolution of the camera, the temporary images may require 1-4GB of disk scratch space while the timelapse is generated.
If the processor expands the size of the image, it will require more memory. Recommend 4GB of memory for pre-processors.