You can add a pause between the animations by adjusting the delay of the final frame of the first coalesced animation.
This uses information found in IM Examples, Animation Basics, and more specifically
Animation Modification, Frame by Frame modification.
this for example extracts the last frame of the first animation,
and changes its delay to 5 seconds, before appending (time wise) the second animation. That last frame is also adjusted the same way, before the whole sequence loops.
Code: Select all
convert animation1.gif -coalesce \
\( +clone -set delay 5/1 \) +swap +delete \
\( animation2.gif -coalesce \) \
\( +clone -set delay 5/1 \) +swap +delete \
-layers optimize final_animation.gif
If you want to just display the animation (animating) for 5 seconds, you will have to loop the animation yourself over the whole time period. For that you may like to examine the total loop time for each animation using something like the script "gif2anim" which is used within IM Examples, to figure out how many time you want to loop, either in whole or partial loops. See
Animation Basics, Sequence Information for more infromation on this script I developed.
You will need to add a '-t' option to the script to include timing comments in the output file. From that script I see the skier is 160 centi-seconds before looping, while sonic is only 50 centi-seconds (1/2 second) before looping. As such you will need more loops of sonic in your final animation.
On the other hand overlaying two animations, is tricky. And gets worse if the timing sequence are not the same (asynchronously time merger). These are also discussed in IM Examples, Animation modifications, at the bottom of the page. however, no final solution has been compiled into the IM core library (yet).
Programmers wanted