具有AutoPlay阻止源文件夹的HTML5视频无法重命名

时间:2018-08-10 12:18:06

标签: javascript html5 iis video html5-video

我遇到了一个奇怪的问题。我有一个网页,用户可以上传视频,并且上传完成后,视频可以在HTML5视频上播放(使用标签中的“自动播放”)在小屏幕上。同样,在上传之后,用户可以单击按钮以保存他们已上传的内容,从而重命名包含视频的文件夹。但是,如果他们太快地单击“保存”按钮,则IIS会给出一个错误,指出该文件夹不可用(用于重命名)。但是,如果他们等待大约20秒的视频播放时间,它会重命名该文件夹。另外,如果视频不在“自动播放”中,则可以正常运行。

起初,我虽然必须在缓冲视频,但是我写了一些JavaScript来显示控制台中的事件,不,它不是在缓冲...它只是在播放并提供timeupdates(这是正常的)。为了演示,这是两种情况下事件输出的图像,即是否带有“自动播放”。

AutoPlay Issue

我想弄清楚HTML5视频正在做什么,以阻止该文件夹被重命名,以便用户可以立即保存上载的视频(并重命名该文件夹),而不必等待...或者至少,向用户提供一条消息,等待特定的时间,然后再单击按钮进行保存。任何帮助表示赞赏。

编辑:我试图暂停视频并删除源,就像这样...

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

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

1 个答案:

答案 0 :(得分:0)

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

  • IE:视频加载时,不报告“暂停”事件,并且 开始自动播放。您只能知道 通过检查“ networkStatus”属性释放源文件(必须 等于1)。因此,我们需要:networkStatus == 1(“挂起”的数目将为零)。
  • Chrome浏览器:报告网络状态== 1 源文件夹被释放...不信任它。您必须检查 发生了多少个“暂停”事件(必须大于 大于1)或发生了多少“可寻求”事件(至少其中之一)的计数。因此,我们想要:“挂起”的数量大于1(无论networkStatus,它应该已经是1)。

因此,总而言之,这是我用来检测何时释放源视频文件的文件夹的逻辑:

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

上面“ &&”的第一部分是解决IE问题。第二部分是解决Chrome问题。

希望这可以帮助其他人。