Page 1 of 1

How to create a thumbnail from a video - final solution (?)

Posted: 12 Sep 2006 01:22
by Rozis
For all those people wanting a thumbnail from a video, use the following command (Windows):

Code: Select all

vlc -V image --start-time 0 --stop-time 1 --image-out-format jpg --image-out-ratio 24 --image-out-prefix snap test.mpg vlc:quit
What it does:

When Vlc runs it 'plays' the video for one second without actually showing the video on screen, and then quits, leaving us with a file named 'snap000000.jpg', containing an image of the first frame (?) of the video.

How its works:

First select the image output with: -V image.

Next set the interval (in seconds) you want an image from with: --start-time 0 --stop-time 1
In my example the first second of the video. In that case you could omit the parameter --start-time. If you want an image from the 5th second fill in: --start-time 5 --stop-time 6

The image format will be .jpg because i provided: --image-out-format jpg. You could specify --image-out-format png to get a .png-image instead.

--image-out-ratio 24 specifies we want one image out of 24. In my case the video contains 24 images per second so this is the right value. If your video has more images per seconds you should increase this value to prevend you get more images as one. If the number is too high (for example 500) it still produces only one image, so the actual value is not so important as long as it is higher then the images per second.

--image-out-prefix snap specifies the filename must start with 'snap'. I tried to fill in a path but that doesn't work: the prefix specifies the basename of the file only.
You could specify --no-image-out-replace. In that case Vlc produces the file 'snap.jpg'.

test.mpg specifies the video to play and finally vlc:quit forces vlc to quit when ready.

I hope this explaination helps all people wanting thumbnails of a video.

One question remains: If you want to make thumbnails of many files each file takes one second to take an image from. Is there any commandline-option to 'play' videos with enhanched velocity? And is there a possibility to run Vlc completely in the background (now it leaves me with the player)?

Posted: 12 Sep 2006 09:26
by Jean-Baptiste Kempf
Could you put this on the wiki please ?

Posted: 12 Sep 2006 21:06
by Rozis
Of course it's your party but why put it on the wiki? and where? Couldn't find a logical place there. Is the FAQ or the documentation not a more logical place?

and what about my last 2 questions?

Posted: 13 Sep 2006 01:13
by Jean-Baptiste Kempf
I'll do it in Wiki, but a Howto would be great.
You can switch from a file to another for multiple files.
you can use the -d flags to run vlc in the background, I think.

Posted: 13 Sep 2006 01:29
by Rozis
I searched the wiki but found no logical place. Could you direct me to the place where to put it? I'll put it there then. And thanks for the clues, it can make the article even more meaningfull.

Posted: 13 Sep 2006 07:25
by Jean-Baptiste Kempf
http://wiki.videolan.org/index.php/How_to
From there, put a link to
http://wiki.videolan.org/index.php/What_can_vlc_do, and add this howto in this page. :lol:

Posted: 24 Sep 2006 23:00
by spline
Hi there,

first thanks for this hint.
I tried to make some snapshot from some vidieos using perl.
The command i used to call VLC is:
`C:\Programme\VideoLan\VLC\VLC.exe -V image --start-time 10 --stop-time 11 --image-out-format jpg --image-out-ratio 50 -image-out-prefix "1-10-" "here is the video name.avi" vlc:quit`

start-time, stop-time and image-out-prefix are variables set by the Perl script. The change for every call.
Problem is, that for some reason, VLC does not make a snapshot.
On some videos it comes up with an error message.
Am i doing something wrong??

Regards

spline

Posted: 26 Sep 2006 16:58
by rh
Hi,
i think jpg do not work. I use this string to capture screenshots from my desktop:

vlc -vvv -I dummy -V image --start-time 1 --stop-time 2 --image-out-format png --image-out-ratio 200 --image-out-prefix snapshot screen://

This generate two pictures per minute, depended on changing your desktop.
Greetings, rh

Posted: 27 Sep 2006 09:50
by rh
Hi,
this is not the solution for this problem.

If i take my command-line to work with a avi-file (or also with mpg-file) many errors occured. So for instance "invalid start-time ignored", "invalid stop-time ignored" and so one. Based on this i think this feature is not passible.

If you find a solution, please post it.
Greetings, rh

Posted: 29 Sep 2006 07:16
by spline
Hi,

thnaks for the answers.
I tried it with some more videos and teh result is dissapointing. Some work perfect, some work with some errors (which stops me doing this as a batch for lot of files, because i allways have to click the "Close" buton on VLC) and for some it works not at all (no snapshot is taken).

Maybe some developer can have a look on this. I've searched the forum (not only VLC one, but a lot of others) and it seems, that this feature (snapshots via batch) is reqested often. And as far as i know, there are no other program that is able to do this via command line for nearly every codec.

Regards


spline

Posted: 09 Oct 2006 14:39
by spline
Hi all,

i tried to make snapshots / screenshots via the command line for some more videos.
It doesn't work reliable ;-(
I will check what all the videos for which making a snapshot is failing have in common. Maybe it's dependant on a specific codec.
Does it make sense to open a bug in the tracking system?


Regards

spline

Posted: 11 Oct 2006 23:29
by Rozis
Hi Spline,

