Skip to content

树莓派摄像头模块

本文档描述了截至 2020 年 4 月 30 日的四种树莓派相机应用程序的使用。

提供了四个应用程序:" raspistill"," raspivid"," raspiyuv"和" raspividyuv"。 " raspistill"和" raspiyuv"非常相似,用于捕获图像。 raspivid和 raspvidyuv 用于捕获视频。

所有应用程序都从命令行驱动,并编写为利用在 OpenMAX 上运行的 MMAL API的优势。与 OpenMAX 相比,MMAL API提供了更易于使用的系统。请注意,MMAL是仅在 VideoCore 4系统上使用的 Broadcom 专用 API 。

这些应用程序最多使用四个 OpenMAX (MMAL)组件:摄像机,预览,编码器和 null _sink。所有应用程序都使用相机组件。 raspistill使用图像编码组件; raspivid使用视频编码组件;和raspiyuvraspividyuv不使用编码器,而是将它们的 YUV 或 RGB 输出直接从相机组件发送到文件。

预览显示是可选的,但可以全屏使用,也可以定向到显示上的特定矩形区域。如果禁用了预览,则 null _sink组件用于"吸收"预览帧。即使不需要显示预览框,相机也必须产生预览框,因为它们用于计算曝光和白平衡设置。

另外,可以省略 filename 选项(在这种情况下显示预览,但不写入文件),或将所有输出重定向到 stdout 。

通过在命令行中仅键入应用程序名称,可以使用命令行帮助。

配置

请参阅相机设置

故障排除

如果摄像头模块无法正常工作,请尝试以下操作:

  • 带状电缆是否连接到相机串行接口(CSI),而不是显示串行接口(DSI)?带状连接器将适合任一端口。相机端口位于 HDMI 接口附近。

  • 带状连接器是否都牢固固定,并且绕线正确吗?它们必须在插槽中笔直。

  • 较小的黑色摄像头模块本身和 PCB 之间的摄像头模块连接器是否牢固连接?有时,在运输过程中或将相机模块放入盒中时,此连接可能会松动。用指甲将 PCB 上的连接器向上翻转,然后用轻轻的压力将其重新连接。只需轻轻一点就可以进行。不要强迫它;如果没有啮合,则可能是稍微未对准。

  • 是否已运行 sudo apt update和 sudo apt full-upgrade?

  • 是否运行过" raspi-config"并启用了摄像头模块?

  • 您的电源足够吗?摄像头模块为树莓派的电源要求增加了约 200 -250mA。

