【问题标题】:Automatically detect when HDMI is plugged in [closed]插入HDMI时自动检测[关闭]
【发布时间】:2017-12-24 11:52:02
【问题描述】:

有时我通过 HDMI 将笔记本电脑连接到电视以获得更大的屏幕。不幸的是,它不会自动切换音频输出,所以每次我插入或拔出它时,我都必须自己这样做,使用这两者中的任何一个,才能让声音来自我想要它来自的地方。

  • pacmd set-card-profile 0 output:hdmi-stereo-extra1
  • pacmd set-card-profile 0 output:analog-stereo+input:analog-stereo

有什么方法可以检测 HDMI 是否已插入,或者至少是否发生了变化?谢谢!

Linux Mint 18.2 Xfce x64,华硕 P756U

【问题讨论】:

标签: linux bash audio hdmi


【解决方案1】:

我使用两种不同的方法来确定是否插入了 HDMI:

a) 使用 xrandr
一个简单的 xrandr 将报告您的 hdmi 显示器已连接 要在脚本中使用它,您可以执行以下操作:

hdmi_active=$(xrandr |grep ' connected' |grep 'HDMI' |awk '{print $1}')

以上将返回连接的 HDMI 端口(即 HDMI-1),如果没有连接 HDMI,则不会返回任何内容。

然后你可以使用类似的东西

[[ ! -z "$hdmi_active" ]] && do_your_stuff 

z 变为 true 如果 $hdmi_active 未设置。 ! z 恢复此行为并返回 true 如果 hdmi_active 有一个值 = hdmi 已连接

b) 使用 HDMI 状态文件:

$ cat /sys/class/drm/card0/*HDMI*/status

这将为您的 hdmi 端口返回连接/断开连接:

$ cat /sys/class/drm/card0/*HDMI*/status
disconnected
disconnected

然后,您可以使用以下内容针对该结果进行测试:

hdmi_active="$(cat /sys/class/drm/card0/*HDMI*/status |grep '^connected')" #Using ^ we avoind matching disconnected from the regex match, since ^ in an anchor to the beginning of the line
[[ ! -z "$hdmi_active" ]] && do_your_stuff #hdmi is active

【讨论】:

  • 如果 HDMI 线已插入笔记本电脑,但在屏幕/电视上选择了另一个 HDMI 输入,会是什么状态?我想知道我是否可以检测到屏幕上的输入变化。
  • 我告诉你知道。它不起作用,到目前为止,这是一个未解决的问题。
  • @JuanseCora 当您说“它不起作用”时,您指的是我的解决方案或 nagy.zsolt.hun 发布的问题?
  • @GeorgeVasiliou 我指的是 nagy.zsolt.hun 评论,他在其中询问是否可以检测到屏幕上的输入更改。
猜你喜欢
  • 1970-01-01
  • 2014-12-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-10-19
  • 1970-01-01
相关资源
最近更新 更多