目录

V4L2

编译

获取摄像头信息

列出设备节点

列出某个节点的属性参数

捕获图像和视频

像素格式

YUYV图像格式

图像大小

7yuv

MPP压缩测试

交叉编译配置

压缩测试

格瑞克

采集视频命令

命令参数

编解码信息


两个命令工具分别侧重不同功能,v4l2主要用于视频采集; gstreamer则像个管家,整合所有组件完成某项功能。

V4L2

编译

1)  在下面链接选择相应版本:

索引 /downloads/v4l-utils

2) 解压压缩包,cd v4l-utils   设置平台GCC

export PATH=/home/rockchip/prebuilts/gcc/linux-x86/aarch64/gcc-linaro-6.3.1-2017.05-x86_64_aarch64-linux-gnu//bin:$PATH

导出PKG_CONFIG_LIBDIR=/home/rockchip/prebuilts/gcc/linux-x86/aarch64/gcc-linaro-6.3.1-2017.05-x86_64_aarch64-linux-gnu/lib

 3) –with-udevdir参数设置目录,避免使用目录/lib/udev权限问题

./configure --host=aarch64-linux-gnu --prefix=/home/rockchip/v4l2/src/out --with-udevdir=/home/rockchip/v4l2/src/out

进行安装

customer@ubuntu:~/200/v4l-utils-1.20.0/out/bin$ file v4l2-ctl

获取摄像头信息

列出设备节点

./v4l2-ctl --list-devices

电脑摄像头 (1.1):

/dev/media1

rkisp1-statistics(平台:rkisp1):

/dev/video4

/dev/video5

rkisp1_mainpath (平台:ffb50000.rkisp1):

/dev/video0

/dev/video1

/dev/video2

/dev/video3

rkisp1 (platform:rkisp1):

/dev/media0

电脑摄像头 (usb-ffd80000.usb-1.1):

/dev/video6

/dev/video7

列出某个节点的属性参数

[root@rk1808:~]#./v4l2-ctl -d /dev/video6 --all

司机信息:

驱动程序名称 : uvcvideo

卡类型 : 电脑摄像头

总线信息 : usb-ffd80000.usb-1.1

驱动程序版本 : 4.4.194

能力:0x84a00001

Video Capture

Metadata Capture

Streaming

Extended Pix Format

Device Capabilities

Device Caps : 0x04200001

Video Capture

Streaming

Extended Pix Format

Media Driver Info:

Driver name : uvcvideo

Model : PC Cam

Serial :

Bus info : 1.1

Media version : 0.1.0

Hardware revision: 0x00000007 (7)

Driver version : 4.4.194

Entity Info:

ID : 1

Name : PC Cam

Type : V4L2 I/O

Flags : default

Major : 81

Minor : 8

Pad : 0: Sink

Priority: 2

Video input : 0 (Camera 1: ok)

Format Video Capture:  (视频格式,在采用命令捕获时,需要和此视频格式保持一致)

Width/Height : 640/480

Pixel Format : 'YUYV' (YUYV 4:2:2)

Field : None

Bytes per Line : 1280

Size Image : 614400

Colorspace : sRGB

Transfer Function : Default (maps to sRGB)

YCbCr/HSV Encoding: Default (maps to ITU-R 601)

Quantization : Default (maps to Limited Range)

Flags :

Crop Capability Video Capture:  (裁剪能力)

Bounds : Left 0, Top 0, Width 640, Height 480

Default : Left 0, Top 0, Width 640, Height 480

Pixel Aspect: 1/1

Selection Video Capture: crop_default, Left 0, Top 0, Width 640, Height 480, Flags:

Selection Video Capture: crop_bounds, Left 0, Top 0, Width 640, Height 480, Flags:

Streaming Parameters Video Capture:

Capabilities : timeperframe     (帧率设置,此处设置帧率后,对后续采集的视频帧率有影响)

Frames per second: invalid (1/0)

Read buffers : 0

brightness 0x00980900 (int) : min=0 max=255 step=1 default=120 value=120

contrast 0x00980901 (int) : min=0 max=127 step=1 default=23 value=23

saturation 0x00980902 (int) : min=0 max=127 step=1 default=32 value=32

hue 0x00980903 (int) : min=-15 max=15 step=1 default=3 value=3

white_balance_temperature_auto 0x0098090c (bool) : default=1 value=1

gamma 0x00980910 (int) : min=1 max=10 step=1 default=8 value=8

gain 0x00980913 (int) : min=0 max=9 step=1 default=2 value=2

power_line_frequency 0x00980918 (menu) : min=0 max=2 default=2 value=2 (60 Hz)

0: Disabled

1: 50 Hz

2: 60 Hz

white_balance_temperature 0x0098091a (int) : min=2800 max=6500 step=1 default=5000 value=5000 flags=inactive

sharpness 0x0098091b (int) : min=0 max=15 step=1 default=1 value=1