如果仍然无法解决问题,请尝试以下操作:

  • `错误:找不到 raspistill /raspivid命令。这可能意味着您的更新/升级以某种方式失败。再试一遍。

  • 错误:ENOMEM。摄像头模块未启动。再次检查所有连接。

  • 错误:ENOSPC。相机模块可能已耗尽 GPU 内存。检查/boot /文件夹中的config.txt。 gpu_mem选项至少应为 128 。或者,使用 raspi -config的 Advanced 部分中的 Memory Split选项来设置此项。

  • 如果您已经检查了上述所有问题,但相机模块仍然无法正常工作,请尝试在我们的论坛上发布以获得更多帮助。

常用命令行选项

预览窗口

--preview,-p预览窗口设置<'x,y,w,h'>

允许用户定义预览窗口的大小及其在屏幕上的位置。请注意,这将叠加在任何其他窗口/图形的顶部。

--fullscreen,-f全屏预览模式

强制预览窗口使用整个屏幕。请注意,将保留传入图像的长宽比,因此某些边缘上可能会出现条纹。

--nopreview,-n不显示预览窗口

完全禁用预览窗口。请注意,即使禁用了预览,相机仍会产生帧,因此会消耗电源。

--opacity,-op设置预览窗口的不透明度

设置预览窗口的不透明度。 0 =不可见,255 =完全不透明。

相机控制选项

--sharpness,-sh设置图像清晰度(-100-100)

设置图像的清晰度。默认值为 0 。

--contrast,-co设置图像对比度(-100-100)

设置图像的对比度。默认值为 0 。

--brightness,-br设置图像亮度(0-100)

设置图像的亮度。默认值为 50 。 0是黑色,100是白色。

--saturation,-sa设置图像饱和度(-100-100)

设置图像的色彩饱和度。默认值为 0 。

--ISO,-ISO设置捕获 ISO (100-800)

设置用于捕获的 ISO 。

--vstab,-vs打开视频稳定

仅在视频模式下,打开视频稳定功能。

--ev,-ev设置 EV 补偿(-10-10)

设置图像的 EV 补偿。默认值为 0 。

--exposure,-ex设置曝光模式

可能的选项是:

  • 自动:使用自动曝光模式
  • 夜间:选择夜间拍摄的设置
  • 夜间预览:
  • 背光:选择背光对象的设置
  • 焦点:
  • 运动:选择运动设置(快速快门等)
  • 雪:选择适合雪景的设置
  • 海滩:选择最适合海滩的设置
  • 非常长:选择长时间曝光的设置
  • fixedfps:将 fps 限制为固定值
  • 防抖:防抖模式
  • 烟花:选择最适合烟花的设置

请注意,并非所有这些设置都可以实现,具体取决于相机的调整。

--flicker,-fli设置闪烁避免模式

设置一个模式以补偿以市电频率闪烁的光,该频率可以看作是图像上的暗水平带。避免闪烁将曝光时间锁定为电源闪烁频率的倍数(60Hz为 8 .33ms,50Hz为 10ms )。这意味着图像可能会更嘈杂,因为如果控制算法希望获得中间曝光值,则必须增加增益而不是曝光时间。 auto可能会受到外部因素的干扰,因此最好不要设置此设置,除非实际需要。

可能的选项是:

  • 关闭:关闭避免闪烁
  • 自动:自动检测电源频率
  • 50Hz:将回避设置为 50Hz
  • 60Hz:将回避设置为 60Hz
--awb,-awb设置自动白平衡(AWB)模式

色温范围(K)可用的模式在括号内有这些设置。

  • 关:关闭白平衡计算
  • 自动:自动模式(默认)
  • 太阳:晴天模式(介于 5000K 和 6500K 之间)
  • 云:多云模式(介于 6500K 和 12000K 之间)
  • 阴影:阴影模式
  • 钨:钨灯照明模式(2500K至 3500K 之间)
  • 荧光灯:荧光灯照明模式(2500K至 4500K 之间)
  • 白炽灯:白炽灯照明模式
  • 闪光:闪光模式
  • 地平线:地平线模式
  • greyworld:由于没有红外滤镜,因此在 NoIR 摄像机上使用此功能可以修复错误的 AWB 结果。

请注意,根据相机类型的不同,可能无法实现所有这些设置。

--imxfx,-ifx设置图像效果

设置要应用于图像的效果:

  • 无:无效(默认)
  • 负:反转图像颜色
  • 曝光:将图像曝光
  • 后置:图像后置
  • 白板:白板效果
  • 黑板:黑板效果
  • 素描:素描效果
  • 降噪:对图像进行降噪
  • 浮雕:对图像进行浮雕
  • 油画:油画效果
  • 图案填充:图案填充效果
  • gpen:石墨素描效果
  • 柔和:柔和效果
  • 水彩:水彩效果
  • 胶片:胶片颗粒效果
  • 模糊:模糊图像
  • 饱和度:使图像色彩饱和
  • colourswap:尚未完全实施
  • 淘汰:未完全实施
  • 色点:未完全实施
  • 色彩平衡:未完全实现
  • 卡通:未完全实施

请注意,并非所有这些设置在所有情况下都可用。

--colfx,-cfx设置颜色效果<U:V>

所提供的 U 和 V 参数(范围 0 -255)应用于图像的 U 和 Y 通道。例如,-colfx 128:128应产生单色图像。

--metering,-mm设置测光模式

指定用于预览和捕获的测光模式:

  • 平均:对整个帧进行平均测光
  • 点:点测光
  • 背光:假定为背光图像
  • 矩阵:矩阵计量
--rotation,-rot设置图像旋转(0-359)

设置取景器中图像的旋转度和结果图像。这可以取 0 到 0 之间的任何值,但是由于硬件限制,仅支持 0 、 90 、 180 和 270 度旋转。

--hflip,-hf设置水平翻转

水平翻转预览和保存的图像。

--vflip,-vf设置垂直翻转

垂直翻转预览和保存的图像。

--roi,-roi设置感兴趣的传感器区域

允许将传感器区域的规格用作预览和捕获的源。定义为左上角的 x ,y以及宽度和高度,所有值均位于标准化坐标(0.0-1.0)中。因此,要在传感器上下方向的一半处设置 ROI ,并且将传感器的四分之一的宽度和高度设置为:

- roi 0.5,0.5,0.25,0.25
--shutter,-ss设置快门速度/时间

将快门打开时间设置为指定值(以微秒为单位)。快门速度限制如下:

|相机版本|最大值(微秒)| | ---------------- |:--------------------:| | V1(OV5647)| 6000000(即 6s )| | V2(IMX219)| 10000000(即 10s )| |总部(IMX477)| 200000000(即 200 秒)|

使用高于这些最大值的值将导致不确定的行为。

--drc,-drc启用/禁用动态范围压缩
```DRC通过增加暗区范围并减小亮区来更改图像。这样可以改善弱光区域的图像。
- 关
- 低
- 中
- 高

