Images can be added to video. In addition, video can be converted into images. This page looks at both types.
Gstreamer can show images on video using the imagefreeze
element.
export PIC="https://upload.wikimedia.org/wikipedia/en/thumb/8/80/Wikipedia-logo-v2.svg/263px-Wikipedia-logo-v2.svg.png"
gst-launch-1.0 \
uridecodebin uri=$PIC ! \
imagefreeze ! \
autovideosink
Here's the same image four times, done with the help of compsitor
(a mixer):
gst-launch-1.0 \
compositor name=m sink_1::xpos=263 sink_2::ypos=240 sink_3::xpos=263 sink_3::ypos=240 ! autovideosink \
uridecodebin uri=$PIC ! videoscale ! video/x-raw, width=263, height=240 ! imagefreeze ! m. \
uridecodebin uri=$PIC ! videoscale ! video/x-raw, width=263, height=240 ! imagefreeze ! m. \
uridecodebin uri=$PIC ! videoscale ! video/x-raw, width=263, height=240 ! imagefreeze ! m. \
uridecodebin uri=$PIC ! videoscale ! video/x-raw, width=263, height=240 ! imagefreeze ! m.
The pngenc
element can create a single PNG:
gst-launch-1.0 videotestsrc ! pngenc ! filesink location=foo.png
The jpegenc
element can create a single JPEG:
gst-launch-1.0 videotestsrc ! jpegenc ! filesink location=foo.jpg
This example captures one frame every 3 seconds, and places it in files with the format img00001.jpg
.
It also displays the video (as the tee
command sends the video to both multifilesink
and autovideosink
).
To change the frequency, change the framerate=1/3
.
e.g. framerate=2/1
would capture a frame twice a second.
gst-launch-1.0 -v videotestsrc is-live=true ! clockoverlay font-desc=\"Sans, 48\" ! videoconvert ! videorate ! video/x-raw,framerate=1/3 ! jpegenc ! multifilesink location=file-%02d.jpg