Hi all, I'm a very early user of Daniweb, and after a long break, and I'm hoping to participate a bit more in this forum again.

I'm here specifically for some advice before starting a new project of mine. I'm an experienced C++ / Win32 developer, but seem to be having trouble coming up with a good way of encoding AVI videos, or animated GIFs (or both!), in such a way that they will be quick to load and watch on my website. I don't really care about the final video output type, as long as I can upload them to my website and have them load up fairly quickly and render in high quality, cross-platform and on different browsers, whether it's using HTML5, GIF, or whatever. It doesn't have to be 100% lossless, but the higher the quality, the better.

I love making physics & biology simulations, and have already had some success building up a simulation framework in C++ capable of generating AVI videos, but the AVI encoding was unreliable, often problematic, and basically I want to have another go at doing this properly in a nice efficient and low-level way. I want to be able to create videos and/or animations which I can upload on to my website, and render detailed animations with as little loading time as possible - which I assume will require some basic level of compression.

Can anybody point me in the right direction, or reccommend any specific libraries? I like working quite low-level, I basically just want to feed an array of bitmaps to a video encoder and have it do all the dirty work for me, but the file size is either always too large, or the quality too low. I often do particular simulations where each particle is just 1 pixel in size, and lossy compression can really ruin the effect. How are people able to encode long 1-2 hour movies in high quality and maintain such a relitavely small filesize?

Thanks in advance!

Edit: Just as an example, I'd like to be able to create GIFs like these using raw C++: https://giphy.com/gifs/processing-creative-coding-openprocessing-dV4WMwFUzS4G4

I'd also like the ability to display larger & longer animations, but for that, youtube might be more appropriate.

Edit 2: More examples: