Node.js 播放、暂停和播放问题;使用Actions Builder在Google Assistant(Google上的操作)上恢复直播音频/MP3?
这是我在StackOverflow上的第一篇帖子(长期潜伏者,第一次张贴海报),所以对我放轻松 对于那些在使用静态mp3实现播放/暂停/恢复功能方面遇到困难的人,我假设过程是相同的,所以希望这篇文章也能对你们有所帮助。 我正在构建一个实时的mp3流媒体GoogleAction,在新的Actions控制台中实现它似乎有问题 根据此处找到的Google Actions文档: -最后更新日期:UTC 2021-03-10 我应该能够使用上面链接中提供的YAML/JSON示例调用媒体响应向用户播放mp3,但是,播放、暂停和恢复似乎不能正确使用流式mp3 URL TLDR;以下是简短的总结: 有关更详细的分析,请参见以下内容: 复制步骤 从文档中提供的示例开始,在场景的Enter部分弹出JSON版本示例代码(为了方便起见发布在这里);我能够很好地扮演媒体角色Node.js 播放、暂停和播放问题;使用Actions Builder在Google Assistant(Google上的操作)上恢复直播音频/MP3?,node.js,google-cloud-platform,actions-on-google,audio-streaming,google-home,Node.js,Google Cloud Platform,Actions On Google,Audio Streaming,Google Home,这是我在StackOverflow上的第一篇帖子(长期潜伏者,第一次张贴海报),所以对我放轻松 对于那些在使用静态mp3实现播放/暂停/恢复功能方面遇到困难的人,我假设过程是相同的,所以希望这篇文章也能对你们有所帮助。 我正在构建一个实时的mp3流媒体GoogleAction,在新的Actions控制台中实现它似乎有问题 根据此处找到的Google Actions文档: -最后更新日期:UTC 2021-03-10 我应该能够使用上面链接中提供的YAML/JSON示例调用媒体响应向用户播放mp3
{
"candidates": [
{
"first_simple": {
"variants": [
{
"speech": "This is a media response."
}
]
},
"content": {
"media": {
"optional_media_controls": [
"PAUSED",
"STOPPED"
],
"media_objects": [
{
"name": "Media name",
"description": "Media description",
"url": "https://storage.googleapis.com/automotive-media/Jazz_In_Paris.mp3",
"image": {
"large": {
"url": "https://storage.googleapis.com/automotive-media/album_art.jpg",
"alt": "Jazz in Paris album art"
}
}
}
],
"media_type": "AUDIO"
}
}
}
]
}
注意:在上面的JSON中,我删除了start\u offset
节点,因为它目前不受iOS支持,并且可能作为测试目的的示例放在那里
下面是一个静态mp3媒体响应播放示例,以供参考:
我注意到,除非启用以下系统意图,否则暂停和恢复静态mp3不起作用:
MEDIA_STATUS_PAUSED
MEDIA_STATUS_STOPPED
MEDIA_STATUS_FAILED
MEDIA_STATUS_FINISHED
否则,如果您单击媒体响应播放器上的“暂停”图标或调用暂停earcon(earcon=ear+图标),您将遇到以下错误:
Sorry, [Your Action’s Display Name] isn't responding right now. Please try again soon.
在场景的错误和状态处理
部分,我添加了系统意图,如下面的屏幕截图所示
请注意,如果我只是将“暂停”的媒体状态转换为“无转换”,则会显示一条错误消息,“playStreamingAudio”的事件处理程序有一个空函数调用和/或空转换。
如果转到“结束对话”,它将结束测试并退出媒体响应卡,而不是让我选择继续(这似乎是一个糟糕的用户/对话流程,可能无法通过审查)
点击“暂停”图标,键入或说“暂停”都不起作用,除非媒体状态“暂停”转换到另一个场景,我称之为pauseStreamingAudio
在pauseStreamingAudio
场景中,我添加了一个提示,让用户知道他们可以说“play”或“cancel”,并给出了相应的建议
{
"candidates": [
{
"first_simple": {
"variants": [
{
"speech": "You can say play to resume audio or cancel to quit."
}
]
},
"suggestions": [{
"title": "Play"
}, {
"title": "Cancel"
}]
}
]
}
在pauseStreamingAudio
场景中,我添加了一个自定义的意图“play”,以返回到我调用的前一个场景playSreamingAudio
我不确定我是否做得对,但它是有效的
流式mp3
现在我把基础工作了,我把静态MP3交换到流音频。下面是示例代码JSON生成器,其中删除了流式mp3链接和“开始偏移量”,并删除了流式mp3链接
{
"candidates": [
{
"first_simple": {
"variants": [
{
"speech": "This is a media response."
}
]
},
"content": {
"media": {
"optional_media_controls": [
"PAUSED",
"STOPPED"
],
"media_objects": [
{
"name": "Media name",
"description": "Media description",
"url": "https://prod-35-230-37-193.wostreaming.net/momentum-kvmifmaac-ibc2",
"image": {
"large": {
"url": "https://storage.googleapis.com/automotive-media/album_art.jpg",
"alt": "Jazz in Paris album art"
}
}
}
],
"media_type": "AUDIO"
}
}
}
]
}
我正在测试的流文件的内容类型并没有明确以*.mp3结尾,当我检查内容类型时,它被读取为audio/aacp
Codec: ADTS
Type: Audio
Channels: Stereo
Sample Rate: 44100 Hz
Bits per Sample: 32
AAC Extension: SBR+PS
这就像我能从源文件流式传输音频一样。请参见下面的屏幕截图
但是,在右下角的时间索引处,媒体响应播放机出现显示错误无限:NaN:NaN
(在红色框中突出显示)
可能是相关的,我不能再触发暂停系统意图了。相反,我得到了以下错误:
请注意,下拉列表是打开的,没有响应供我使用和进行故障排除
我还试着查看谷歌文档上的操作,看看我提供的音频流是否有问题,我能找到的最好的东西是
“用于播放的音频必须是格式正确的MP3文件。MP3文件必须托管在web服务器上,并通过HTTPS URL公开。仅MP3格式支持实时流媒体。”
我在这里的SSML页面上找到了一些关于mp3规格的信息,但我不确定这是否适用于媒体响应-最近更新的是2021-05-25 UTC
有没有人对我如何让它工作,甚至解决这个问题有什么想法
这些情况中的一些可能是媒体播放器本身的问题吗?如何着手解决这个问题
不管怎样,我希望这能帮助一些人&提前非常感谢。非常感谢您的帮助
Codec: ADTS
Type: Audio
Channels: Stereo
Sample Rate: 44100 Hz
Bits per Sample: 32
AAC Extension: SBR+PS