62、Raspberry Pi视频捕获与显示设置指南

Raspberry Pi视频捕获与显示设置指南

1. Raspivid视频捕获工具

1.1 Raspivid简单使用

Raspivid是搭配树莓派相机模块的视频捕获命令行工具。当相机模块已连接并启用时,可使用以下命令录制视频:

raspivid -o vid.h264

若有需要,可像使用 raspistill 一样,使用 -hf -vf 参数来翻转图像。此命令会将一段5秒的视频保存到指定路径下的 vid.h264 文件中(默认时长)。

1.2 指定视频长度

通过传递 -t 参数并附带毫秒数,可确定录制视频的时长。例如:

raspivid -o video.h264 -t 10000

该命令将录制一段时长为10秒的视频。

1.3 更多选项

若要查看所有可能的选项,可直接运行 raspivid 命令,或者将该命令的输出通过管道传递给 less ,然后滚动查看:

raspivid 2>&1 | less

使用箭头键滚动,输入 q 退出查看。

1.4 转换为MP4格式

树莓派捕获的视频是原始的H264视频流,许多媒体播放器可能无法播放,或者播放速度不正确,除非将其“封装”在如MP4这样合适的容器格式中。使用 MP4Box 是将Raspivid捕获的视频转换为MP4文件的最佳方法。
可使用以下命令下载 MP4Box

sudo apt -y install gpac

以下是捕获原始视频并将其封装为MP4容器的步骤:
1. 录制30秒分辨率为640x480、比特率为150kB/s的原始视频,并保存为 pivideo.h264 文件:

raspivid -t 30000 -w 640 -h 480 -fps 25 -b 1200000 -p 0,0,640,480 -o pivideo.h264
  1. 将原始视频封装到MP4容器中:
MP4Box -add pivideo.h264 pivideo.mp4
  1. 删除原始文件,只保留可播放的 pivideo.mp4 文件:
rm pivideo.h264

2. HDMI显示设置

2.1 复合视频模式选项

2.1.1 sdtv模式

sdtv 模式命令用于指定复合视频输出所使用的电视标准。在初代树莓派上,RCA接口输出复合视频;除Pi Zero和Compute Module外,其他树莓派的4极TRRS(耳机)接口会同时输出复合视频和声音;Pi Zero上有一个未焊接的“TV”接口可输出复合视频;Compute Module可通过TVDAC引脚访问复合视频。 sdtv 模式的默认值为0。

sdtv 模式的取值及含义如下表所示:
| 值 | 模式 |
| ---- | ---- |
| 0 | NTSC NORMAL |
| 1 | NTSC Japanese edition - no pedestal |
| 2 | Regular Friend |
| 3 | Brazilian PAL version - 525/60 rather than 625/50, various subcarriers |
| 16 | NTSC Progressive Scan |
| 18 | PAL’s Progressive Scan |

2.1.2 sdtv宽高比

sdtv aspect 命令用于确定复合视频输出的宽高比,默认值为1。

sdtv aspect 的取值及对应的宽高比如下表所示:
| 值 | 宽高比 |
| ---- | ---- |
| 1 | 4:3 |
| 2 | 14:9 |
| 3 | 16:9 |

2.1.3 禁用彩色突发信号

sdtv disable colourburst 设置为1,可在复合视频输出时禁用彩色突发信号。图像将以单色显示,但可能会更清晰。

2.1.4 启用复合输出(仅适用于Pi 4B)

由于树莓派4内部时钟的相互关联和分配方式,复合视频输出默认是禁用的。因为复合视频需要特定的时钟,将树莓派4的时钟设置为所需速度会对其他相关时钟产生不利影响,导致整个设备略微变慢。为避免设备性能下降,设计上默认禁用了复合视频输出。
可使用 enable tvout=1 选项来启用复合输出,但这会在一定程度上影响性能。

2.2 HDMI模式选项

2.2.1 端口说明

树莓派4B有两个HDMI端口,部分HDMI命令可应用于任意一个端口。可使用 <命令>:<端口> 的表示法来指定设置应用的端口,端口号为0或1。若未指定端口,则默认使用端口0。若为不需要端口号的命令指定了端口号,该端口号将被忽略。

2.2.2 HDMI安全模式

hdmi_safe 设置为1,可尝试以完全HDMI兼容模式启动,这相当于设置以下参数:

hdmi_force_hotplug=1
hdmi_ignore_edid=0xa5000080
config_hdmi_boost=4
hdmi_group=2
hdmi_mode=4
disable_overscan=0
overscan_left=24
overscan_right=24
overscan_top=24
overscan_bottom=24
2.2.3 忽略EDID数据

