Предварительная загрузка MP3 Audio URL в Lambda (Alexa Skill) - PullRequest
0 голосов
/ 07 мая 2018

Используя эту предоставляемую Amazon библиотеку , я работаю над навыком alexa, который воспроизводит очередь коротких mp3-файлов. Код, который запускает звук, выглядит так:

this.response.audioPlayerPlay('REPLACE_ALL', mp3HttpsUrl, mp3HttpsUrl, null, 0);

(документация по функциям здесь )

Это также вызывается во время обработчика аудио события PlaybackNearlyFinished, чтобы поставить в очередь следующий URL аудиофайла.

Работает нормально, но между воспроизведением звука есть промежуток в 3 ~ 4 секунды. Я хотел бы сократить разрыв и обеспечить максимально близкое к непрерывному воспроизведение.

В настройках браузера это может быть достигнуто путем предварительной загрузки в кэш до наступления времени воспроизведения; когда URL-адрес наконец-то вызывается для воспроизведения, браузер просто воспроизводит его из локального хранилища, обеспечивая практически без задержек.

Как этого можно достичь с помощью лямбда-функции alexa? Как предварительно загрузить URL-адрес «на палубе», чтобы он в конечном итоге воспроизводился без перерыва?

1 Ответ

0 голосов
/ 11 октября 2018

В вашей команде audioatream play: передайте URL-адрес в список воспроизведения m3u, в котором содержится ваш список mp3-ссылок.

Таким образом, один пакет json отправляется в Alexa. Также обратите внимание, что гиперссылка на m3u должна быть https.

Я видел где-то в Alexa документах, что он поддерживает плейлисты.

Суть в том, что я считаю, что вы получите почти законченное событие для каждого элемента в вашем плейлисте.

Если ваш материал управляется базой данных, просто создайте CGI, который возвращает стандартный текстовый заголовок html, и вы можете динамически создавать свой m3u на лету, основываясь на токене или уникальном сообщении, которое вы отправили как часть своего URL:

https://wackydimain.com/myscripts/dynamic_m3u.cgi?token=1234
...