代码之家  ›  专栏  ›  技术社区  ›  Henri Hietala

HTML5视频循环在Chrome上不起作用(Sitefinity CMS)

  •  2
  • Henri Hietala  · 技术社区  · 11 年前

    我遇到了一个无法获取HTML5视频的特殊问题 在我的本地开发环境(ASP.NET+IIS7)上。视频自动播放很好。我的代码如下:

    <video id="frontpage-video" autoplay loop>
      <source src="http://test-site:8084/video_mp4.mp4" type="video/mp4">
      <source src="http://test-site:8084/video_webm.webm" type="video/webm">
    </video>
    

    若我将视频源URL更改为一些公开可用的URL(例如,dropbox),那个么循环工作得很好。这不是一个大问题,因为我认为(希望)一旦我的网站上线,视频公开后,它就会起作用。

    我的问题是:如果我的视频不公开,我可以制作视频循环吗?

    我在谷歌上找不到类似的问题。是否是某种IIS设置阻止了视频循环?

    更新1: 这个问题似乎只出现在Chrome中。Firefox和IE运行良好。

    更新2: 视频似乎会在结尾处停止,但对于element.ended来说永远不会返回真

    > document.getElementById('frontpage-video').duration;
    < 16.12
    
    > document.getElementById('frontpage-video').currentTime;
    < 16.12
    
    > document.getElementById('frontpage-video').ended;
    < false
    

    更新3 :问题出现在 IIS公司 或在 Telerik的Sitefinity CMS .服务器应发送“206部分内容”状态,但它发送200 OK。是否有Sitefinity用户遇到此问题并知道如何解决?

    4 回复  |  直到 11 年前
        1
  •  2
  •   brianchirls    11 年前

    看起来您的问题是您没有使用HTTP字节服务。您的服务器正在发送“200 OK”响应,但它应该发送“206部分内容”以及以下标题:

    Accept-Ranges:bytes
    Content-Range:bytes 0-1492370/1492371
    

    字节范围请求允许浏览器仅请求所需的文件部分。所以如果你四处寻找,它可以直接跳到这一点。

    有了常规的200条回复,你通常至少会发现你在视频中找不到。但是,根据视频文件的编码方式以及元数据在文件中的位置,您可能会看到更多问题。有时文件可能根本无法播放。WebM通常比MP4更健壮,MP4可以无处不在。

    我不太了解IIS,无法告诉您如何配置它,但请尝试从这里开始: http://blogs.visigo.com/chriscoulson/easy-handling-of-http-range-requests-in-asp-net/

        2
  •  2
  •   Henri Hietala    11 年前

    如果视频本身未提供,Chrome/Opera无法循环播放视频 HTTP 206部分内容 响应,但200 OK。

    问题是Sitefinity的存储提供商不支持部分内容(7.0版)。他们计划在未来实施这一点。

    目前,可能的解决方法是 使用外部blob存储提供程序 例如Azure、Amazon或ExternalFileSystem(ExternalFileSystemStorageProvider)。

    我从Sitefinity的支持团队获得了这些信息。

        3
  •  0
  •   nyxem1    11 年前

    可能是MIME类型。未为MP4设置IIS。 打开IIS,找到默认页面。您将在右侧窗格中看到MIME类型。 点击 Add 并将 field1=.mp4 field2=video/mp4 . 重新启动IIS。 希望这可能奏效。

        4
  •  0
  •   longi    11 年前
    • 在你的问题中 video -元素没有id frontpage视频(但我猜是复制粘贴?)
    • 检查 video end event 在webkit浏览器中调用,如果是,请重新启动视频。

    .

    <script type='text/javascript'>
    document.getElementById('frontpage-video').addEventListener('ended',myHandler,false);
    function myHandler(e) {
        if(!e) { e = window.event; }
        //restart your video
    }