0%

GStreamer中videomixer

GStreamer中videomixer

Videomixer可以接受YUV,ARGB和BGRA视频流。
对于每个请求的接收器,它将比较输入流的几何(画面分辨率)和帧率用来定义输出参数。
实际上输出视频流的参数具有输入视频流中最大的几何(画面分辨率)和最高的帧率。

Videomixer会对色彩空间进行装换

可以在GstVideoMixer2Pad上配置每个输入流的各个参数。

pipeline 例子

1
2
3
4
5
6
7
8
gst-launch-1.0 \
videotestsrc pattern=1 ! \
video/x-raw,format=AYUV,framerate=\(fraction\)10/1,width=100,height=100 ! \
videobox border-alpha=0 top=-70 bottom=-70 right=-220 ! \
videomixer name=mix sink_0::alpha=0.7 sink_1::alpha=0.5 ! \
videoconvert ! xvimagesink \
videotestsrc ! \
video/x-raw,format=AYUV,framerate=\(fraction\)5/1,width=320,height=240 ! mix.

效果说明:

测试视频一是雪花。因为视频一外有一个videobox。

视频二就是后面的背景。

参数说明

  • videotestsrc :测试视频源
  • videobox :视频盒子

videotestsrc

videotestsrc元素用于生成各种格式的测试视频数据。 所产生的视频测试数据可以通过“pattern”属性进行控制。

1
gst-launch-1.0 -v videotestsrc pattern=snow ! video/x-raw,width=1280,height=720 ! autovideosink

通过控制pattern可以控制视频样式:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
GST_VIDEO_TEST_SRC_SMPTE
A standard SMPTE test pattern

GST_VIDEO_TEST_SRC_SNOW
Random noise

GST_VIDEO_TEST_SRC_BLACK
A black image

GST_VIDEO_TEST_SRC_WHITE
A white image

GST_VIDEO_TEST_SRC_RED
A red image

GST_VIDEO_TEST_SRC_GREEN
A green image

GST_VIDEO_TEST_SRC_BLUE
A blue image

GST_VIDEO_TEST_SRC_CHECKERS1
Checkers pattern (1px)

GST_VIDEO_TEST_SRC_CHECKERS2
Checkers pattern (2px)

GST_VIDEO_TEST_SRC_CHECKERS4
Checkers pattern (4px)

GST_VIDEO_TEST_SRC_CHECKERS8
Checkers pattern (8px)

GST_VIDEO_TEST_SRC_CIRCULAR
Circular pattern

GST_VIDEO_TEST_SRC_BLINK
Alternate between black and white

GST_VIDEO_TEST_SRC_SMPTE75
SMPTE test pattern (75% color bars)

GST_VIDEO_TEST_SRC_ZONE_PLATE
Zone plate

GST_VIDEO_TEST_SRC_GAMUT
Gamut checking pattern

GST_VIDEO_TEST_SRC_CHROMA_ZONE_PLATE
Chroma zone plate

GST_VIDEO_TEST_SRC_SOLID
A solid color, defined by the “foreground-color” property

GST_VIDEO_TEST_SRC_BALL
Moving ball

GST_VIDEO_TEST_SRC_SMPTE100
SMPTE test pattern (100% color bars)

GST_VIDEO_TEST_SRC_BAR
Bar with foreground color

GST_VIDEO_TEST_SRC_PINWHEEL
Pinwheel

GST_VIDEO_TEST_SRC_SPOKES
Spokes

GST_VIDEO_TEST_SRC_GRADIENT
Gradient

GST_VIDEO_TEST_SRC_COLORS
All colors

个别样式

  • pattern=gamut

  • pattern=colors

  • pattern=pinwheel

videobox

此插件裁剪或放大图像。它需要4个值作为输入,顶部,底部,左侧和右侧偏移量。正值将从图像的相应边框裁剪出许多像素,负值将添加很多像素。添加像素时,可以指定其颜色。一些预定义的颜色可用于枚举属性。

该插件是可以设置Alpha通道的。当alpha通道处于活动状态时,可以使用alpha和border_alpha来分别设置内部图片和边框的alpha值。 alpha值为0.0表示总透明度,1.0是不透明的。

视频盒插件有许多用途,如做马赛克的图片,信箱视频(就是所说的宽屏幕视频),剪辑视频,画中画等。

将autocrop设置为true会更改插件的行为,以便帽子确定裁剪属性而不是其他方式:给定的输入和输出尺寸,裁剪值被选中,以便较小的框架在较大的框架中有效居中。这涉及裁剪或填充。

如果您使用自动裁剪,手动设置其他属性将不会有任何意义,因为如果大小更改会覆盖其他属性,但没有任何操作可以阻止您执行此操作。

pipeline 例子

1
gst-launch-1.0   videotestsrc pattern=1 !   video/x-raw,format=AYUV,framerate=\(fraction\)10/1,width=100,height=100 !   videobox border-alpha=1 top=-20 bottom=-20 right=-220 !   videoconvert ! xvimagesink

1
gst-launch-1.0   videotestsrc pattern=1 !   video/x-raw,format=AYUV,framerate=\(fraction\)10/1,width=100,height=100 !   videobox border-alpha=1 top=-70 bottom=-50 right=-220 !   videoconvert ! xvimagesink

对比:

通过对比可以看到参数的意义。