Raspberry PI-- Video
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Raspberry PI-- Video相关的知识,希望对你有一定的参考价值。
参考技术A sdtv_mode定义了通过黄色RCA插孔,用于复合视频输出的电视标准,默认为0.
sdtv_aspect
定义了复合视频输出的屏幕宽高比。默认为1.
sdtv_disable_colourburst
设置为1禁用复合视频输出的colourburst。图片将以单色显示,但可能会显得更清晰。
hdmi_safe
设置为1将采用“安全模式”设置用于尝试以最大HDMI兼容性启动。与下面的设置有相同的作用:
hdmi_ignore_edid
如果你的显示器没有准确的EDID,设置该项为0xa5000080将使能忽略EDID/显示数据功能。使用这个特殊的值可以保证该功能不会意外触发。
hdmi_edid_file
设置该项为1会使GPU从boot分区中的edid.dat文件中读取EDID数据而不是从显示器中读。
hdmi_force_edid_audio
设置该项为1假定显示器支持所有音频格式,即使没有说明支持,也允许直通DTS / AC3。
hdmi_ignore_edid_audio
设置为1假定所有的音频格式都不被显示器支持。这意味着ALSA将默认使用模拟音频(耳机)插孔。
hdmi_force_edid_3d
设置为1假定所有的CEA模式都支持3D,即使EDID中没有表明支持。
hdmi_ignore_cec_init
设置为1将停止在启动期间发送初始活动源消息。 当您重新启动Raspberry Pi时,这可以防止启用CEC的电视退出待机和频道切换。
hdmi_ignore_cec
设置为1假定所有的TV都不支持CEC。CEC所有功能都不支持。
cec_osd_name
设置设备初始化CEC名称。默认是 Raspberry Pi。
hdmi_pixel_encoding
该命令强制像素编码模式。默认会使用从EDID获取的模式,所以不需要做修改。
hdmi_blanking
该命令允许选择当DPMS触发后是否应该将HDMI输出关闭。这是为了模仿其他计算机的行为。 经过一段特定的时间后,由于没有信号,显示屏将变为空白并进入低功耗/待机模式。
注意:不使用帧缓冲的应用程序(如omxplayer),此功能可能会导致问题。
hdmi_drive
选择HDMI或者DVI输出模式。
config_hdmi_boost
配置HDMI接口的信号强度。默认值0,最大值11.
最初的Model B和A默认值是2.Model B+和之后的版本默认值是5.
如果看到HDMI问题(斑点,干扰),请尝试7。非常长的HDMI线可能需要到11,但是不到万不得已不要使用这么高的值。
hdmi_group
定义了HDMI输出的组:CEA(Consumer Electronics Association,电视通常使用的标准)或者DMT(Display Monitor Timings,监视器通常使用的标准)。此设置需要与hdmi_mode配合使用。
hdmi_mode
配合hdmi_group,定义HDMI的输出格式。
具体查看网站的对应章节。 https://www.raspberrypi.org/documentation/configuration/config-txt/video.md
hdmi_timings
选择hdmi_group=2且hdmi_mode=87时自定义HDMI时序值。
*屏幕宽高比可以设置为下面8个中的一种(取最接近的)。
hdmi_force_mode
设置为1将从内部列表中删除除hdmi_mode和hdmi_group指定的模式之外的所有其他模式,这意味着它们不会出现在任何枚举的模式列表中。 如果显示似乎忽略了hdmi_mode和hdmi_group设置,则此选项可能会有所帮助。
edid_content_type
强制EDID内容类型为特定值。
可选项有:
0 = EDID_ContentType_NODATA, 内容类型为 none.
1 = EDID_ContentType_Graphics, 内容类型为 graphics, ITC 必须设置为 1。
2 = EDID_ContentType_Photo, 内容类型为photo
3 = EDID_ContentType_Cinema, 内容类型为cinema
4 = EDID_ContentType_Game,内容类型为game
你的HDMI显示器可能只支持有限的格式,使用下面的方法找出支持的格式:
1、设置输出格式是VGA 60Hz (hdmi_group=1, hdmi_mode=1)启动树莓派;
2、输入下面的命令列出支持CEA的模式:
/opt/vc/bin/tvservice -m CEA
3、输入下面的命令列出支持DMT的模式:
/opt/vc/bin/tvservice -m DMT
4、输入下面的命令显示当前的状态:
/opt/vc/bin/tvservice -s
5、输入下面的命令输出更多你显示器的信息:
/opt/vc/bin/tvservice -d edid.dat; /opt/vc/bin/edidparser edid.dat
在解决默认HDMI模式问题时,还应提供edid.dat。
如果表中的模式没有一个符合要求,那可以自定义CVT模式。
可以省略末尾的字段以使用默认值。
请注意,这只是创建模式(组2模式87)。 为了使Pi默认使用此功能,您必须添加一些其他设置。 例如,以下选择800×480分辨率并启用音频驱动器:
如果你的显示器不支持标准CVT时序则无效。
ignore_lcd
默认树莓派在I2C上检测到LCD会使用LCD。设置ignore_lcd=1会跳过检测,不会使用LCD。
display_default_lcd
如果树莓派检测到DSI LCD将会默认使用此LCD显示并显示帧缓存。设置display_default_lcd=0会确保LCD不是默认的显示器,通常使HDMI为默认的。通过从支持的应用程序(例如,omxplayer)中选择显示器编号,仍然可以使用LCD。
lcd_framerate
设置树莓派LCD显示器的帧率,单位是Hertz/fps。默认是60Hz。
lcd_rotate
使用LCD的内置翻转功能翻转显示器,比使用基于GPU的旋转操作更方便。
例如,lcd_rotate = 2将补偿倒置显示。
disable_touchscreen
使能/禁用触摸板
disable_touchscreen=1会禁用官方的树莓派LCD显示器的触摸功能。
enable_dpi_lcd
启用连接到DPI GPIO的LCD显示器。 这是为了允许使用并行显示接口使用第三方LCD显示器。
dpi_group,dpi_mode,dpi_output_format
dpi_group和dpi_mode config.txt参数用于设置预定模式(上面的HDMI使用的DMT或CEA模式)。 用户可以采用与HDMI相同的方式生成自定义模式(请参阅dpi_timings部分)。
dpi_output_format是一个位掩码,指定用于设置显示格式的各种参数。
dpi_timings
选择dpi_group=2,dpi_mode=87自定义DPI的时序值。
*屏幕宽高比可以设置为下面8个中的一个(选择最接近的)
hdmi_force_hotplug
将hdmi_force_hotplug设置为1假定HDMI热插拔信号被置位,因此看起来连接了HDMI显示器。 换句话说,即使没有检测到HDMI监视器,也将使用HDMI输出模式。
hdmi_ignore_hotplug
将hdmi_ignore_hotplug设置为1会假定HDMI热插拔信号未置为有效,因此似乎未连接HDMI显示器。 换句话说,即使检测到HDMI监视器,也将使用复合输出模式。
disable_overscan
将disable_overscan设置为1可禁用固件设置的过扫描的默认值。 左侧,右侧,顶部和底部边缘的过扫描的默认值对于HD CEA模式为48,对于SD CEA模式为32,对于DMT模式为0。 disable_overscan的默认值为0。
注意:此选项后仍可应用任何其他额外的过扫描选项,如overscan_scale或过扫描边缘。
overscan_left
overscan_left命令指定要添加到屏幕左边缘的过扫描的固件默认值的像素数。 默认值为0。
如果文本从屏幕的左边缘流出,则增加此值; 如果屏幕左边缘与文本之间有黑色边框,请减小它。
overscan_right
overscan_right命令指定要添加到屏幕右边缘的过扫描的固件默认值的像素数。 默认值为0。
如果文本从屏幕的右边缘流出,则增加此值; 如果屏幕右边缘与文本之间有黑色边框,请减小它。
overscan_top
overscan_top命令指定要添加到屏幕顶部边缘的过扫描的固件默认值的像素数。 默认值为0。
如果文本从屏幕的上边缘流出,则增加此值; 如果屏幕上边缘与文本之间有黑色边框,请减小它。
overscan_bottom
overscan_bottom命令指定要添加到屏幕下边缘的过扫描的固件默认值的像素数。 默认值为0。
如果文本从屏幕的下边缘流出,则增加此值; 如果屏幕底边与文本之间有黑色边框,请减小它。
overscan_scale
将overscan_scale设置为1可强制任何非帧缓冲层符合过扫描设置。 默认值为0。
注意:通常不建议使用此功能:它可能会降低图像质量,因为显示屏上的所有图层都将由GPU进行缩放。 建议在显示器上禁用过扫描,以避免图像缩放两次(通过GPU和显示屏)。
framebuffer_width
framebuffer_width命令指定控制台帧缓冲区宽度(以像素为单位)。 默认值是显示宽度减去总水平过扫描。
framebuffer_height
framebuffer_height命令指定控制台帧缓冲区高度(以像素为单位)。 默认值是显示高度减去总垂直过扫描。
max_framebuffer_height,max_framebuffer_width
指定允许内部帧缓冲区的最大尺寸。
framebuffer_depth
使用framebuffer_depth以每像素位数指定控制台帧缓冲区深度。 默认值为16。
framebuffer_ignore_alpha
将framebuffer_ignore_alpha设置为1可禁用Alpha通道。 可以配合显示32位framebuffer_depth。
test_mode
在正常启动操作系统之前,test_mode命令在启动期间(仅通过复合视频和模拟音频输出)按给定的秒数显示测试图像和声音。 用作制造测试; 默认值为0。
display_hdmi_rotate
使用display_hdmi_rotate旋转或翻转HDMI显示方向。 默认值为0。
请注意,90度和270度旋转选项需要GPU上的额外内存,因此这些不适用于16MB GPU分割。
display_lcd_rotate
使用display_lcd_rotate旋转或翻转LCD方向。 参数与display_hdmi_rotate相同。
display_rotate
display_rotate在最新固件中已弃用,但为了向后兼容性而保留。 请改用display_lcd_rotate和display_hdmi_rotate。
使用display_rotate旋转或翻转屏幕方向。 参数与display_hdmi_rotate相同。
dispmanx_offline
强制dispmanx组合在两个屏幕外帧缓冲器中离线完成。 这可以允许更多的dispmanx元素被合成,但是更慢并且可以将屏幕帧速率限制为通常30fps。
在 Raspberry Pi 上使用 gstreamer 从 h264 流中捕获 jpeg
【中文标题】在 Raspberry Pi 上使用 gstreamer 从 h264 流中捕获 jpeg【英文标题】:Capturing jpegs from an h264 stream with gstreamer on a Raspberry Pi 【发布时间】:2013-05-26 02:54:01 【问题描述】:我有一个用于 Raspberry Pi 的新相机插件。它还没有 video4linux 支持,但带有一个小程序,可以输出 1080p h264 流。我已经验证了这项工作,并通过以下方式将视频推送到标准输出:
raspivid -n -t 1000000 -vf -b 2000000 -fps 25 -o -
我想处理这个流,最终得到每秒拍摄一次的视频快照。
因为它是 1080p,我需要使用 rpi 的硬件支持来支持 H264 编码。我相信 gstreamer 是唯一支持此功能的应用程序,因此使用 ffmpeg 或 avconv 的解决方案将不起作用。我已经使用http://www.trans-omni.co.uk/pi/GStreamer-1.0/build_gstreamer 的构建脚本来制作 gstreamer 和用于硬件 H264 编码的插件,它似乎可以工作:
root@raspberrypi:~/streamtest# GST_OMX_CONFIG_DIR=/etc/gst gst-inspect-1.0 | grep 264
...
omx: omxh264enc: OpenMAX H.264 Video Encoder
omx: omxh264dec: OpenMAX H.264 Video Decoder
所以我需要构建一个 gst-launch 管道,该管道在标准输入上获取视频并每秒吐出一个新的 jpeg。我知道我可以使用 gstreamer 的“multifilesink”接收器来执行此操作,因此提出了以下简短脚本来启动它:
root@raspberrypi:~/streamtest# cat test.sh
#!/bin/bash
export GST_OMX_CONFIG_DIR=/etc/gst
raspivid -n -t 1000000 -vf -b 2000000 -fps 25 -o - | \
gst-launch-1.0 fdsrc fd=0 ! decodebin ! videorate ! video/x-raw,framerate=1/1 ! jpegenc ! multifilesink location=img_%03d.jpeg
问题是它不起作用:gstreamer 只是永远处于预卷状态,从不吐出我宝贵的 jpeg。
root@raspberrypi:~/streamtest# ./test.sh
Setting pipeline to PAUSED ...
Pipeline is PREROLLING ...
[waits forever]
如果 gstreamer 的 -v 标志设置有用的输出位于 http://pastebin.com/q4WySu4L
谁能解释我做错了什么?
【问题讨论】:
我正在尝试做同样的事情。我还没有尝试让 gstreamer 工作,所以如果我有任何不同的结果,我会试一试并回信。 我也一直在与 gstreamer-devel 列表中的人交谈。看起来不太乐观:我听说 raspivid 的输出缺少 gstreamer 需要做出有关帧速率的决定的时间戳。见gstreamer-devel.966125.n4.nabble.com/… 可以通过修改raspivid源码来添加时间戳吗?还是必须在 GPU 级别进行? 这超出了我的理解范围。尝试在 rpi 板上询问 jamesh,我想他会知道的。 那个构建脚本好像不见了,有没有人镜像? 【参考方案1】:我们终于找到了解决方案。我的 gstreamer 管道大部分是正确的,但两个问题结合在一起使其无法正常工作:
raspivid 不会向其生成的 h264 帧添加时间戳 最新版本的 gstreamer 存在一个错误,导致其无法处理未加时间戳的帧运行 1.0 版本的 gstreamer(确保从头开始构建并删除之前尝试的所有痕迹),问题就会消失。
有关邮件列表线程,请参阅 http://gstreamer-devel.966125.n4.nabble.com/Capturing-jpegs-from-an-h264-stream-tt4660254.html。
【讨论】:
您是否有可用于测试的 Raspberry Pi 的 gstreamer 二进制文件副本? 它与其他一些东西相关联,所以我怀疑它能否在旅途中幸存下来。但是我已经将构建脚本放在了 pastebin 上;这应该给你一个类似于我的工作构建。 pastebin.com/u8T7mE18以上是关于Raspberry PI-- Video的主要内容,如果未能解决你的问题,请参考以下文章
树莓派(Raspberry Pi)4B无界面安装 Raspberry Pi 系统篇
raspberry pi install iceweasel
ini Raspberry Pi - ntp服务器配置。来自:https://frillip.com/raspberry-pi-stratum-1-ntp-server/