-1

我希望通过http://attendedstorage.com/videotest2.html播放带有 mp4 视频的 .vtt 字幕文件

但是,没有看到 .vtt 是否托管在 Azure blob 中。我已经在 Chrome 和 IE10 中进行了测试。

我确实设置了“内容类型:txt/vtt”。

这个问题分为三个部分:

1)每个Chrome开发工具http://cropme.ru/a672cceae9962b975f15b6ddacfe061e的浏览器没有读取.vtt - 我可以帮助找出原因......

2) 我还为 blob 服务启用了 CORS。但是,当我无法使用以下工具设置“Access-Control-Allow-Origin:*”或“Access-Control-Allow-Origin:*.attendedstorage.com”时:

根据http://cropme.ru/546c699f8a1264994c18a624eeaa5060 - Cerebrata AMS - 设置 CORS 但没有可用于设置“Access-Control-Allow-Origin:*”的 http 标头 http://cropme.ru/20ac02af8b883e7cf09f4f076e137770

根据http://cropme.ru/f95fbbcf94c26b65f48163ee4dc98194 - Zudio - 无法设置“访问控制允许来源:*” 根据http://cropme.ru/bad39b334aad865a20ac016f981038be - Cloudberry - 允许设置“访问控制允许来源: *" 但是当你查看它是否注册时不会保留它。

我还没有达到知道如何直接使用 API 的水平,所以我更喜欢使用工具。

3)我还测试了 azure 网站的视频文件夹中的 mp4 和 vtt,但即使在同一个域上,也无法识别 vtt。在域标题下方:

    WEBVTT HEADER 
    Remote Address:137.117.84.54:80
    Request URL:http://attendedstorage.com/test3.vtt
    Request Method:GET
    Status Code:404 Not Found
    Request Headersview source
    Accept:*/*
    Accept-Encoding:gzip,deflate,sdch
    Accept-Language:en-US,en;q=0.8
    Cache-Control:no-cache
    Connection:keep-alive
    Host:attendedstorage.com
    Pragma:no-cache
    Referer:http://attendedstorage.com/videotest3.html
    User-Agent:Mozilla/5.0 (Windows NT 5.1) AppleWebKit/537.36 (KHTML, like Gecko)              
    Chrome/34.0.1847.116 Safari/537.36
    Response Headersview source
    Content-Length:103
    Content-Type:text/html
    Date:Sun, 20 Apr 2014 23:49:36 GMT
    Server:Microsoft-IIS/8.0
    X-Powered-By:ASP.NET

    MP4 VIDEO HEADER
    Request URL:http://attendedstorage.com/test3.mp4
    Request Headers CAUTION: Provisional headers are shown.
    Accept-Encoding:identity;q=1, *;q=0
    Cache-Control:no-cache
    Pragma:no-cache
    Range:bytes=0-
    Referer:http://attendedstorage.com/videotest3.html
    User-Agent:Mozilla/5.0 (Windows NT 5.1) AppleWebKit/537.36 (KHTML, like Gecko) 
    Chrome/34.0.1847.116 Safari/537.36

更新:我已经修改了http://attendedstorage.com/videotest3.html的版本,以测试将视频链接到轨道(这意味着这不应与http://attendedstorage.com/相同的域来源) test3.mp4https://attendedstorage.com/test3.vtt。以下是 Chrome 控制台的内容:

    InText track from origin 'https://assetsattendedstorage.com'has been blocked from loading:         
    Not at same origin as the document, and parent of track element does not have a 'crossorigin' 
    attribute. Origin 'http://attendedstorage.com' is therefore not allowed access. 
    videotest3.html:1
    GET http://attendedstorage.com/test3.vtt 404 (Not Found) videotest3.html:1

这使我认为要解决上述问题的第 3 部分),如果那是“track 元素的父级”,我还需要在 azure 网站中设置 http 标头 - 我正在尝试阅读 Azure Powershell 但是我更喜欢通过 GUI 或工具(如果存在允许我更改 Attendstorage.com azure 网站中的 http 标头)的工具,因为我需要一段时间才能了解 Powershell。我仍然不明白为什么在这种情况下需要这样做,因为视频和曲目来自与 html 文件相同的域。由于我确实在 blob 中启用了 CORS,但我无法使用工具来更改 blob 中的 http 标头“Access-Control-Allow-Origin:*”,因此这也仍然存在第 2 部分)问题。

4

3 回答 3

3

我在所有屏幕截图中注意到的一件事是,对于允许的来源,您尝试将值设置为http://*.attendedstorage.com. 我的猜测是它引起了问题。在允许的来源中定义的 URL 应该与发起跨浏览器请求的实际 URL 完全匹配(并且区分大小写)。来自documentation page

AllowedOrigins:允许通过 CORS 向存储服务发出请求的源域。源域是发出请求的域。请注意,来源必须与用户年龄发送 到服务的来源完全区分大小写 。您还可以使用通配符“*”来允许所有源域通过 CORS 发出请求。在上面的示例中,域http://www.contoso.comhttp://www.fabrikam.com可以使用 CORS 对服务发出请求。

您可以尝试的一件事是指定实际的域名 ( http://attendedstorage.com, https://attendedstorage.com),看看是否有帮助。如果这不起作用,请尝试通过指定*(即允许所有域名)来缩小问题范围。

于 2014-04-25T11:53:42.810 回答
0

我不确定你的情况。但是上周我在将我的内容/blob 直接从 JavaScript 上传到云时遇到了同样的问题。我的问题的解决方案是我创建我的 SAS(安全访问签名)的方式,一个有用的MSDN 博客 帮助了我,它可能对你们所有人都有帮助。

我缺少的代码是

private static void ConfigureCors(ServiceProperties serviceProperties)
{
    serviceProperties.Cors = new CorsProperties();
    serviceProperties.Cors.CorsRules.Add(new CorsRule()
    {
        AllowedHeaders = new List<string>() { "*" },
        AllowedMethods = CorsHttpMethods.Put | CorsHttpMethods.Get | CorsHttpMethods.Head | CorsHttpMethods.Post,
        AllowedOrigins = new List<string>() { "*" },
        ExposedHeaders = new List<string>() { "*" },
        MaxAgeInSeconds = 1800 // 30 minutes
     });
}

它基本上向 SAS Url 添加了一些规则,我可以将文件上传到 blob。

于 2014-04-25T14:37:32.453 回答
-1

关于这个parent of track element does not have a 'crossorigin' attribute.问题,它不是指 azure blob 存储,而是指加载曲目的 HTML 文件。crossorigin 是要设置为<track \>标签父级的属性,例如<video controls crossorigin="anonymous">.

如果您可以解决有关在 azure 中设置 HTTP 标头的问题,那么将属性 crossorigin 添加到您的视频或音频标签应该可以解决整个问题。

于 2015-05-25T18:04:00.520 回答