使用此Amazon-provided library,我正在研究alexa技能,该技能可播放短mp3文件队列。触发音频的代码如下所示:
this.response.audioPlayerPlay('REPLACE_ALL', mp3HttpsUrl, mp3HttpsUrl, null, 0);
(功能文档here)
在
PlaybackNearlyFinished
音频事件处理程序期间,将进一步调用此方法以将下一个音频文件URL排队。它可以正常工作,但是音频播放之间大约有3〜4秒的间隔。我想缩小差距,并尽可能地接近连续播放。
在浏览器设置中,可以通过在播放时间到来之前预先加载缓存来实现;当最终调用该URL时,浏览器仅从本地存储中播放该URL,从而提供几乎没有延迟的体验。
如何在alexa lambda函数中实现此目的?如何预加载“甲板上” URL,使其最终播放时没有间隙?
最佳答案
在您的audioatream播放命令中:将URL传递给包含您的mp3链接的m3u播放列表。
这样,这是Alexa的一个json包。另请注意,指向m3u的超链接必须为https。
我在Alexa文档中的某个地方看到它支持播放列表。
值得一提的是,我相信您会为播放列表中的每个项目收到接近完成的事件。
如果您的资料是数据库驱动的,则只需创建一个返回标准文本html header 的CGI,然后您就可以根据 token 或作为URL的一部分发送的唯一I即时动态创建m3u:
https://wackydimain.com/myscripts/dynamic_m3u.cgi?token=1234
关于audio - 在Lambda中预加载MP3音频URL(Alexa Skill),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50208780/