mirror of
https://github.com/matthew1000/gstreamer-cheat-sheet.git
synced 2024-11-22 00:10:59 +00:00
66 lines
2.1 KiB
Markdown
66 lines
2.1 KiB
Markdown
# Images (GStreamer command-line cheat sheet)
|
||
|
||
Images can be added to video.
|
||
In addition, video can be converted into images.
|
||
This page looks at both types.
|
||
|
||
## Including images in video
|
||
|
||
Gstreamer can show images on video using the `imagefreeze` element.
|
||
|
||
|
||
### Create a video from an image
|
||
|
||
![Example imagefreeze single image](images/imagefreeze_single.png "Example imagefreeze single image")
|
||
|
||
|
||
```
|
||
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
|
||
```
|
||
|
||
### Create a video from multiple images
|
||
|
||
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.
|
||
```
|
||
|
||
## Capturing video output as images
|
||
|
||
### Capture an image as PNG
|
||
|
||
The `pngenc` element can create a single PNG:
|
||
|
||
```
|
||
gst-launch-1.0 videotestsrc ! pngenc ! filesink location=foo.png
|
||
```
|
||
|
||
### Capture an image as JPEG
|
||
|
||
The `jpegenc` element can create a single JPEG:
|
||
|
||
```
|
||
gst-launch-1.0 videotestsrc ! jpegenc ! filesink location=foo.jpg
|
||
```
|
||
|
||
### Capturing images every X seconds
|
||
|
||
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
|
||
```
|