1 客户端音频逻辑
1.1 行前请求
1、请求音频
第一次算路信息拿到后鹰巢立即请求动态运营服务,拿到本次路线上挂接的音频(包含URL、音频id)。
2、查询音频下载状态
鹰巢通知客户端本次路线挂接有音频内容,客户端根据收到音频id(MD5)在本地查询下载状态。
(1)查询本地是否存在
- 本地没有对应音频,则客户端进行下载,下载完成后通知TBT
- 下载完成:通知TBT,可播放
- 下载中:不通知
- 本地已有对应音频,通过鹰巢通知TBT,可播放
(2)通知时机
- 开始导航场景挂接音频:开始导航前若下载完成,则实时通知
- 行中及行后其他场景挂接音频:行前或行后若下载完成,则实时通知
(3)通知内容(如果有多条广告下载完成,如何通知)
- 音频id
-
3、存储
(1)路径
客户端下载后存储到固定路径(待补充路径地址)。
(2)音频格式
MP3格式,单个音频大小不超过200K
(3)本地缓存
本地音频存储大小不超过10M,当超过时删除时间最早的文件。1.2 行中播报
1、TBT通知
TBT根据客户端给出的音频是否存在,下发播报通知。根据播报场景挂接广告播报(rangetype),向客户端下发播报标识:音频序号(广告id)、插播方式。
(1)本地存在:下发“音频+文本”的播报通知,内容包含:(帅奇) 广告id
- 插播方式
- 本地绝对路径
(2)不存在:正常下发“文本”的播报通知,按原有TBT播报逻辑。
2、播放
客户端根据收到内容进行播放,音频碰撞逻辑见2音频播报碰撞逻辑。
若本地音频路径错误(如已被删除),则音频+文本均不播报。(刘超)
3、回传
客户端播报完成后,将状态回传给鹰巢,由鹰巢传给动态信息服务进行记录。
回传内容:
(1)场景id:动态时间+透出行驶构成的唯一id,由服务产生
(2)播报状态:
- 播报完成
- 播报失败,包含未播出、被打断
1.3 埋点记录
(1)下载状态
下载失败,记录一次。参数包含,广告id
(2)播报完成
播报结束,参数包含:事件id(TBT给出)
2 音频播放碰撞逻辑
2.1 整体原则
在其他端内音频播放中,不打断;
2.2 各场景细分
1、与小德语音
保持小德语音交互高优先级。
| 场景 | 规则 |
|---|---|
| 唤醒小德 | 2、音频播报过程中,手动点击小德唤醒,进入语音交互,音频结束播放。 |
| 小德交互过程中 | 1、小德录音或播报中,不播报广告音频。 |
2、与组队语音消息
| 场景 | 规则 |
|---|---|
| 组队录音 | 1、组队开始录音时,打断音频播报。 2、录音期间,出现音频,不播报。 |
| 组队播报 | 1、先到先播 2、组队消息后到,等音频播报结束后播出组队开始播报时,若有音频正在播报,要等音频先播报结束。 2、有组队消息播报期间,有音频播报时机到来,舍弃音频播报 |
3、与语音主动交互
| 场景 | 规则 |
|---|---|
| 主动交互 | 1、音频播报过程中,收到主动交互通知,判断为不满足客户端主动交互限制条件,将主动交互舍掉。 2、主动交互过程中,不播报广告音频。 |
4、 与TBT
音频与TBT播报的下发和播报时机,均由TBT判断,客户端不做碰撞逻辑。
5、 与三方音乐、音频
| 场景 |
规则 |
|---|---|
| 三方音频 | 1、三方音频播放时,端内音频自动播放: - 安卓端根据导航设置选择,中断或压低三方音频。 - iOS端压低三方音频。 |