backlight_compensation 0x0098091c (int) : min=0 max=1 step=1 default=0 value=0

exposure_auto_priority 0x009a0903 (bool) : default=0 value=1

捕获图像和视频

1) ./v4l2-ctl -d /dev/video6 \--set-fmt-video=width=640,height=480,pixelformat=NV12 \--stream-mmap=3 \--stream-skip=3 \--stream-to=/tmp/cif.out \--stream-count=1 \--stream-poll

The pixelformat 'NV12' is invalid

ount=1 \--stream-poll

2) ./v4l2-ctl -d /dev/video6 \--set-fmt-video=width=640,height=480,pixelformat=YUYV \--stream-mmap=3 \--stream-skip=3 \--stream-to=/tmp/cif.out \--stream-count=1 \--stream-poll

根据前面的查询命令,只有YUYV格式被支持。

将此命令的  stream-count 修改为100等,则捕获stream-count数目的帧视频。

pixel format

单独拎出来,作为一节,因为这是摄像头支持格式,也是视频的入口。

例如下图某摄像头支持的格式比我们上面列举的仅支持YUYV的更丰富。

包括支持的分辨率,帧率等。

V4L2_PIX_FMT_MJPEG采集方式得到的是经过MJPEG压缩的图片,图片格式是jpeg/jpg,后缀为.jpg或.jpeg。直接将采集到的.jpeg数据依序循环写入一个文件,得到的流并不能直接播放,需要封装成avi等视频格式才能正常播放。

V4L2_PIX_FMT_YUYV采集方式得到的是yuyv格式的原始图像格式文件,后缀为.yuv,得到的yuv数据文件可直接利用pYUV等专业yuv格式查看器进行播放,yuv数据可经HEVC(H265)、H264、VP8、VP9等方式进行编码压缩,通过h.264压缩可得到h264码流,H264码流可直接用VLC播放器进行播放。

MJPEG 为压缩格式,因而其在1080P时,依然有30fps;而YUYV为原始图像,1080P仅支持5fps了

YUYV图像格式

上述采集了yuyv的图像或者视频,那么怎么查看是个问题,以及大小怎么计算?

图像大小

7yuv

MPP压缩测试

sdk中存在mpp测试用例

交叉编译配置

压缩测试

./mpi_enc_test -w 640 -h 480 -t 7 -i /tmp/cif.out -o /tmp/out_f8.h264 -n 100 -f 8

-f  参数指定了输入的视频格式,此处为8,即YUYV。如果不指定,则压缩出的视频不能播放

-f 各个格式的含义:

mpp[1055]: mpi: mpp color support list:
mpp[1055]: mpi: color: id 0          0x00000 YUV420SP,          NV12
mpp[1055]: mpi: color: id 1          0x00001 YUV420SP-10bit
mpp[1055]: mpi: color: id 2          0x00002 YUV422SP,          NV24
mpp[1055]: mpi: color: id 3          0x00003 YUV422SP-10bit
mpp[1055]: mpi: color: id 4          0x00004 YUV420P,          I420
mpp[1055]: mpi: color: id 5          0x00005 YUV420SP,          NV21
mpp[1055]: mpi: color: id 6          0x00006 YUV422P,          422P
mpp[1055]: mpi: color: id 7          0x00007 YUV422SP,          NV42
mpp[1055]: mpi: color: id 8          0x00008 YUV422-YUYV,          YUY2
mpp[1055]: mpi: color: id 10          0x0000a YUV422-UYVY,          UYVY
mpp[1055]: mpi: color: id 12          0x0000c YUV400-Y8,          Y800
mpp[1055]: mpi: color: id 65536 0x10000 RGB565
mpp[1055]: mpi: color: id 65537 0x10001 BGR565
mpp[1055]: mpi: color: id 65538 0x10002 RGB555
mpp[1055]: mpi: color: id 65539 0x10003 BGR555
mpp[1055]: mpi: color: id 65542 0x10006 RGB888
mpp[1055]: mpi: color: id 65543 0x10007 BGR888
mpp[1055]: mpi: color: id 65546 0x1000a ARGB8888
mpp[1055]: mpi: color: id 65547 0x1000b ABGR8888
mpp[1055]: mpi: color: id 65548 0x1000c BGRA8888
mpp[1055]: mpi: color: id 65549 0x1000d RGBA8888

压缩时间

​​​​​​​time ./mpi_enc_test -w 640 -h 480 -t 7 -i /tmp/cif.out -o /tmp/out_f8.h264 -n 100 -f 8

时间信息为:

gstreamer

借用瑞芯微的一张图示

采集视频命令

 gst-launch-1.0 v4l2src device=/dev/video6 num-buffers=100 ! videoconvert !video/x-raw,format=NV12,width=640,height=480 ! queue ! mpph264enc ! queue ! h264parse ! qtmux ! filesink location=/tmp/uvc_h264.mp4

命令参数

元素

v4l2src

device=/dev/video6

num-buffers=100

! videoconvert