默认情况下,DRC是关闭的。

--stats,-st使用静止图像捕获帧进行图像统计


强制重新计算静止图像捕获通行证上的统计信息。将基于实际的捕获帧统计信息而不是先前的预览帧重新计算数字增益和 AWB 。

--awbgains,-awbg


设置当设置了-awb off时要应用的蓝色和红色增益(作为浮点数)。 -awbg 1.5,1.2

--analoggain,-ag


直接在传感器上设置模拟增益值(相机模块 V1 上的 OV5647 传感器的浮点值从 1 .0到 8 .0,相机模块 V2 上的 IMX219 传感器和 HQ 相机的 IMX447 的浮点值从 1 .0到 12 .0)。

--digitalgain,-dg


设置 ISP 应用的数字增益值(浮点值从 1 .0到 64 .0,但是超过约 4 .0的值将产生曝光过度的图像)

--mode,-md


设置指定的传感器模式,禁用自动选择。可能的值取决于所用摄像头模块的版本:

版本 1 .x(OV5647)

|模式|尺寸宽高比|帧速率| FOV |装箱|
| ---- | -------------------------- || ------------ | ----- | --- ------ |
| 0 |自动选择| | | | |
| 1 | 1920x1080 | 16:9 | 1-30fps |部分|无|
| 2 | 2592x1944 | 4:3 | 1-15fps |完整|无|
| 3 | 2592x1944 | 4:3 | 0.1666-1fps |完整|无|
| 4 | 1296x972 | 4:3 | 1-42fps |完整| 2x2 |
| 5 | 1296x730 | 16:9 | 1-49fps |完整| 2x2 |
| 6 | 640x480 | 4:3 | 42.1-60fps |完整| 2x2加跳过|
| 7 | 640x480 | 4:3 | 60.1-90fps |完整| 2x2加跳过|

版本 2 .x(IMX219)

|模式|尺寸宽高比|帧速率| FOV |装箱|
| ---- | -------- | -------------- | ------------ | ----- | --- ------ |
| 0 |自动选择| | | | |
| 1 | 1920x1080 | 16:9 | 0.1-30fps |部分|无|
| 2 | 3280x2464 | 4:3 | 0.1-15fps |完整|无|
| 3 | 3280x2464 | 4:3 | 0.1-15fps |完整|无|
| 4 | 1640x1232 | 4:3 | 0.1-40fps | Full | 2x2 |
| 5 | 1640x922 | 16:9 | 0.1-40fps |完整| 2x2 |
| 6 | 1280x720 | 16:9 | 40-90fps | Partial | 2x2 |
| 7 | 640x480 | 4:3 | 40-200fps <sup> 1 </sup> | Partial | 2x2 |

<sup> 1 </sup>对于超过 120fps 的帧速率,必须使用" -ex off"关闭自动曝光和增益控制。这样做可以达到更高的帧速率,但是需要将曝光时间和增益设置为用户提供的固定值。

总部摄像机

|模式|尺寸宽高比|帧速率| FOV |分档/缩放
| ---- | -------- | -------------- | ------------ | ----- | --- ------ |
| 0 |自动选择| | | | |
| 1 | 2028x1080 | 169:90 | 0.1-50fps |部分| 2x2合并|
| 2 | 2028x1520 | 4:3 | 0.1-50fps | Full | 2x2 bin |
| 3 | 4056x3040 | 4:3 | 0.005-10fps |完整|无|
| 4 | 1012x760 | 4:3 | 50.1-120fps |完整| 4x4缩放|

--camselect,-cs

选择在多相机系统上使用的相机。使用 0 或 1 。


--annotate,-a启用/设置注释标志或文本

在图片中添加一些文本和/或元数据。

元数据使用位掩码表示法指示,因此将它们加在一起以显示多个参数。例如,由于 4  + 8 = 12,因此 12 将显示 time (4)和 date (8)。

文本可以使用'%'字符来包括日期/时间占位符,如<a title =" strftime手册页" href =" http://man7.org/linux/man-pages/man3/strftime.3所使用的。 html"> strftime </a>。

