iis 具有自动播放功能的HTML5视频阻止源文件夹被重命名

ubof19bj  于 2022-11-12  发布在  HTML5
关注(0)|答案(1)|浏览(102)

我遇到了一个奇怪的问题。我有一个网页,用户可以上传一个视频,视频在HTML5视频上播放(在标签中使用“autoplay”)。此外,在上传完成后,用户可以点击一个按钮来保存他们上传的内容,从而包含视频的文件夹被重命名。但是,如果他们点击保存按钮太快,IIS给出一个错误,文件夹不可用(重命名)。但是如果他们等待大约20秒进入视频播放,它重命名文件夹好。而且,如果视频不是在“自动播放”,它工作正常。
最初,我认为视频必须缓冲,所以我写了一些javascript来显示控制台中的事件,不,它不是缓冲...它只是播放和提供时间更新(这是正常的)。为了演示,这里有一个两种场景的事件输出图像,即,有/没有“自动播放”。

我想弄清楚HTML5视频是如何阻止文件夹被重命名的,这样用户就可以立即保存上传的视频(并重命名文件夹),而不必等待......或者,至少,向用户提供一条消息,让用户等待一段特定的时间后再单击按钮保存它。任何帮助都将不胜感激。
编辑:我已经试过暂停视频并删除来源,就像这样...

vid.pause();
vid.src = '';

...当用户单击“保存”按钮时,但它不起作用。

eoxn13cs

eoxn13cs1#

我找到了答案......这很棘手。当我在控制台中显示所有正在执行的视频事件时,我发现IE和Chrome报告“networkStatus”属性和“suspend”事件的方式不同。具体来说:

  • IE:当视频加载并开始自动播放时,不报告“onsuspend”事件。您只能通过检查“networkStatus”属性(必须等于1)来了解源文件的文件夹是否已释放。因此,我们希望:网络状态==1(并且“挂起“次数将为零)。
  • Chrome:在释放源文件夹之前,报告networkStatus == 1的事件...不要相信它。你必须检查发生了多少“onsuspend”事件(必须大于1),或者发生了多少“seekable”事件(至少其中一个)。因此,我们希望:大于1的“暂停“次数(不考虑networkStatus,它应该已经是1)。

因此,总的来说,下面是我用来检测源视频文件的文件夹何时被释放的逻辑:

var countofsuspends = 0;
vid.onsuspend = function() { countofsuspends += 1; }
if (vid.networkState == 1 && (countofsuspends != 1 || countofseeks > 0)) {} //...do something here...

上面的“&&”的第一部分是解决IE问题。第二部分是解决Chrome问题。
希望这对其他人有帮助。

相关问题