{"id":167,"date":"2008-08-27T22:06:25","date_gmt":"2008-08-28T04:06:25","guid":{"rendered":"http:\/\/mcguyverofbeer.com\/?p=167"},"modified":"2008-08-27T22:06:25","modified_gmt":"2008-08-28T04:06:25","slug":"how-to-create-a-thumbnail-storyboard-from-a-video-file-with-ffmpeg-imagemagick","status":"publish","type":"post","link":"https:\/\/www.scottharvanek.com\/?p=167","title":{"rendered":"How to create a thumbnail storyboard from a video file with FFmpeg &#038; ImageMagick"},"content":{"rendered":"<p>This took me a few minutes to write after I couldn&#8217;t find anything via Google.\u00c2\u00a0 Basically what this little script does is take a file as input, takes a snapshot every 100 seconds and arranges them in a 3&#215;30 display.\u00c2\u00a0 This can be modified in anyway to change the speed in which shots are take to how they are arranged.\u00c2\u00a0 Remember this is open source, do whatever makes you happy.<\/p>\n<p>The script! :<\/p>\n<blockquote><p>#!\/bin\/sh<br \/>\n# Filename is first input<br \/>\nfile=$1<br \/>\n# Resolution for screenshots is second input<br \/>\nsize=$2<br \/>\n#Take snapshots of $file every 100 seconds in image2 format @ $size<br \/>\nffmpeg -i $file -r 0.01 -f image2 -s $size images%05d.png<br \/>\n# Images 1&amp;2 Always seem to be black so lets remove them<br \/>\nrm -rf images00001.png images00001.png<br \/>\n# Merge the snapshots together with 0 border\/margin, tile them 3&#215;30 and save that new image as $file.jpg<br \/>\nmontage images000* -geometry +0+0 -tile 3&#215;30 $file.jpg<br \/>\n# Clean up after ourselves<br \/>\nrm -rf images0*<\/p><\/blockquote>\n<p>I have the above saved and chmod +x in \/usr\/bin\/thmbcreate, when I have a movie I want to create this storyboard from I run the following command:<\/p>\n<p>thmbcreate myfile.avi 320&#215;240<\/p>\n<p>Enjoy!<\/p>\n<p>-S<\/p>\n","protected":false},"excerpt":{"rendered":"<p>This took me a few minutes to write after I couldn&#8217;t find anything via Google.\u00c2\u00a0 Basically what this little script does is take a file as input, takes a snapshot every 100 seconds and arranges them in a 3&#215;30 display.\u00c2\u00a0 &hellip; <a href=\"https:\/\/www.scottharvanek.com\/?p=167\">Continue reading <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1,8],"tags":[],"class_list":["post-167","post","type-post","status-publish","format-standard","hentry","category-opensource","category-random"],"_links":{"self":[{"href":"https:\/\/www.scottharvanek.com\/index.php?rest_route=\/wp\/v2\/posts\/167","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.scottharvanek.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.scottharvanek.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.scottharvanek.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.scottharvanek.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=167"}],"version-history":[{"count":1,"href":"https:\/\/www.scottharvanek.com\/index.php?rest_route=\/wp\/v2\/posts\/167\/revisions"}],"predecessor-version":[{"id":168,"href":"https:\/\/www.scottharvanek.com\/index.php?rest_route=\/wp\/v2\/posts\/167\/revisions\/168"}],"wp:attachment":[{"href":"https:\/\/www.scottharvanek.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=167"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.scottharvanek.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=167"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.scottharvanek.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=167"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}