|值|含义|输出示例
| ----- | --------- | ---------------- |
| -a 4 |时间| 20:09:33 |
| -a 8 |日期| 10/28/15 |
| -a 12 | 4 + 8 = 12显示日期(4)和时间(8)| 20:09:33 10/28/15 |
| -a 16 |快门设置| |
| -a 32 | CAF设置| |
| -a 64 |增益设置| |
| -a 128 |镜头设置| |
| -a 256 |运动设置| |
| -a 512 |帧号| |
| -a 1024 |黑色背景| |
| -a" ABC%Y-%m-%d%X" |显示一些文字| ABC%Y-%m-%d%X |
| -a 4 -a" ABC%Y-%m-%d%X" |显示自定义<a title =" strftime手册页" href =" http://man7.org/linux/man-pages/man3/strftime.3.html">格式化</a>日期/时间| ABC 2015-10-28 20:09:33 |
| -a 8 -a" ABC%Y-%m-%d%X" |显示自定义<a title =" strftime手册页" href =" http://man7.org/linux/man-pages/man3/strftime.3.html">格式化</a>日期/时间| ABC 2015-10-28 20:09:33 |

--annotateex,-ae设置额外的注释参数


指定注释大小,文本颜色和背景颜色。颜色为十六进制 YUV 格式。

大小范围为 6 -160;默认值为 32 。询问无效尺寸应为您提供默认值。

|示例|说明|
| ------- | ----------- ||
| -ae 32,0xff,0x808000 -a"注释文本" |在黑色背景上给出大小为 32 的白色文本|
| -ae 10,0x00,0x8080FF -a"注释文本" |将白色背景上的黑色文本大小设置为 10  |

--stereo,-3d


选择指定的立体成像模式; `sbs`选择并排模式,`tb`选择顶部/底部模式; " off"关闭立体声模式(默认)。

--decimate,-dec

将立体图像的宽度和高度减半。

--3dswap,-3dswap

交换用于立体成像的相机命令;注意:当前无法正常工作。

  • 设置
检索当前的相机设置并将其写入标准输出。


## 特定于应用程序的设置

### raspistill

