目前条件:
1、echo音箱
2、摄像头设备,可以对外输出rtsp视频流
目标:
1、通过音箱可以直接查看摄像头的视频流。
对接alexa的流程可以参考:https://github.com/alexa-samples/skill-sample-java-smarthome-switch/tree/master
-
碰到问题:
1、rtsp需要端口在443,并且支持TLS1.2。
解决方案:
1、使用FFmpeg+mediamtx
,先走通流程。
步骤:
1、下载FFmpeg和mediamtx
2、使用ffmpeg产生视频流
ffmpeg -re -i test.mp4 -c copy -f rtsp rtsp://127.0.0.1:8554/stream
3、启动mediamtx
4、mediamtx配置证书,一开始使用的是自生成的证书。
参考链接:https://blog.yeahlowflicker.com/article/setting-up-a-rtsp-server
- #####碰到问题:
1、alexa所有接口都已经正确响应,但是输入show me the door station(设备名称)的时候,给出的rtsp视频流链接是:rtsps://100.111.222.193:443/stream,但是音箱一直返回" I'm having trouble reaching the door station"
后续经过google和alexa 网站的技术支持,发现是以下原因:
1、证书不能是自己创建的,要用申请的。
2、不支持rtsps,只支持rtsp的
解决方法:
1、阿里云申请域名,然后申请了临时证书。
2、使用stunnel用于做tls代理。配置内容如下。(这个配置有点坑,下载最新版本,里面竟然直接说明TLS1.2不支持。。。然后我最后下载的是5.44版本)
cert = E:\download\123.pem
key = E:\download\123.key
sslVersion = all
socket = l:TCP_NODELAY=1
socket = r:TCP_NODELAY=1
output = E://stunnel.log
[rtsp]
accept = 443
connect = 8554
TIMEOUTclose = 0
最后我通过FFmpeg做rtsp视频的转发,完成设备视频流转成支持tls的视频流(尝试过改connect的方式,但是一直无法成功。不懂为什么)
ffmpeg -hwaccel -i rtsp://admin:123456@100.111.222.104:8554/ch01 -c copy -f rtsp rtsp://admin:admin@127.0.0.1:8554/stream
经过以上尝试之后音箱成功能够使用。
国内对接aws echo音箱的文章太少了。。都只能靠谷歌。
提醒:
1、从apkcombo.com下载下来的alexa应用,打开的时候可能会提示异常,需要把手机的语言切换成英文再打开就可以了。。
2、alexa 那边支持输入语音。如果是当前是中文的话,命令不能文字输入的切换到英文就可以。
3、如果rtsp视频源是局域网的话,也需要使用保证视频源和echo音箱是在同一个网络哦。
接下去计划:
1、走通音箱对接的全部流程,包括账户授权流程等。