Export Textures As an Animated GIF?

Started by
4 comments, last by LorenzoGatti 10 years, 7 months ago

Well, I haven't really been able to find a way to use FFMPEG and synchronize audio and video, so I figured I'd focus on something that I probably could do with it. I can take a video and decode its video frames into a GLuint texture. What would be a good library that I could use to export the frames I decode into an animated GIF?

Any help is greatly appreciated.

Advertisement

how about GIFLIB: http://giflib.sourceforge.net/gif_lib.html

AFAIK the quality of gif is horrible and probably wont work unless you want to use the video for a 50*50 pixel in game screen decoration you barely can see.

Not sure if it can support better quality than what ive seen on the internets though.

o3o

AFAIK the quality of gif is horrible

Not horrible, but presumably not adequate: GIF format is limited to 256 colours, one of them fully transparent.

It's been a long time since I last saw GIF-compatible textures; RGB and RGBA textures are usually stored as nicely compressed PNG files (uncompressed BMP or Targa files are going out of fashion).

Can you explain what you are trying to do?

Omae Wa Mou Shindeiru

FWIW: I am using mostly a customized Motion-JPEG variant for animated textures.

this basically consists of an AVI video with individual compressed JPEG frames.

in my case, it has extensions to support transparency and additional features (such as normal/depth/glow maps).

the decoder is actually somewhat custom, and does a few "interesting" things (for example, it can decode directly into DXT1 or DXT5 textures, without needing to first decode to RGBA).

also, interestingly, it tends to be somewhat faster than my PNG codec, despite JPEG being a somewhat more complex format than PNG. I have attempted faster codecs, but thus far have yet to come up with anything "solidly better" here than the current JPEG variant. (both are "reasonably fast enough" though, this mostly matters for video type uses...).

a drawback of standard M-JPEG though is that it doesn't support transparency (this is a format extension in this case).

as for GIF, its main downsides I think are basically that it is limited to 256 colors, and FWIW the compression isn't as good (as the same-frame count and resolution for an M-JPEG image, ex: 256x256x10 frames -> 325kB GIF, vs 202kB MJPEG, vs 890kB MNG).

an advantage GIF does have though is that it is a fairly common animated-image format.

there is also APNG and MNG, which are sort-of-existing animated PNG variants.

Well, I haven't really been able to find a way to use FFMPEG and synchronize audio and video

Don't blame FFMPEG (or more precisely libavcodec): the AVFrame struct

https://www.libav.org/doxygen/master/structAVFrame.html

seems so foolproof that synchronization problems are far more likely to depend on what you do with decoded audio and video, meaning that you are going to have the same problems if you switch to bizarre techniques like using animated GIF files and separate audio files.

Can you explain your synchronization troubles, and how do you actually play audio and draw video?

Omae Wa Mou Shindeiru

This topic is closed to new replies.

Advertisement