搭建管道
1. 命令
摄像头拍摄并显示在显示器上
# mipi摄像头
gst-launch-1.0 v4l2src device=/dev/video0 ! video/x-raw,format=YUY2,width=1920,height=1080 ! waylandsink
# usb摄像头,这个usb输出的是mjpeg格式的图片数据
gst-launch-1.0 v4l2src device=/dev/video3 ! image/jpeg! jpegdec ! waylandsink
- v4l2src: MIPI摄像头使用Linux V4L2的驱动框架,掉用v4l2src插件
- device=/dev/video0: 摄像头在Linux中被注册成/dev/video0
- video/x-raw: 常用于表示未经编码的原始视频数据
- format=YUY2: 摄像头输出的视频流格式为YUY2
- width=1920,height=1080: 摄像头的分辨率为1920x1080
- waylandsink: mipi摄像头使用遵循Wayland协议的weston桌面,因此该插件可以指定摄像头的视频流输出至weston桌面
- image/jpeg: usb摄像头输出的是mjpeg格式的数据
- jpegdec: jpeg解码成x-raw格式的数据提供给界面显示
2. 参数
相机参数
#查看相机映射出来的端口
ls /dev/video*
#查看相机支持的格式及分辨率
v4l2-ctl --list-formats-ext -d /dev/video0
管道参数
- 源元素(Source Element): 起始的元素,为整个管道提供信号。这里我们使用 v4l2src,从摄像头获取原始信息
- 接收元素(Sink Element): 管道的末尾端,只接收信号而不产生信号。这里我们使用 waylandsink,将获取的内容显示在屏幕上
root@xiaomi:~# gst-inspect-1.0 v4l2src
...
Pad Templates:
SRC template: 'src'
Availability: Always
Capabilities:
image/jpeg
video/mpeg
mpegversion: 4
systemstream: false
video/mpeg
mpegversion: { (int)1, (int)2 }
...
video/x-raw
format: { (string)RGB16, (string)BGR, (string)RGB, (string)ABGR, (string)xBGR, (string)RGBA, (string)RGBx, (string)GRAY8, (string)GRAY16_LE, (string)GRAY16_BE, (string)YVU9, (string)YV12, (string)YUY2, (string)YVYU, (string)UYVY, (string)Y42B, (string)Y41B, (string)YUV9, (string)NV12_64Z32, (string)NV24, (string)NV61, (string)NV16, (string)NV21, (string)NV12, (string)I420, (string)ARGB, (string)xRGB, (string)BGRA, (string)BGRx, (string)BGR15, (string)RGB15 }
width: [ 1, 32768 ]
height: [ 1, 32768 ]
framerate: [ 0/1, 2147483647/1 ]
Element has no clocking capabilities.
...
3. rtsp相机
待补充