『瀚思彼岸』» 智能家居技术论坛

标题: 分享一个利用vlc实现Android和ios弹出摄像头全屏画面的方法 [打印本页]

作者: mars.z    时间: 2023-12-7 12:56
标题: 分享一个利用vlc实现Android和ios弹出摄像头全屏画面的方法
本帖最后由 mars.z 于 2023-12-8 12:05 编辑

安卓方法:         (参考于github上面的一个分享https://gist.github.com/mcfrojd/9e6875e1db5c089b1e3ddeb7dba0f304

一、确认设备可以使用adb命令
二、在设备上安装vlc,官方下载地址https://get.videolan.org/vlc-android/last/
三、通过Android Debug Bridge集成将设备接入ha

调用的命令
  1. am start -a android.intent.action.VIEW -d
  2.   rtsp://替换成自己的地址 -n org.videolan.vlc/.gui.video.VideoPlayerActivity
复制代码
通过调用这个命令,设备上会直接弹出摄像头全屏画面。
如果需要通过ha来关闭设备上的摄像头画面,可以使用以下的adb命令来关闭vlc app
  1. am force-stop org.videolan.vlc
复制代码



ios的方法: (因为我的ipad mini2 ios最终版本比较老12.5.7,只能安装2.2.2版本的快捷指令,这个版本的快捷指令不支持自动化,只能越狱实现,ios13+的设备可以参考,思路差不多,可以自由发挥一下)

一、App Store中搜索下载VLC
二、利用VLC的url scheme弹出摄像头画面

由于我的ipad不支持快捷指令自动化,只能通过越狱的方式了。越狱后ipad开启ssh,利用ha中的Shell Command集成实现(因为是利用ssh,所以需要提前在homeassistant中生成好ssh公钥,然后添加到ipad里的authorized_keys文件中,这样每次通过homeassistant执行ssh就可以实现免密码,ipad越狱后一般的root默认密码为"alpine")

相关命令,是利用uiopen这个命令调用vlc的url scheme rtsp://
  1. shell_command:
  2.   ipad_luanch_camera: ssh root@改成ipad的ip "uiopen rtsp://你的流地址"
复制代码
通过这个集成,会在ha中产生一个服务shell_command.ipad_luanch_camera,在ha中直接调用这个服务,ipad中就会弹出摄像头的画面。



额外分享一下我使用的一个越狱后的插件activator,感觉挺好用,论坛里之前也有人分享过ipad做中控展示的“人来亮屏”自动解锁
以下是调用activator命令实现的一些ipad上的操作,可以作为一些参考
  1. shell_command:
  2.   ipad_luanch_homeassistant_app: ssh root@改成ipad的ip "uiopen homeassistant://"  #打开homeassistant app
  3.   ipad_unlockscreen: ssh root@改成ipad的ip "activator send libactivator.lockscreen.dismiss" #解锁屏幕
  4.   ipad_lockscreen: ssh root@改成ipad的ip "activator send libactivator.lockscreen.show" #锁定屏幕
  5.   ipad_previous_app: ssh root@改成ipad的ip "activator send libactivator.system.previous-app" #返回上一个app
  6.   ipad_siri: ssh root@改成ipad的ip "activator send libactivator.system.virtual-assistant" #唤醒siri
  7.   ipad_homepage: ssh root@改成ipad的ip "activator send libactivator.system.first-springboard-page" #返回主页
  8.   ipad_ringtone_doorbell: ssh root@改成ipad的ip "activator send libactivator.ringtone.system:Doorbell" #播放铃声Doorbell
  9.   ipad_system_back: ssh root@改成ipad的ip "activator send libactivator.system.back" #执行一次返回键
  10.   ipad_sleep: ssh root@改成ipad的ip "activator send libactivator.system.sleepbutton" #锁屏后息屏
  11.   ipad_volume_up: ssh root@改成ipad的ip "activator send libactivator.audio.increase-volume" #音量增加
  12.   ipad_volume_down: ssh root@改成ipad的ip "activator send libactivator.audio.decrease-volume"  #音量减小
  13.   ipad_kill_vlc: ssh root@改成ipad的ip "killall -9 'VLC for iOS'" #关闭VLC
复制代码



当然如果你的设备是ios13+,同样的先从App Store中安装vlc,然后可以使用快捷指令中的 “打开URL”弹出摄像头,url的地址同样的填写rtsp://你的流地址。至于通过ha调用这个快捷指令,因为我没有ios13+的设备,不太清楚怎么实现,还需要自行探索一下。





作者: Mr.G    时间: 2023-12-7 13:34
大佬,安卓电视能否弹窗显示监控画面,比如电视处于打开状态,可否右上角弹窗显示rtsp监控画面,  必须全屏吗?论坛里有大佬的方法貌似不行,右上角弹出的画面都是空白的https://bbs.hassbian.com/thread-19863-1-1.html
作者: Ari    时间: 2023-12-7 13:52
感谢分享,ios能设置弹出吗
作者: mars.z    时间: 2023-12-7 16:09
郭子漳 发表于 2023-12-7 13:34
大佬,安卓电视能否弹窗显示监控画面,比如电视处于打开状态,可否右上角弹窗显示rtsp监控画面,  必须全屏 ...

用vlc的这个方式,暂时只找到弹出全屏的方法,你发这个用pipup,我没试过,之前大概了解好像只能弹出一个快照吧,也能弹出视频流的吗?
作者: mars.z    时间: 2023-12-7 16:12
Ari 发表于 2023-12-7 13:52
感谢分享,ios能设置弹出吗

看ios版本了,ios13以下的,只能越狱后,和ha联动实现弹出摄像头。ios13以上可以自己研究下快捷指令。用快捷指令里面的 url 是可以调用vlc的url scheme弹出摄像头全屏画面的,但是如何利用快捷指令里面的自动化联动ha,没有ios13+的设备,不是很清楚,需要自己研究
作者: Mr.G    时间: 2023-12-7 16:13
mars.z 发表于 2023-12-7 16:09
用vlc的这个方式,暂时只找到弹出全屏的方法,你发这个用pipup,我没试过,之前大概了解好像只能弹出一个 ...

他的帖子里写的可以弹出视频流,但是我没成功,画面是空白的
作者: 中国兴隆    时间: 2023-12-7 19:56
大佬能写详细一点吗?
通过Android Debug Bridge集成将设备接入ha
这个怎么操作的?
作者: mars.z    时间: 2023-12-7 20:21
中国兴隆 发表于 2023-12-7 19:56
大佬能写详细一点吗?
通过Android Debug Bridge集成将设备接入ha
这个怎么操作的? ...

配置——设备与服务——添加集成——Android Debug Bridge
作者: oulianxian    时间: 2023-12-7 22:51
感谢,可以了,不过如何让他同时亮屏呢,这样锁屏状态下也可以唤醒,我用了一直不行
作者: taioner    时间: 2023-12-7 23:09
及时雨啊,最近正在研究在ipad上打开摄像头,试试大佬的
作者: siri10086    时间: 2023-12-8 09:03
root@不需要密码吗?
shell_command:
  ipad_luanch_camera: ssh [email protected] "rtsp://admin:[email protected]:554/h264/ch1/main/av_stream/"

作者: mars.z    时间: 2023-12-8 11:39
本帖最后由 mars.z 于 2023-12-8 11:41 编辑
siri10086 发表于 2023-12-8 09:03
root@不需要密码吗?
shell_command:
  ipad_luanch_camera: ssh  "rtsp://admin:[email protected]:554/h ...

越狱后的root默认密码alpine,可以在homeassistant中生成公钥,加到ipad内的authorized_keys文件中,就能免密执行
还有执行rtsp地址前面还要加uiopen

作者: ghostist    时间: 2023-12-8 14:41
不越狱 哪个版本的ios也不能调用快捷指令去启动
作者: 中国兴隆    时间: 2023-12-9 20:17
郭子漳 发表于 2023-12-7 16:13
他的帖子里写的可以弹出视频流,但是我没成功,画面是空白的

朋友你用PIPUP能接收到推流弹窗吗?
帮我看下代码对不对
rest_commands.yaml文件中
pipup_image_on_tv:
  url: http://192.168.1.2:7979/notify
  content_type: 'application/json'
  verify_ssl: false
  method: 'post'
  timeout: 20
  payload: >
    {
      "duration": {{ duration | default(20) }},
      "position": {{ position | default(0) }},
      "title": "{{ title | default('') }}",
      "titleColor": "{{ titleColor | default('#50BFF2') }}",
      "titleSize": {{ titleSize | default(10) }},
      "message": "{{ message }}",
      "messageColor": "{{ messageColor | default('#fbf5f5') }}",
      "messageSize": {{ messageSize | default(14) }},
      "backgroundColor": "{{ backgroundColor | default('#0f0e0e') }}",
      "media": {
        "image": {
          "uri": "{{ url }}",
          "width": {{ width | default(640) }}
        }
      }
    }


pipup_url_on_tv:
  url: http://192.168.1.2:7979/notify
  content_type: 'application/json'
  verify_ssl: false
  method: 'post'
  timeout: 20
  payload: >
    {
      "duration": {{ duration | default(20) }},
      "position": {{ position | default(0) }},
      "title": "{{ title | default('') }}",
      "titleColor": "{{ titleColor | default('#50BFF2') }}",
      "titleSize": {{ titleSize | default(10) }},
      "message": "{{ message }}",
      "messageColor": "{{ messageColor | default('#fbf5f5') }}",
      "messageSize": {{ messageSize | default(14) }},
      "backgroundColor": "{{ backgroundColor | default('#0f0e0e') }}",
      "media": {
        "web": {
          "uri": "{{ url }}",
          "width": {{ width | default(640) }},
          "height": {{ height | default(480) }}
        }
      }
    }

调用 上的服务

alias: 推送到电视
sequence:
  - service: webrtc.create_link
    data:
      open_limit: 1
      time_to_live: 60
      entity: camera.192_168_1_22
      link_id: '{{ link_id }}'   
  - service: rest_command.pipup_url_on_tv
    data:
      title: 标题
      message: 消息
      width: 640
      height: 480
      url: 192.168.1.3:8123/webrtc/embed?url={{ link_id }}&webrtc=false

我的电视PIPUP收不到推送
作者: Mr.G    时间: 2023-12-9 20:19
中国兴隆 发表于 2023-12-9 20:17
朋友你用PIPUP能接收到推流弹窗吗?
帮我看下代码对不对
rest_commands.yaml文件中

能获取到推送,但是白屏,看不到视频流, 研究了好久无果,放弃了,图片可以正常推送,就是视频不行,  白屏,  你用adb命令得把应用最上层权限打开,还得设置开机自启动app或者每次电视打开后用adb命令打开pipup
作者: xiaobei    时间: 2024-7-4 12:16
太赞了厉害
作者: xiaobei    时间: 2024-7-5 12:37
你好,楼主。用vlc软件可以打开视频流,但是最后调用命令的完整代码在homeassistant应该怎么写,加在哪里,可以详细说明吗
作者: mars.z    时间: 2024-7-5 13:24
xiaobei 发表于 2024-7-5 12:37
你好,楼主。用vlc软件可以打开视频流,但是最后调用命令的完整代码在homeassistant应该怎么写,加在哪里, ...

ha用adb连接设备建后,调用androidtv.adb_command 这个服务啊,用这个服务执行相关命令就行了
作者: lugiya    时间: 2024-7-5 13:46
ios不是有ha的app吗?好像直接点击画中画按钮就可以弹出啊




欢迎光临 『瀚思彼岸』» 智能家居技术论坛 (https://bbs.hassbian.com/) Powered by Discuz! X3.5