```--width,-w设置图像宽度<大小>
--height,-h设置图像高度<大小>

--quality,-q设置 JPEG 质量<0到 100 >

Quality 100几乎完全未压缩。 75是一个很好的综合价值。

--raw,-r将原始拜耳数据添加到 JPEG 元数据

此选项将来自摄像机的原始拜耳数据插入 JPEG 元数据。

--output,-o输出文件名<文件名>

指定输出文件名。如果未指定,则不保存文件。如果文件名是"-",则所有输出都将发送到 stdout 。

--latest -l将最新的框架链接到文件名<文件名>

使用此名称将文件系统链接到最新的框架。

--verbose,-v运行期间输出详细信息

在程序运行期间输出调试/信息消息。

--timeout,-t相机拍照并关闭之前的时间

程序将运行指定的时间长度(以毫秒为单位)。然后,如果指定了输出,它将捕获并保存它。如果未指定超时值,则将其设置为 5 秒(-t 5000)。请注意,低值(小于 500ms ,尽管它可能取决于其他设置)可能无法给相机足够的时间来启动,也无法为自动算法(如 AWB 和 AGC )提供足够的帧来提供准确的结果。

如果设置为 0 ,则预览将无限期运行,直到使用 CTRL -C停止。在这种情况下,不会进行捕获。

--timelapse,-tl延时模式

特定值是两次射击之间的时间(以毫秒为单位)。请注意,您应该在文件名中希望显示帧计数编号的位置指定%04d。因此,例如,下面的代码将在 30 秒的总时间内每 2 秒捕获一次,分别名为" image0001.jpg"," image0002.jpg"等,直到" image0015.jpg"。

- t 30000 -tl 2000 -o image%04d.jpg

请注意,"%04d"表示 4 位数字,并添加前导零以形成所需的数字位数。因此,例如,"%08d"将导致一个 8 位数字。

如果将延时值输入 0 ,则应用程序将尽快拍摄照片。请注意,每次捕获之间至少有 30ms 的强制暂停时间,以确保可以进行曝光计算。

--framestart,-fs

指定间隔中的第一个帧号。如果您已经保存了许多帧,并且想在下一帧重新开始,则很有用。

--datetime,-dt

游戏中时光倒流的文件名将使用格式为" aabbccddee"的日期/时间值代替简单的帧号,其中" aa"是月份," bb"是月份," cc"是小时,分钟是 dd ,秒是 ee 。

--timestamp,-ts

间隔文件名称将使用一个单一的数字而不是简单的帧号,该数字是 Unix 时间戳,即 1970 年以来的秒数。

--thumb,-th设置缩略图参数(x:y:quality)

允许指定插入 JPEG 文件的缩略图的规格。如果未指定,默认值为质量 35 时 64x48 。

如果指定了" --thumb none",则不会在文件中放置任何缩略图信息。这样会稍微减小文件大小。

--demo,-d运行演示模式<毫秒>

此选项在照相机选项范围内循环。无论是否已循环使用所有选项,都不会捕获任何内容,并且该演示将在超时期限结束时结束。周期之间的时间应指定为毫秒值。

--encoding,-e用于输出文件的编码

有效选项为 jpg ,bmp,gif和 png 。请注意,未加速的图像类型(GIF,PNG,BMP)保存时间要比 jpg (要硬件加速的)更长。还要注意,在决定文件的编码时,文件名后缀将被完全忽略。

--restart,-rs

将 JPEG 重新启动标记间隔设置为特定值。对于有损的传输流很有用,因为它允许破碎的 JPEG 文件仍然部分显示。

--exif,-x EXIF标记以应用于捕获(格式为"键=值")

允许将特定的 EXIF 标签插入 JPEG 图像。您最多可以有 32 个 EXIF 标记条目。这对于添加 GPS 元数据之类的任务很有用。例如,设置经度:

--exif GPS.GPSLongitude = 5/1,10/1,15/1

将经度设置为 5 度 10 分钟 15 秒。有关可用标签范围的更多详细信息,请参见 EXIF 文档。支持的标签如下:

IFD0。<或
IFD1。<
ImageWidth,ImageLength,BitsPerSample,压缩,PhotometricInterpretation,ImageDescription,Make,Model,StripOffsets,Orientation,SamplesPerPixel,RowsPerString,StripByteCounts,XResolution,YResolution,PlanarConfiguration,ResolutionUnit,TransferFunction,Software,DateTime,Artist,WhitePoint,PrimaryChromaticthity,JPEGInterchange YCbCrCoefficients,YCbCrSubSampling,YCbCrPositioning,ReferenceBlackWhite,版权>

EXIF。<ExposureTime,FNumber,ExposureProgram,SpectralSensitivity,ISOSpeedRatings,OECF,ExifVersion,DateTimeOriginal,DateTimeDigitized,ComponentsConfiguration,CompressedBitsPerPixel,ShutterSpeedValue,ApertureValue,BrightnessValue,ExposureBiasValue,MaxApertureValue,SubjectDistanceTime,SubsingmentA,NotesFreas, SubSecTimeOriginal,SubSecTimeDigitized,FlashpixVersion,ColorSpace,PixelXDimension,PixelYDimension,RelatedSoundFile,FlashEnergy,SpatialFrequencyResponse,FocalPlaneXResolution,FocalPlaneYResolution,FocalPlaneResolutionUnit,SubjectLocation,ExposureIndex,Sensing方法,FileSource,SceneType,CentreType,CentreType,CentreType,对比度,饱和度,清晰度,DeviceSettingDescription,SubjectDistanceRange,ImageUniqueID>
GPS <
GPSVersionID,GPSLatitudeRef,GPSLatitude,GPSLongitudeRef,GPSLongitude,GPSAltitudeRef,GPSAltitude,GPSTimeStamp,GPSSatellites,GPSStatus,GPSMeasureMode,GPSDOP,GPSSpeedRef,GPSSpeed,GPSTrackRef,GPSTrack,GPSImgDirectionRef,GPSImgDirection,GPSMapDatum,GPSDestLtitudeRef,GPSDestLitudeRef, GPSDestDistanceRef,GPSDestDistance,GPSProcessingMethod,GPSAreaInformation,GPSDateStamp,GPSDifferential>

EINT。<
InteroperabilityIndex,InteroperabilityVersion,RelatedImageFileFormat,RelatedImageWidth,RelatedImageLength>

请注意,这些标签的一小部分将由相机系统自动设置,但将被命令行上的任何 EXIF 选项覆盖。

设置" --exif none"将阻止任何 EXIF 信息存储在文件中。这样会稍微减小文件大小。

--gpsdexif,-gps

将来自任何连接的 GPS 加密狗(使用 GSPD )的实时 EXIF 信息应用于图像;需要安装" libgps.so"。

--fullpreview,-fp完整预览模式

这将使用全分辨率捕获模式运行预览窗口。在此模式下,每秒最大帧数为 15fps ,并且预览将具有与捕获相同的视野。捕获应该更快地进行,因为不需要更改模式。此功能目前正在开发中。

--keypress,-k按键模式

摄像机在要求的时间(-t)中运行,并且可以在整个时间内通过按 Enter 键启动捕获。按 X 然后按 Enter 将在达到超时之前退出应用程序。如果超时设置为 0 ,则摄像机将无限期运行,直到用户按 X 再按 Enter 。使用详细选项(-v)将显示要求用户输入的提示,否则不显示提示。

--signal,-s信号模式

摄像机在请求的时间(-t)内运行,并且可以在整个时间范围内通过向摄像机进程发送" USR1"信号来启动捕获。这可以使用kill命令来完成。您可以使用 pgrep raspistill命令找到相机进程 ID 。

kill -USR1 <raspistill的进程 ID >

- 爆裂-bm

设置突发捕捉模式。这样可以防止相机在两次拍摄之间返回预览模式,这意味着可以将拍摄更加靠近。

raspiyuv

" raspiyuv"的许多选项与" raspistill"的那些选项相同。本节显示了差异。

不支持的选项:

--exif,--encoding,--thumb,--raw,--quality

额外选项:

--rgb,-rgb将未压缩的数据另存为 RGB888 

此选项强制将图像保存为每通道 8 位的 RGB 数据,而不是 YUV420 。

注意,保存在" raspiyuv"中的图像缓冲区被填充为水平大小,可被 32 整除,因此每行末尾可能有未使用的字节。缓冲区也被垂直填充以被 16 整除,并且在 YUV 模式下,以这种方式填充 Y ,U,V的每个平面。

--luma,-y

仅输出 YUV 图像的亮度(Y)通道。这实际上是图像的黑白或强度部分。

--bgr,-bgr

将图像数据另存为 BGR 数据而不是 YUV 。

raspivid

--width,-w设置图像宽度<大小>

产生的视频的宽度。这应该在 64 到 1920 之间。

--height,-h设置图像高度<大小>

生成视频的高度。该值应介于 64 和 1080 之间。

--bitrate,-b设置比特率

使用每秒的位数,因此 10Mbit /s将是-b 10000000。对于 H264 、 1080p30 ,高质量比特率应为 15Mbits /s或更高。最大比特率是 25Mbits /s(-b 25000000),但是在 1080p30 分辨率下,超过 17Mbits /s的速度不会有明显改善。

--output,-o输出文件名<文件名>

指定输出文件名。如果未指定,则不保存文件。如果文件名是"-",则所有输出都将发送到 stdout 。

要连接到远程 IPv4 主机,请使用" tcp"或" udp",后跟所需的 IP 地址。例如 tcp ://192.168.1.2:1234或 udp ://192.168.1.2:1234。要监听 TCP 端口(IPv4)并等待传入​​连接,请使用--listen(-l)选项,例如" raspivid -l -o tcp://0.0.0.0:3333"将绑定到所有网络接口," raspivid -l -o tcp://192.168.1.1:3333"将绑定到本地 IPv4 。

--listen,-l

当使用网络连接作为数据接收器时,此选项将使系统在发送数据之前等待来自远程系统的连接。

--verbose,-v运行期间输出详细信息

在程序运行期间输出调试/信息消息。

--timeout,-t相机拍照并关闭之前的时间

程序将运行的总时间长度。如果未指定,则默认值为 5000ms (5秒)。如果设置为 0 ,则应用程序将无限期运行,直到使用 Ctrl -C停止。

--demo,-d运行演示模式<毫秒>

此选项在照相机选项范围内循环。不进行任何记录,并且演示将在超时周期结束时结束,而不管所有选项是否都已循环。周期之间的时间应指定为毫秒值。

--framerate,-fps指定每秒记录的帧数

目前,允许的最小帧速率为 2fps ,最大为 30fps 。将来这可能会改变。

--penc,-e编码后显示预览图像

打开一个选项以在压缩后显示预览。这将在预览窗口中显示所有压缩伪影。在正常操作中,预览将在压缩之前显示摄像机的输出。不能保证此选项在将来的版本中都能使用。

--intra,-g指定帧内刷新周期(关键帧速率/GoP)

设置录制视频的帧内刷新周期(GoP)速率。 H264视频在每个内部刷新周期内使用完整的帧(I帧),后续帧是该帧的基础。此选项指定每个 I 帧之间的帧数。此处较大的数字将减小所得视频的大小,而较小的数字将使流不太容易出错。

--qp,-qp设置量化参数

设置流的初始量化参数。从大约 10 到 40 不等,这将极大地影响录制质量。较高的值会降低质量并减小文件大小。将此设置与 0 的比特率结合使用以设置完全可变的比特率。

--profile,-pf指定用于编码的 H264 配置文件

设置要用于编码的 H264 配置文件。选项有:

  • 基线
  • 主要
--level,-lev

指定用于编码的 H264 编码器级别。选项为" 4"," 4.1"和" 4.2"。

--irefresh,-如果

设置 H264 内刷新类型。可能的选项是"循环","自适应","两者"和"循环行"。

--inline,-ih插入 PPS ,SPS标头

强制流在每个 I 帧上包括 PPS 和 SPS 标头。在某些流情况下需要苹果 HLS 。这些标头很小,因此不要大大增加文件大小。

--spstimings,-stm

将时序信息插入 SPS 块。

--timed,-td在捕获和暂停之间进行定时切换

此选项允许在特定时间间隔暂停和重新开始视频捕获。需要两个值:开启时间和关闭时间。开启时间是视频被捕获的时间,关闭时间是视频被暂停的时间。录制的总时间由"超时"选项定义。请注意,根据开启和关闭时间的不同,录制可能会稍微超过超时设置。

例如:

raspivid -o test.h264 -t 25000-定时 2500 ,5000

将记录 25 秒。记录将在一个由 2500ms (2.5s)段组成的时间范围内进行,间隔为 5000ms (5s),并在 20s 内重复。因此整个记录实际上只有 10s 长,因为 4 个 2 .5s = 10s的片段之间有 5s 的间隔。所以:

2.5记录– 5停顿– 2.5记录– 5停顿– 2.5记录– 5停顿– 2.5记录

给出了 25s 的总记录时间,但实际记录的镜头只有 10s 。

--keypress,-k在记录和输入 Enter 暂停之间切换

每按一次 Enter 键,记录将暂停或重新开始。按 X 然后按 Enter 将停止记录并关闭该应用程序。请注意,超时值将用于表示录制结束,但仅在每次按 Enter 键后才检查;因此,即使系统正在等待按键,即使超时已过期,它仍将在退出之前等待按键。

--signal,-s根据 SIGUSR1 在记录和暂停之间切换

raspivid进程发送USR1信号将在记录和暂停之间切换。可以使用下面的kill命令来完成。您可以使用 pgrep raspivid找到 raspivid 进程 ID 。

`kill -USR1 请注意,超时值将用于指示记录的结束,但仅在每次收到" SIGUSR1"信号后才检查;因此,即使系统正在等待信号,即使超时已到期,它仍将在退出之前等待信号。

