【问题标题】:Updating audio.currentTime resets to 0 - unintended behavior (Django?)更新 audio.currentTime 重置为 0 - 意外行为(Django?)
【发布时间】:2019-05-10 18:32:46
【问题描述】:

我正在尝试更新 html 音频元素的 currentTime,但是,无论我赋予它什么值,它都会不断重置为 0

我已经确认我传递的值小于音频文件的持续时间,并且大于0以下代码在 html 文件中按本地预期工作,但在我的 Django 应用程序中表现出这种奇怪的行为。

HTML:

<audio id="my-audio" preload="true" src="path/to/file.mp3" type="audio/mp3"></audio>

JavaScript:

var audio = document.getElementById('my-audio')
audio.play()
console.log(audio.currentTime) // result: 0.997171 or similar
console.log(audio.duration) // result 3596.06855
audio.currentTime = 500
console.log(audio.currentTime) // result: 0

我所有其他与音频相关的功能都在工作。这种奇怪的行为发生在多个不同的音频文件中。我已经搜索了一个解决方案,但似乎与我的特定情况无关。我认为这与the following comment from another thread 的 Django 服务器有关。但我找不到更多关于此的信息。

我也面临同样的问题。它正在处理一段代码,但是当我将它集成到 Django 应用程序中时,它失败了。它适用于 Firefox,但不适用于 Google Chrome。视频/音频文件无关紧要,我在代码上尝试的任何文件都会发生这种情况。我试图寻找的时间少于视频的持续时间。

非常感谢任何帮助/提示。感谢阅读。

* 编辑:我可以确认这在 Firefox 中不是问题,并且可以按预期工作。我想这是 Chrome 特有的问题。

【问题讨论】:

    标签: javascript django google-chrome audio


    【解决方案1】:

    对于任何在同一问题上苦苦挣扎的人。我正在通过 django-admin 将媒体资产上传到我的静态目录。由于某种原因(仅在 chrome 中),我的资产缺少必要的标题:Accept-Ranges: bytesContent-Range: bytes &lt;some bytes&gt;/&lt;total bytes&gt;。我找不到更简单的解决方案,所以我将文件上传路由到一个 AWS S3 存储桶,在那里我可以轻松管理权限/标头等。我遵循this tutorial 并且实施非常容易。据我了解,这(非静态文件的专用托管)通常是无论如何都应该发生的。我希望没有人再为此挣扎。

    【讨论】:

    • 这个问题似乎只发生在桌面版 Chrome 上。在我的情况下,适用于 Android 的 Chrome 运行良好。我希望这会给 Chrome 开发者一些想法来解决这个问题。
    猜你喜欢
    • 2015-05-11
    • 1970-01-01
    • 2020-04-04
    • 2021-06-27
    • 2020-02-01
    • 1970-01-01
    • 2017-12-09
    • 2014-09-25
    • 1970-01-01
    相关资源
    最近更新 更多