Chrome 当前时间重置为0 -意外行为(Django?)

fd3cxomn  于 2023-09-28  发布在  Go
关注(0)|答案(1)|浏览(105)

我试图更新一个html audio元素的currentTime,但是,无论我给予它什么值,它都会重置为0
我已经确认我传递的值小于音频文件的持续时间,大于0以下代码在html文件中按预期在本地工作,但在我的Django应用中表现出这种奇怪的行为。
超文本标记语言:

<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

我的所有其他音频相关功能都在工作。这种奇怪的行为发生在多个不同的音频文件中。我一直在寻找一个解决方案,但似乎没有什么与我的具体情况有关。我认为这与Django的the following comment from another thread服务器有关。但我找不到更多关于这方面的信息。
我正面临着同样的问题。它正在处理一段代码,但是当我将它集成到Django应用程序中时,它失败了。它适用于Firefox,但不适用于Google Chrome。视频/音频文件并不重要,它发生在任何文件,我尝试的代码。我试图寻求的时间小于视频的持续时间。
任何帮助/提示都非常感谢。感谢阅读。

  • 编辑:我可以确认这在Firefox中不是一个问题,而且这可以按预期工作。我想这是Chrome的一个问题。
kxxlusnw

kxxlusnw1#

任何人都在为同样的问题而奋斗。我通过django-admin上传媒体资产到我的静态目录。由于某些原因(仅在Chrome中),我的资产缺少必要的标题:Accept-Ranges: bytesContent-Range: bytes <some bytes>/<total bytes>。我找不到更简单的解决方案,所以我将我的文件上传到AWS S3存储桶,在那里我可以轻松地管理权限/标题等。我遵循了this tutorial,实现起来真的很容易。据我所知,这(非静态文件的专用托管)通常是应该发生的事情。我希望再也没有人为此而挣扎了。

相关问题