--split,-sp

在信号或按键模式下,每次重新开始录制时,都会创建一个新文件。

--circular,-c

选择循环缓冲区模式。所有编码数据都存储在循环缓冲区中,直到触发被激活,然后缓冲区才被保存。

--vectors -x

打开从 H264 编码器到指定文件名的运动矢量输出。

--flush,-fl

写入视频数据后立即强制刷新输出数据缓冲区。这绕过了任何操作系统对写入数据的缓存,并可以减少延迟。

--save-pts,-pts

将时间戳记信息保存到指定文件。用作mkvmerge的输入文件。

--codec,-cd

指定要使用的编码器编解码器。选项为" H264"和" MJPEG"。 H264可以编码高达 1080p ,而 MJPEG 可以编码高达传感器的尺寸,但是由于更高的处理和存储要求,帧速率降低了。

--initial,-i在启动时定义初始状态

定义摄像机是开始暂停还是立即开始录制。选项是"记录"或"暂停"。请注意,如果您使用简单的超时,并且将" initial"设置为" pause",则不会记录任何输出。

--segment,-sg将流分割成多个文件

而不是创建单个文件,而是将文件划分为大约指定的毫秒数的段。为了提供不同的文件名,您应该在文件名中希望显示段计数的位置添加%04d或类似名称,例如:

