引言
本文由zlmediakit
核心开发者 monktan(老衲不出家)
编写,夏楚
审阅修订;文章主要记录了作者在对接亚马逊Alexa
设备时遇到的一些经验教训,希望前人趟过的坑后人无需再趟。
1、背景
因业务发展,需要在亚马逊Alexa
设备上实现与访客视频对讲;调研发现亚马逊Lambad Alexa Skill平台
(以下简称亚马逊平台)支持WebRTC
和RTSP
两种方式接入,由于需要实现双向对讲,只能采用WebRTC
方式与Alexa设备对接;至于门铃设备端,硬件资源有限且不带屏幕,我们采用的私有协议方式接入。为了便于读者理解,我们省去了发现、认证等流程,整体架构流程图如下:
2、开始趟坑
研究Alexa WebRTC
接入相关文档,发现其视频支持H264
编码格式,音频则支持Opus/PCMU/PCMA/AAC
:
由于WebRTC
协议通常不支持AAC
,为了节省时间,我们直接采用更简单的PCMU
(而不是Opus
)来测试,然而测试发现Alexa
设备竟然无法播放,于是我们对比了之前对接过的web demo
,发现竟然是通的,其架构方式也基本一致:
3、趟坑之路
由于Alexa
设备死活无法播放门铃的音视频流而web demo却一切正常,我做了大量的努力和尝试,包括sdp的分析对比,rtp的分析对比、变换音频编码格式(因为单视频模式有播放成功的案例,原因是单视频模式请求链路时间不一样,时间更短)、音频编码切片长度、音视频时间戳同步、分析设备日志等工作。