首页 文章

更新audio.currentTime重置为0 - 意外行为(Django?)

提问于
浏览
0

我正在尝试更新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 回答

  • 0

    对于任何挣扎于同一问题的人 . 我是通过django-admin将媒体资源上传到我的静态目录 . 出于某种原因(仅限Chrome),我的资产缺少必要的 Headers : Accept-Ranges: bytesContent-Range: bytes <some bytes>/<total bytes> . 我找不到更简单的解决方案,所以我将文件上传路由到发布到AWS S3存储桶,我可以轻松管理权限/ Headers 等 . 我按照this tutorial执行非常简单 . 根据我的理解,这(非静态文件的专用托管)通常是应该发生的事情 . 我希望没有人再与此斗争 .

相关问题