我正在尝试更新html音频元素的 currentTime
,但是,无论我给它什么值,它都会一直重置为 0
.
我've confirmed that the values I'm传递小于音频文件的持续时间,并且大于 0
. The following code works as-intended locally in an html file, but exhibits this strange behavior in my Django app.
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
我所有其他音频相关功能都在工作 . 多个不同的音频文件会出现这种奇怪的行为 . 我've searched SO for a solution, but nothing seems relevant to my particular case. I'认为这与Django的服务器有关the following comment from another thread . 但我找不到更多关于此的信息 .
我面临同样的问题 . 它正在处理一段代码,但是当我将它集成到Django应用程序中时,它就失败了 . 它适用于Firefox但不适用于Google Chrome . 视频/音频文件没关系,它发生在我尝试代码的任何文件 . 我试图寻找的时间少于视频的持续时间 .
非常感谢任何帮助/提示 . 谢谢阅读 .
*编辑:我可以确认这不是Firefox中的问题,这可以按预期工作 . 我想这是一个专门针对Chrome的问题 .
1 回答
对于任何挣扎于同一问题的人 . 我是通过django-admin将媒体资源上传到我的静态目录 . 出于某种原因(仅限Chrome),我的资产缺少必要的 Headers :
Accept-Ranges: bytes
和Content-Range: bytes <some bytes>/<total bytes>
. 我找不到更简单的解决方案,所以我将文件上传路由到发布到AWS S3存储桶,我可以轻松管理权限/ Headers 等 . 我按照this tutorial执行非常简单 . 根据我的理解,这(非静态文件的专用托管)通常是应该发生的事情 . 我希望没有人再与此斗争 .