--segment 3000 -o video%04d.h264

会产生大约 3000 毫秒(3秒)长的视频剪辑,分别名为" video0001.h264"," video0002.h264"等。这些剪辑应该是无缝的(剪辑之间没有帧丢失),但是每个剪辑长度的准确性取决于帧内周期,因为这些片段将始终从 I 帧开始。因此,它们将始终等于或大于指定的时间段。

Raspivid的最新版本还将允许文件名基于时间,而不是使用段号。例如:

--segment 3000 -o video_%c.h264

将产生格式如下的文件名:video_Fri Jul 20 16:23:48 2018.h264

有许多不同的格式设置选项—有关完整列表,请参见here。请注意,由于%d和%u选项用于段号格式,因此它们不可用,并且某些组合可能会产生无效的文件名。

--wrap,-wr设置段号的最大值

输出段时,这是将段号重置为 1 之前可以达到的最大值,从而可以保留记录段,但覆盖最旧的段。因此,如果将其设置为 4 ,则在上面的细分示例中,生成的文件将为" video0001.h264"," video0002.h264"," video0003.h264"和" video0004.h264"。一旦记录了" video0004.h264",计数将重置为 1 ,并且" video0001.h264"将被覆盖。

--start,-sn设置初始段号

输出段时,这是初始段号,从而可以从给定段中恢复先前的记录。预设值是 1 。

