【问题标题】:Cannot play audio from Google Cloud Storage无法从 Google Cloud Storage 播放音频
【发布时间】:2022-01-12 06:13:54
【问题描述】:

请帮忙。我无法播放我的音频文件。它托管在 Google Cloud Storage 中,如果我只是在 localhost 服务器中运行它,但当我使用上传的服务器时,它就可以工作。我经常收到(failed)net::ERR_CONTENT_DECODING_FAILED

以下是我在 VueJS 中使用音频文件的方式

<template>
    <v-btn @click="triggerSound">Trigger Sound</v-btn>
    <audio id="notif" src="adn.wxt.com/zhuanchu.wav" />
</template>

<script>
    mounted() {
        this.notifyAudio = document.getElementById('notif')
    },
    methods: {
        async triggerSound() {
            this.notifyAudio.play()
        }
    },
</script>

更新

  • 在 Firefox 中运行良好

【问题讨论】:

  • 您找到问题的解决方案了吗?
  • @AkshanshaSinghal 还没有。明天,我会做一个赏金
  • 我已经复制了这个问题,并且可以将它上传到 Cloud Storage,正如您在 link 中看到的那样。您采取了哪些步骤?
  • 步骤是什么意思?我还没有修复它.. 虽然它在 Firefox 浏览器上运行良好
  • 您可以检查一次元数据吗?输入错误的元数据可能是这里的问题。

标签: vue.js google-cloud-storage


【解决方案1】:

您可能会收到此错误的原因有很多。

当 HTTP 请求的标头声称内容是 gzip 编码而实际上不是时会发生此错误(请参阅下面的内容以获得进一步的解释)。可以通过在您使用的浏览器中关闭 gzip 编码来修复此错误。

如果这不能解决您的问题,请尝试添加此标志 -> gcloud alpha storage cp gs://bucket/file.gz . --no-gzip-encoding

我的最后一个解决方案是传递 gsutil -h --header-download "Accept-Encoding: gzip"


关于错误的更深入解释

冗余行为

您不应将元数据设置为冗余报告对象的压缩:

gsutil setmeta -h "Content-Type:application/gzip" \
-h "Content-Encoding:gzip"

这意味着您正在上传 gzip 压缩的对象,该对象已被第二次 gzip 压缩,而通常情况并非如此。当在这样一个错误报告的对象上发生解压缩转码时,该对象被提供身份编码,但请求者认为他们收到的对象仍然具有与其关联的压缩层。 尝试解压对象将失败。

非 gzip 压缩的文件不应使用 Content-Encoding: gzip 上传。这样做会使对象看起来有资格进行转码,但是当对对象发出请求时,转码尝试会失败。

双重压缩

一些对象,例如许多视频、音频和图像文件,更不用说 gzip 文件本身,已经被压缩了。对此类对象使用 gzip 几乎没有任何好处:在几乎所有情况下,由于 gzip 开销,这样做会使对象变大。因此,通常不鼓励对压缩内容使用 gzip,这可能会导致不良行为。

例如,虽然 Cloud Storage 允许上传和存储“双重压缩”对象(即经过 gzip 压缩但也具有自身压缩的底层 Content-Type 的对象),但它不允许对象以双重压缩状态提供服务,除非它们的 Cache-Control 元数据包含 no-transform。相反,它删除了外部 gzip 压缩级别,删除了 Content-Encoding 响应标头,并提供了结果对象。即使对于带有 Accept-Encoding: gzip 的请求也会发生这种情况。因此,客户端接收到的文件与上传并存储在 Cloud Storage 中的文件没有相同的校验和,因此任何完整性检查都会失败。

【讨论】:

  • 给我一个准确的gsutil 命令
  • 我已将它们添加到我的答案中
  • 让我知道它是否有帮助或运行后的日志是什么:)
  • @DeanChristianArmada 你解决了吗?
  • 您的gsutil 命令不起作用。 gsutil -h --header-download "Accept-Encoding: gzip。我能够修复删除 -z 选项。
猜你喜欢
  • 2022-08-21
  • 1970-01-01
  • 2019-04-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多