Many Ludum Dare participants like to create time-lapse videos that show the actual development of their entries.  I thought that was a cool idea, and decided to use Chronolapse to capture and encode my video.  Chronolapse is stable, has a simple interface, and even has some advanced features like dual monitor support and picture-in-picture.  But the software lacks in one major area: video quality.

While recording, Chronolapse takes periodic frame captures from your screen or webcam.  Then, when you’re done, you can use the tool to compile the image sequence into a video that can be uploaded to YouTube, for example.  Unfortunately, there are no settings to tweak the video output quality, and the quality is pretty bad.

The simplest solution I could find is to download a separate tool called ffmpeg to do the encoding.

Chronolapse

Chronolapse

ffmpeg

ffmpeg

Here’s how to do it:

1) Use Chronolapse to create a sequence of images in a folder somewhere.
2) Download ffmpeg and extract it.
3) Find the encoder executable ffmpeg.exe in the bin folder.
4) Rename all the images in your time-lapse sequence to a format that ffmpeg can recognize:

    • Open the folder with your image sequence in Windows Explorer.  Make sure there are no other files in the folder.
    • Single-click on the first file in the sequence to select it.  Note: This step is very important and affects sort order.
    • Select all files with Ctrl + A.
    • Press F2 and type img, and then press Enter.  The files will be renamed sequentially.

5) Place a copy of ffmpeg.exe in the same folder as your image sequence, or ensure that the executable is in the Windows path.
6) Open a command window where the image sequence is, and enter the command:

ffmpeg -r 20 -i “img (%d).png” -q:v 1 -b:v 1500k timelapse.mp4

7) After processing for some time, you should have a new video file of much higher quality than what Chronolapse produces.  Unless you have the correct codecs installed, this will not play.  If you’re having any problems, try the VLC Media Player.
8) Profit!

To see an example of higher video quality in action, see the time-lapse video link on my entry page.

Have fun!

Tags: ,


7 Responses to “Higher-Quality-Video Workaround for Chronolapse”

  1. Blinked says:

    Bookmarked this for next LD. Thank you very much! This was my only problem with Chronolapse, I even tried to use ffmpeg but couldn’t figure it out.

  2. arkeus says:

    Just wanted to add another data point about creating timelapses.

    I too use chronolapse for taking my screenshots. But to create the timelapse I use VirtualDub with the “x264vrfw – H.264/MPEG-4 AVC codec” for compression. Doing this let’s me create a crystal clear 1080p timelapse, eg: http://www.youtube.com/watch?v=C50j1DHadb4

    The filesize is not bad at all either, my 48 hours compressed into a 6 minute 1080p video turned out to be 437MB. It’s huge, but not nearly as bad as I’d expect it to be. :)

    If interested, the virtualdub tutorial I followed was here: http://timelapseblog.com/2009/08/04/using-virtualdub-for-time-lapse/

  3. 7Soul says:

    I import my chronolapse pictures to Sony Vegas, adjust the speed, add music, then export to 720p .mp4

  4. Dietrich Epp says:

    You can actually use FFmpeg to capture your timelapse directly, and cut out Chronolapse. But you’d only probably want to do that on Linux.

  5. Crefossus says:

    If you copy and paste the command I think you need to replace the quotations manually around the file name as they are some weird ascii character.

  6. Hugo R says:

    Just wanted to share this BAT file for automating this process.

    You need to have ffmpeg.exe in your PATH for this to work.

    _______________________

    @echo off
    set /p UserInputPath=What Directory would you like?
    cd %cd%\%UserInputPath%

    setlocal EnableDelayedExpansion
    set i=-1
    for %%a in (*.png) do (
    set /a i+=1
    ren “%%a” “img !i!.new”
    )
    ren *.new *.png

    set /p timelapseName=what is the name?

    set imgNameVar=^”img %%d.png^”
    set compileCommand=ffmpeg -r 20 -i %imgNameVar% -q:v 1 -b:v 1500k %timelapseName%.mp4

    %compileCommand%

    set /p UserInputPath= okay?

Leave a Reply

You must be logged in to post a comment.

[cache: storing page]