--raw,-r

为请求的任何原始数据文件指定输出文件名。

--raw-format,-rf

指定请求原始输出时要使用的原始格式。选项有yuvrgbgrey。 "灰色"只是保存 YUV 图像的 Y 通道。

例子

仍然捕获

默认情况下,捕获以传感器支持的最高分辨率进行。可以使用-w和-h命令行选项进行更改。

在取景器上 2 秒钟(以毫秒为单位指定时间)后进行默认捕获,并保存在" image.jpg"中:

`` raspistill -t 2000 -o image.jpg


以不同的分辨率拍摄:

``
raspistill -t 2000 -o image.jpg -w 640 -h 480

大大降低质量以减小文件大小:

`` raspistill -t 2000 -o image.jpg -q 5


强制预览以坐标 100 ,100出现,宽度为 300 像素,高度为 200 像素:

``
raspistill -t 2000 -o image.jpg -p 100,100,300,200

完全禁用预览:

`` raspistill -t 2000 -o image.jpg -n


将图像另存为 PNG 文件(无损压缩,但比 JPEG 慢)。请注意,在选择图像编码时,文件名后缀将被忽略:

``
raspistill -t 2000 -o image.png –e png

将一些 EXIF 信息添加到 JPEG 。这会将 Artist 标签名称设置为 Boris ,并将 GPS 高度设置为 123 .5m。请注意,如果设置 GPS 标签,则应将其设置为最小 GPSLatitude ,GPSLatitudeRef,GPSLongitude,GPSLongitudeRef,GPSAltitude和 GPSAltitudeRef :

`raspistill -t 2000 -o image.jpg -x IFD0.Artist =鲍里斯-x GPS.GPSAltitude = 1235/10''

设置浮雕图像效果:

`` raspistill -t 2000 -o image.jpg -ifx压纹


将 YUV 图像的 U 和 V 通道设置为特定值(128:128产生灰度图像):

``
raspistill -t 2000 -o image.jpg -cfx 128:128

运行预览 2 秒钟,没有保存的图像:

`` raspistill -t 2000


拍摄一张延时图片,每 10 秒钟一次,持续 10 分钟(10分钟= 600000ms),并命名文件 image _num_001_today.jpg,image_num_002_today.jpg等,最新图片也以最新名称提供。 jpg`:

``
raspistill -t 600000 -tl 10000 -o image_num_%03d_today.jpg -l Latest.jpg

拍照并将图像数据发送到 stdout :

`` raspistill -t 2000 -o-


拍照并将图像数据发送到文件:

``
raspistill -t 2000 -o-> my_file.jpg

永久运行相机,并按 Enter 键拍照:

`` raspistill -t 0 -k -o my_pics%02d.jpg


### 视频捕获

图像尺寸和预览设置与静止图像拍摄相同。视频录制的默认大小为 1080p (1920x1080)。

使用默认设置(1080p30)录制 5s 剪辑:

``
raspivid -t 5000 -o video.h264

以指定的比特率(3.5Mbits/s)记录 5s 剪辑:

`` raspivid -t 5000 -o video.h264 -b 3500000


以指定的帧率(5fps)记录 5s 剪辑:

``
raspivid -t 5000 -o video.h264 -f 5

对 5s 摄像机流进行编码,然后将图像数据发送到 stdout :

`` raspivid -t 5000 -o-


编码 5s 相机流并将图像数据发送到文件:

``
raspivid -t 5000 -o-> my_file.h264

Shell错误代码

此处描述的应用程序将在完成后向外壳返回标准错误代码。可能的错误代码是:

| C定义|代码描述 | ---------- | ------ | ------------- | | EX_OK | 0 |申请成功运行| | EX_USAGE | 64 |命令行参数错误| | EX_SOFTWARE | 70 |软件或相机错误| | | 130 |应用程序被 Ctrl -C终止|