!video/x-raw,format=NV12,width=640,height=480

! queue ! mpph264enc

! queue ! h264parse

! qtmux

! filesink location=/tmp/uvc_h264.mp4

编解码信息

通过上述命令,压缩出的视频编解码信息如下,此处的帧率来源于哪里

v4l2及gstreamer使用指南相关推荐

  1. gstreamer插件开发指南(一)

    翻译自:https://gstreamer.freedesktop.org/documentation/plugin-development/index.html 1 简介 GStreamer是一个非 ...

  2. 当V4L2遇上Gstreamer

    v4l2和gstreamer,这两个优秀框架走到一起,会碰撞出什么样的火花呢?就让我我来做一回月老吧. 1.视频采集,预览. 基于(ximagesink/xvimagesink/glimagesink ...

  3. Gstreamer应用开发实战指南(二)

    一.​什么是GStreamer? GStreamer 是一个用于创建流媒体应用程序的框架.基本设计来自俄勒冈研究生院的视频管道,以及DirectShow的一些想法. GStreamer的开发框架可以编 ...

  4. 【正点原子Linux连载】第二十章 V4L2摄像头应用编程-摘自【正点原子】I.MX6U嵌入式Linux C应用编程指南V1.1

    1)实验平台:正点原子阿尔法Linux开发板 2)平台购买地址:https://item.taobao.com/item.htm?id=603672744434 2)全套实验源码+手册+视频下载地址: ...

  5. 多平台Gstreamer Multiplatform

    多平台Gstreamer Multiplatform GStreamer可在所有主要操作系统上运行,例如Linux,Android,Windows,Max OS X,iOS,以及大多数BSD,商业Un ...

  6. GStreamer 1.18.4稳定的错误修复版本

    GStreamer 1.18.4稳定的错误修复版本 GStreamer团队宣布最喜欢的跨平台多媒体框架的稳定的1.18版本系列中的另一个错误修复版本! 此版本仅包含错误修复和重要的安全修复程序,并且从 ...

  7. GStreamer跨平台多媒体框架

    GStreamer跨平台多媒体框架 Gstreamer基本概念 GStreamer是用于构造媒体处理组件图的库.它支持的应用程序范围从简单的Ogg / Vorbis回放,音频/视频流到复杂的音频(混合 ...

  8. GStreamer 1.0 series序列示例

    GStreamer 1.0 series序列示例 OpenEmbedded layer for GStreamer 1.0 这layer层为GStreamer 1.0框架提供了非官方的支持,用于Ope ...

  9. 用 GStreamer 简化 Linux 多媒体开发

    GStreamer 是 GNOME 桌面环境下用来构建流媒体应用的编程框架(framework),其目标是要简化音/视频应用程序的开发,目前已经能够被用来处理像 MP3.Ogg.MPEG1.MPEG2 ...

最新文章

  1. Docker的使用(docker pull拉取镜像失败问题解决)
  2. 【iCore4 双核心板_ARM】例程五:SYSTICK定时器 实验——定时点亮LED
  3. 关于抢红包的_抢红包系统设计与设计
  4. matlab为自定义后缀文件设置图标_【V3.0更新】| 这可能是全网最好用的文件管理神器了......
  5. Oracle 数据怎么实时同步到 MongoDB | 亲测干货分享建议收藏
  6. 神州数码否认买下华为荣耀,股价连续第二日涨停,创历史新高!
  7. paip.提升用户体验---业务SQL注入漏洞的分析与解决
  8. 设计模式之中介者模式
  9. # 2021-03-04 文件搜索命令 find
  10. 在家佛弟子对待工作的态度——世俗八正道
  11. Opencv人脸识别之发送QQ邮箱
  12. python聚类系数_NetworkX 计算聚类系数的Python实现
  13. 搜狐狐友搅局社交;小米手环4发布;2019互联网趋势报告发布;Python火爆依旧...
  14. 安装thrift错误的处理方法
  15. vyos my_cli_shell_api 不见了
  16. 虹科小课堂|密度测量,你了解多少?
  17. ios和android耗电,安卓手机为什么比苹果手机更耗电?
  18. OF1.7中的p_rgh【翻译】
  19. 汇编语言的应用(用途)
  20. Python爬虫入门(一)火车票余票实时提醒

热门文章

  1. 空指针-Base on windows Writeup -- 最新版DZ3.4实战渗透
  2. 龙芯3a5000下编译redis 7.0源码
  3. 一首《轨迹》,再一曲《搁浅》,满满的的回忆
  4. Delphi写游戏外挂
  5. html+css 基础知识大总结
  6. Flare Network,跨越互操作性三难困境
  7. java jsqlparse_SQL解析器 JSqlParser
  8. 湖南计算机大专分数线多少,湖南多少分能上大专,湖南大专院校最低分数线
  9. html获取页面点击事件吗,jquery 获取页面点击事件 $(body).click()
  10. 流动模型、物质导数与速度散度的物理意义