若显示器没有准确的EDID信息,将 hdmi_ignore_edid 设置为 0xa5000080 ,可忽略EDID/显示数据。为避免意外激活,需要使用这个特殊值。

2.2.4 从文件读取EDID数据

hdmi_edid_file 设置为1,GPU将从启动分区中的 edid.dat 文件读取EDID数据。

2.2.5 指定EDID文件名(仅适用于树莓派4B)

可使用 hdmi_edid_filename 命令指定要使用的EDID文件的文件名,以及该文件应用的端口。同时,需要将 hdmi_edid_file 设置为1。例如:

hdmi_edid_file=1
hdmi_edid_filename:0 = FileForPortZero.edid
hdmi_edid_filename:1 = FileForPortOne.edid
2.2.6 强制音频支持

hdmi_force_edid_audio 设置为1,可让显示器假装支持所有音频格式,即使显示器未记录支持DTS/AC3音频透传,也能实现该功能。

2.2.7 忽略音频支持

hdmi_ignore_edid_audio 设置为1,可让显示器假装不支持所有音频格式,这意味着模拟音频(耳机)插孔将切换到ALSA。

2.2.8 强制3D支持

hdmi_force_edid_3d 设置为1,即使EDID未表明支持3D,也能让所有CEA模式假装支持3D。

2.2.9 忽略CEC初始化

在启动时,将 hdmi_ignore_cec_init 设置为1,可避免发送初始活动源消息,防止在重启支持CEC的电视时,树莓派从待机状态唤醒并切换频道。

2.2.10 忽略CEC功能

hdmi_ignore_cec 设置为1,可让电视假装完全不支持CEC,即不支持任何CEC功能。

2.2.11 设置CEC显示名称

cec_osd_name 命令用于设置设备的初始CEC名称,默认名称为“Raspberry Pi”。

2.2.12 像素编码模式

hdmi_pixel_encoding 命令用于强制设置像素编码模式。默认情况下,将使用EDID请求的模式,通常无需更改。

hdmi_pixel_encoding 的取值及含义如下表所示:
| 值 | 编码模式 |
| ---- | ---- |
| 0 | Default (RGB for CEA minimal, RGB for DMT full) |
| 1 | Minimal RGB (16 - 235) |
| 2 | Total RGB (0 - 255) |
| 3 | Minimal YCbCr (16 - 235) |
| 4 | Absolute YCbCr (0 - 255) |

2.2.13 HDMI空白模式

hdmi_blanking 命令用于控制当操作系统使用DPMS(显示电源管理信号)要求显示器进入待机模式以节省电源时的操作。若未设置该选项或设置为0,HDMI输出将被置为空白但不会关闭;若将该选项设置为1,可模仿其他计算机的操作,关闭HDMI输出,使连接的显示器进入低功耗待机模式。
在树莓派4上,将 hdmi_blanking 设置为1不会关闭HDMI输出,因为该功能尚未实现。需要注意的是,在使用不使用帧缓冲的应用程序(如 omxplayer )时,此功能可能会导致问题。

hdmi_blanking 的取值及含义如下表所示:
| 值 | 结果 |
| ---- | ---- |
| 0 | The HDMI output is blanked out |
| 1 | You can turn off and blank the HDMI output |

2.2.14 HDMI驱动模式

hdmi_drive 命令可让你在HDMI和DVI的性能模式之间进行选择。

hdmi_drive 的取值及含义如下表所示:
| 值 | 模式 |
| ---- | ---- |
| 1 | Normal mode for DVI (no sound) |
| 2 | Normal HDMI mode (if supported and allowed, sound will be sent) |

2.2.15 HDMI信号增强

config_hdmi_boost 用于配置HDMI接口的信号功率,取值范围为0到11。初代Model B和A的默认值为2,Model B+及后续版本的默认值为5。
若出现HDMI问题(如斑点、干扰),可尝试将其设置为7。设置为11可能需要非常长的HDMI电缆,除非绝对必要,否则不应使用这么高的值。在树莓派4上,该选项会被忽略。

2.2.16 HDMI输出组

hdmi_group 命令用于指定HDMI输出组,可选择CEA(消费电子协会,通常用于电视的标准)或DMT(显示监视器时序,通常用于显示器的标准)。该设置可与 hdmi_mode 配合使用。

综上所述,通过合理使用Raspivid工具和各种HDMI显示设置选项,能够充分发挥树莓派在视频捕获和显示方面的功能。在实际应用中,可根据具体需求灵活调整各项参数,以获得最佳的使用体验。

3. 操作流程总结与流程图

