Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-cloud-platform/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js 播放、暂停和播放问题;使用Actions Builder在Google Assistant(Google上的操作)上恢复直播音频/MP3?_Node.js_Google Cloud Platform_Actions On Google_Audio Streaming_Google Home - Fatal编程技术网

Node.js 播放、暂停和播放问题;使用Actions Builder在Google Assistant(Google上的操作)上恢复直播音频/MP3?

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

这是我在StackOverflow上的第一篇帖子(长期潜伏者,第一次张贴海报),所以对我放轻松

对于那些在使用静态mp3实现播放/暂停/恢复功能方面遇到困难的人,我假设过程是相同的,所以希望这篇文章也能对你们有所帮助。

我正在构建一个实时的mp3流媒体GoogleAction,在新的Actions控制台中实现它似乎有问题

根据此处找到的Google Actions文档: -最后更新日期:UTC 2021-03-10

我应该能够使用上面链接中提供的YAML/JSON示例调用媒体响应向用户播放mp3,但是,播放、暂停和恢复似乎不能正确使用流式mp3 URL

TLDR;以下是简短的总结:

有关更详细的分析,请参见以下内容:

复制步骤 从文档中提供的示例开始,在场景的Enter部分弹出JSON版本示例代码(为了方便起见发布在这里);我能够很好地扮演媒体角色

{
  "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