Azure 媒体服务定位器

Azure Media Services Locators

基于我之前的问题,我仍然没有找到定位器。

如果我创建了一个持续 1 小时的定位器,当它过期时我如何知道当前定位器已过期?

我认为我需要存储 assetId,以便稍后请求它。

认为主要问题是当旧定位器过期时如何创建新定位器,但我如何知道旧定位器已过期?

下面的代码是我获取定位器的代码,但无法确定定位器是否已过期。

        // Try and get an access policy and reuse it if found
        var tempPolicyId = from a in _context.AccessPolicies
            where a.Name == PolicyName
            select a;

        IAccessPolicy accessPolicy = null;

        if (tempPolicyId.Count() < 1)
        {
            accessPolicy = _context.AccessPolicies.Create(
                PolicyName,
                TimeSpan.FromMinutes(5), // expire in 5 minutes
                AccessPermissions.List | AccessPermissions.Read);
        }
        else
        {
            accessPolicy = tempPolicyId.FirstOrDefault();
        }
        _context.Locators.CreateLocator(
            LocatorType.OnDemandOrigin,
            asset,
            accessPolicy,
            DateTime.UtcNow.AddMinutes(-5));

        _context.Locators.CreateLocator(
            LocatorType.Sas,
            asset,
            accessPolicy,
            DateTime.UtcNow.AddMinutes(-5));
    }

非常感谢您的帮助,谢谢

我强烈建议尽量少存储资产 ID。从中你可以找到关于资产的任何信息。如果您像您建议的那样使用短期定位器,那么存储到期日期也不错。我认为 1 小时是短暂的。我经常创建 10 年或 100 年的定位器,然后通过 DRM 管理访问。

要知道定位器何时过期,您可以调用 ILocator.ExpirationDateTime.ToUniversalTime() 来查找 date/time 它将会或已经过期。

当定位器过期时,如果您已达到 5 个定位器限制,则需要将其删除,然后才能添加新定位器。您也可以调用 ILocator.Update(DateTime newExpiryTime)