Export frames/images from compressed video - image-processing

I have a compressed movie (mp4) and I want to extract every single frame / image from it. I know that each individual frame of the video only contains the changed pixels regarding to the last keyframe, because of the video compression. But that is exactly what I want. I just want to see those differences. I want to visualy see how the compressor works.
Is there some tool like imagemagick out there what can things like that?

found a solution by my own using ffmpeg:
ffmpeg -i video.mp4 -f image2 -vf "select=eq(pict_type\,PICT_TYPE_P)" -vsync vfr pframe_%04d.png

Related

How can I programmatically create APNG files?

Generally I use PHP, and ImageMagick, but as far as I can tell it seems the ImageMagick group refuse to implement the ability to create/understand animated PNG files?
What tooling can I implement to take a dozen JPEG files and create an animated PNG out of them? I'd prefer to have a PHP api, but I can branch out into another language if required!
Thanks
As of ImageMagick 7.0.10-31, Animated PNG is supported.
magick -delay 100 -loop 0 frame1.png frame2.png APNG:myanimation.png
parameters:
-delay 100 specifies a duration of 100 centiseconds (aka one second) per frame before moving on to the next frame.
-loop 0 tells the animation to repeat forever.
APNG:___.png specifies the output should be animated png.
(thanks to #fmw42 for improvements)

I can't get the resolution of 1334x750 whether through handbrake or ffmpeg

With Handbrake, I could only get 1333x750. I tried to follow the advice given on ffmpeg resizing video puts it at wrong resolution to force the aspect ratio to 1.79.
Apple however, is not accepting the file - some issues with the bitrate and stuff. Any other advice?
Check this answer from #Benjamin Thiel
I added just for documentation.
ffmpeg -i input.mp4 -acodec copy -crf 12 -vf scale=1080:1920,setsar=1:1 output.mp4 did the trick!
Turns out that ffmpeg tries to be smart about aspect ratio, so that the actual size is 1079x1920 with an aspect ratio of 2000:2001.
setsar=1:1 forces an aspect ratio of 1:1 and hence, the right resolution
-crf 12 as desired quality roughly results in the same file size as the original file created by iMovie, so it should be a safe bet bit rate-wise

ImageMagick - is it possible to create a static thumbnail (with only first frame) of an animated gif file?

Some users of my website want a possibility to upload gif images to their profiles. I would allow this but... Some gif files are very large - 1-2 MB and more and it's no a good idea to create galleries with 20 x 1 MB gif animations on a single page. If I create a thumbnail with ImageMagick, the thumbnail is animated as well and I get ~600 KB thumbnail from 1 MB file. It's too much and thumbnail processing takes a long time.
Is there any way how to create a static thumbnails of animated gif files so that animated file loads only when user clicks on a thumbnail?
Thanks.
You can create a thumbnail from an animated gif with ImageMagick by specifying the frame that you want. In this case, I use the first frame:
$ convert 'animated.gif[0]' thumbnail.png
The thumbnail will then be a static image, which you can turn into a hyperlink which will load the full animated gif if/when clicked.
Answer adapted from Extracting frames from an animated gif | Tips & Tricks.
convert -thumbnail x100 'test.gif[0]' ./test_x100.jpg
convert -thumbnail x200 'test.gif[0]' ./test_x200.jpg
you can try this command.

How to merge a jpg with a gif without lossing the animation of gif file?

I am trying to merge a splash screen image which is in jpg format with an ajaxloader which is in gif format.
I tried the following command using ImageMagik:
convert -delay 50 splashimage.jpg ajaxloader.gif final.gif
This command does merge the gif file with the jpg image but the loader appear at the top-left corner.
I was wondering if there is an option available to place it at a specfic (x,y) point on the jpg image?
If anybody has had done a similar thing or has an idea as to how a similar thing can be achieved, please guide me through.
Thanks.
Why would you want to do this? You'd be turning a nice 24bit JPG into a crappy quality single frame on an 8bit gif. You could just use some CSS tricks to overlay the loader .gif on top of the .jpg on a webpage, which would not sacrifice any image quality to achieve the same effect.
I solved the problem by designing individual frames of images with the desired location of my text and merged them using Imagemagik.

Exporting PNG-Sequences for iOS right!

I made an animation for an iOS-loading-screen. The devs tell me now, that the files are way to big (100 frames/pngs with 22.5mb for the whole bunch) and I tried to reduce it by rastering the PNGs by export (helped a bit) and then I shortened the video by 50frames and I'm on 10mb now. This is still huge. I made the animation in Flash. Is this the problem? Each PNG is 235kb of size. I need your help :-)
first try to reduce the size of your png using pngcrush or Photohop export for web. The other idea is to use an mpeg video, create a png with just the first frame, open the video when the application run and you should be able to switch from the static png to the first frame of the video without glitches. In this way the user don't understand that you switched from image to video and see the video playing.
Hope this helps

Resources