在Chrome中请求第二个视频流会播放第一个视频

时间:2018-05-07 16:19:26

标签: .net google-chrome video stream seek

在.NET Core中开发了一个用于流式传输视频内容的应用程序。与html5视频元素,206部分数据包功能(可以正确搜索)工作得很好。在我尝试播放新的不同视频后,Chrome仍会播放第一个视频。

我在IE或Firefox中没有这个问题,坦率地说,去年曾经在Chrome上运行良好。我怀疑他们最近在Chrome中改变了什么?

此外,刷新页面软,硬或缓存重置仍将只播放第一个视频。只有打开一个新的Chrome标签,它似乎“重置”并允许我播放第二个视频,反之亦然。

当正在播放“不正确”的第一个视频时,如果我直接通过右下角的Chrome HTML5播放器图标下载,它会下载正确的第二个视频,这更加奇怪!

以下是更多信息:

  • Chrome是最新版本66.0
    • 当我尝试流式传输第二个视频时,来自网络的206个部分数据包是第二个视频的数据,因此我可以 确认服务器正在发送第二个视频
    • 如果在播放第一个视频期间发送第二个206数据包(例如,只要我不寻求),则不会发生此问题。如果我 不要寻求,我可以在第一和第二视频之间没有问题。一旦请求第二个206数据包,似乎只有在回放期间才能坚持使用第一个视频。
    • 只有1个视频播放器标签,但我可以从列表中选择/选择视频。我一次只播放一个视频。

1 个答案:

答案 0 :(得分:0)

固定。以下是导致此问题的原因:

我对该视频的请求是GET to / Download?uid = 12345,后者又重定向到/ GetItem(12345将存储在cookie中)。

对部分206数据包的后续请求也将是GET / GetItem。做了一些阅读,尝试了书中的所有内容,并意识到谷歌浏览器可能需要为每个新请求看到不同的网址,否则它将播放较旧的缓存流。

解决方案:

我将重定向更改为/ GetItem?uid = someRandomNumber(每次调用此操作时都会更改),现在,当我在每个视频之间点击时,视频会正确流式传输。