3.1 Raspivid视频录制及转换为MP4流程

以下是使用Raspivid录制视频并将其转换为MP4格式的详细操作流程:
1. 安装MP4Box :若尚未安装 MP4Box ,使用以下命令进行安装:

sudo apt -y install gpac
  1. 录制原始视频 :根据需求设置视频的时长、分辨率、帧率、比特率等参数,使用 raspivid 命令录制视频。例如,录制30秒分辨率为640x480、比特率为150kB/s的视频:
raspivid -t 30000 -w 640 -h 480 -fps 25 -b 1200000 -p 0,0,640,480 -o pivideo.h264
  1. 封装为MP4格式 :使用 MP4Box 将原始的H264视频文件封装为MP4格式:
MP4Box -add pivideo.h264 pivideo.mp4
  1. 删除原始文件 :封装完成后,删除原始的H264文件,只保留MP4文件:
rm pivideo.h264

下面是该流程的mermaid格式流程图:

graph LR
    A[安装MP4Box] --> B[录制原始视频]
    B --> C[封装为MP4格式]
    C --> D[删除原始文件]

3.2 树莓派4B启用复合输出流程

树莓派4B默认禁用复合视频输出,若需要启用,可按照以下流程操作:
1. 了解性能影响 :由于复合视频需要特定时钟,启用复合输出会对其他相关时钟产生不利影响,导致设备性能略有下降。
2. 启用复合输出 :使用 enable tvout=1 选项启用复合输出。在配置文件(如 config.txt )中添加或修改该选项:

enable tvout=1
  1. 保存并重启 :保存配置文件后,重启树莓派使设置生效。

对应的mermaid格式流程图如下:

graph LR
    A[了解性能影响] --> B[启用复合输出]
    B --> C[保存并重启]

4. 常见问题及解决方法

4.1 Raspivid相关问题

4.1.1 视频无法正常录制
  • 问题表现 :执行 raspivid 命令后,没有生成视频文件或录制过程中出现错误。
  • 可能原因 :相机模块未正确连接或未启用;命令参数设置错误。
  • 解决方法 :检查相机模块的连接是否稳固,确保相机模块已在树莓派配置中启用;仔细检查 raspivid 命令的参数,确保参数设置正确。
4.1.2 视频格式不兼容
  • 问题表现 :使用媒体播放器无法播放Raspivid录制的视频文件。
  • 可能原因 :树莓派捕获的是原始H264视频流,未封装在合适的容器格式中。
  • 解决方法 :按照前文介绍的方法,使用 MP4Box 将原始H264视频文件封装为MP4格式。

4.2 HDMI显示相关问题

4.2.1 HDMI无信号输出
  • 问题表现 :连接HDMI设备后,显示器无信号显示。
  • 可能原因 :HDMI电缆连接松动;HDMI接口损坏;HDMI设置参数不正确。
  • 解决方法 :检查HDMI电缆的连接是否牢固,尝试更换HDMI电缆;若怀疑HDMI接口损坏,可更换其他HDMI端口或设备进行测试;检查HDMI设置参数,如 hdmi_group hdmi_mode 等,确保设置正确。
4.2.2 显示画面出现干扰或斑点
  • 问题表现 :HDMI显示的画面出现干扰线条或斑点。
  • 可能原因 :HDMI信号强度不足;HDMI电缆过长或质量不佳。
  • 解决方法 :尝试调整 config_hdmi_boost 参数,提高HDMI信号功率;若使用的HDMI电缆过长或质量不佳,可考虑更换为质量更好的短电缆。

5. 总结与建议

5.1 总结

本文详细介绍了Raspivid视频捕获工具的使用方法,包括简单录制、指定视频长度、查看更多选项以及将视频转换为MP4格式的操作步骤。同时,对树莓派的HDMI显示设置进行了全面阐述,涵盖复合视频模式选项和HDMI模式选项的各个参数设置。此外,还总结了操作流程、绘制了流程图,并针对常见问题提供了相应的解决方法。

5.2 建议

  • 在使用Raspivid录制视频时,根据实际需求合理设置视频的时长、分辨率、帧率和比特率等参数,以获得最佳的视频质量。
  • 在进行HDMI显示设置时,先了解各个参数的含义和作用,再根据连接的显示设备进行适当调整。若遇到问题,可参考常见问题及解决方法进行排查。
  • 对于树莓派4B,在启用复合输出时要充分考虑其对设备性能的影响,根据实际使用场景决定是否启用。

通过本文的介绍,相信读者能够更好地掌握树莓派在视频捕获和显示方面的功能,在实际应用中灵活运用各项设置,获得满意的效果。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值