First: The command i provided in the topic works fine for me. But i only tried it on movies coming from my camara, so all movies have the same fromat...

I have the following suggestions:
- starttime: if the movie is actually shorter then the given starttime i could image it gives an error. Maybe try 0 first...
- Your comment suggests the whole thing doesn't work: my question, if you only use starttime stoptime is the same true? What is not working: displaying a bit of the movie or making the snapshot?
- As far as i understand the stuff about codexes i could image there could be somethin' wrong there, so one image is working fine but the other doesn't...

I'm sorry i don't have a final solution (that's why it contained a '?') but i'm interrested in your progress...

Rozis

getting snapshot from video

Posted: 22 May 2007 21:50
by darthShana
Hi im tring to get snapshot from my webcam through the commandline
vlc -V image --start-time 0 --stop-time 1 --image-out-format jpg --image-out-ratio 24 --image-out-prefix snap test.mpg vlc:quit
that works and gets a snapshot of the video

vlc -V image --start-time 0 --stop-time 1 --image-out-format jpg --image-out-ratio 24 --image-out-prefix snap screen://
that works and gets you a picture of your desktop

vlc -V image --start-time 0 --stop-time 1 --image-out-format jpg --image-out-ratio 24 --image-out-prefix snap dshow:// vdev="Logitech QuickCams / Go" vlc:quit
this does'nt seem to work i can see my web cam being activated but no picture saved. paerhaps my image params are wrong ?

Re: How to create a thumbnail from a video - final solution

Posted: 09 Mar 2011 17:19
by cctvcam
Does anyone know what the updated cmdline is for vlc 1.1.3 as the above don't seem to work. I think the -V is obsolete?

Re: How to create a thumbnail from a video - final solution

Posted: 09 May 2012 01:26
by ComCBoVudLaBa
Hi,

Posting late to this page, but this information is not easy to find around, especially ready-to-use, working command lines.
I spent some time fiddling with the many VLC arguments before finding the right combination.
I provide some basic explanations for those not too familiar with the niceties of Windows command line use.



The below command is certified to work with VLC version 2.x under Windows 7 64 bits - On any 32 bits Windows, simply adjust the VLC.exe path (usually by removing '( x86)'

Make sure to first update the <variables> to suit your context and to double quote any PATH or file name which includes space characters :

"C:\Program Files (x86)\VideoLAN\VLC\vlc.exe" --rate=1 --video-filter=scene --start-time=2 --stop-time=6 --scene-format=png --scene-ratio=24 --snapshot-sequential --scene-path=<OUTPUT_DIR_PATH> --scene-prefix=<PREFIX_> <DIRECTORY_PATH>\<VideoFileName.ext> vlc://quit


This will create 5 sequentially numbered .PNG snapshots from the first five seconds or so of the targeted video (if at 24 images/sec) in the current directory. The files created will have the target video file name as prefix if argument is provided as such.

Change the start-time, stop-time and scene-ratio as needed to create more or fewer images. '--scene-ratio' is the number of images between each snapshot.
'start-time' and 'stop-time' tell how many images you want to create. These will be from image number start-time x scene-ratio to stop-time x scene-ratio.
A snapshot of the first image of the video is always created.

<DIRECTORY_PATH>\ is optional if your source video is in the current directory.
If --scene-path=<OUTPUT_DIR_PATH> is not provided, the snapshots are created in the current user 'My Pictures' folder.



Now if the current directory contains the video you want to process, and you want the snapshots created there too, you can make it all simple with something like the below command :


"C:\Program Files (x86)\VideoLAN\VLC\vlc.exe" --rate=1 --video-filter=scene --start-time=2 --stop-time=6 --scene-format=png --scene-ratio=24 --snapshot-sequential --scene-path="%CD%" --scene-prefix="VideoFileName-" "VideoFileName.ext" vlc://quit



And to make it all even simpler again, if your current directory contains a bunch of videos from which you want to extract snapshots, just use the command below (this will work just as fine if there is just one video) :

Again, make sure to adjust the file filter and other arguments according to your needs. At least, specify the correct extension for your videos if needed (replace the .flv provided here).
This will work as provided if copy/pasted into a command prompt window, but you will have to double any percent '%' sign in the line if you want to use the command in a batch file.

This will create 5 snapshots from the beginning of each video found in the current directory, creating files with the same name as the video, numbered as _00001 etc.
This works OK under Windows, including with directories and filenames which include space characters.


for %i in (*.flv) do if NOT exist "%~ni_*.png" start /WAIT "" "C:\Program Files (x86)\VideoLAN\VLC\vlc.exe" --rate=1 --video-filter=scene --start-time=2 --stop-time=6 --scene-format=png --scene-ratio=24 --snapshot-sequential --scene-path="%CD%" --scene-prefix="%~ni_" "%CD%\%i" vlc://quit


The start /WAIT "" part is necessary so only ONE video will be processed at a time. The empty pair of double quotes after /WAIT is mandatory : it is a required argument for the shell 'start' command.
The if NOT exist "%~ni_*.png" part allows the line to NOT recreate snapshots if any already exist. Remove it if you want to recreate them every time.



Hope this helps some.