

Let's tidy up this thumbnail by substituting the placeholder title with the actual title, uppercasing this title, changing the font to "Open Sans" and moving the duration box to the bottom-right corner. Writing a Bash Script for Generating Thumbnail # Note: Alternatively, you could get the video's duration via the ffprobe command. To set the background color of this box, provide the boxcolor parameter. To place the duration within a box, provide the box parameter and set it to 1 to enable it. Here, we use two drawtext filters to modify the input media: one for writing the title text "Test Text" and one for writing the duration "00:00:10". This duration is stored within a variable DURATION so that it can be injected into the text passed to drawtext. We pipe the information outputted by the -i option directly to grep to search for the line containing the text "Duration" and pipe it to cut to extract the duration (i.e., 00:00:10 for ten seconds) from this line. Therefore, we must extract the duration from the input's information, which is outputted by the -i option.Ģ>&1 redirects standard error ( 2 for stderr) to standard output ( 1 for stdout). Unfortunately, there's no convenient variable like w or tw for accessing the input's duration. This thumbnail image will be a JPEG file. Let's test the drawtext filter by extracting the thumbnail image from the beginning of the video and writing "Test Text" to the center of this image. To write a piece of text onto the thumbnail image, use the drawtext video filter. Connecting multiple filters forms a directed graph called a filtergraph. When a filter finishes modifying the input media, it outputs the result, and this result is piped to the next available filter as its input. A video filter modifies/transforms the media streaming through it, and it is specified with the -vf option. If the -ss option is not provided to the ffmpeg command, then by default, the frame will be extracted from the 00:00:00.000 ( hour:minute:seconds.milliseconds) timestamp.ĭraw the title and duration onto the thumbnail image via the drawtext video filter. The -ss option ("start timestamp") allows you to pick a timestamp within the video from which to extract the single frame from.

The thumbnail only requires an image of a single frame. To generate a thumbnail from a video with ffmpeg:ĭecide on a frame to extract the thumbnail image from via the -ss and -vframes options.
