Azure 媒体服务流式传输部分内容
Azure Media Services Stream Partial Content
我正在考虑使用 Azure 媒体服务来存储媒体文件,主要是歌曲。
然后我只想将歌曲的前 20-30 秒流式传输给用户。
这可以做到吗?
感谢您的帮助
答案是过滤器和动态清单
您可以使用媒体服务为您的资产定义过滤器。从 2.11 版本开始,媒体服务使您能够为资产定义过滤器。这些过滤器是服务器端规则,可帮助您的客户执行某些操作,例如播放视频的特定部分或指定客户设备可以处理的音频和视频再现的子集(而不是与资产关联的所有再现)。
此过滤是通过在您的客户请求基于一个或多个指定过滤器流式传输视频时创建的动态清单实现的。
有关详细信息,请参阅过滤器和动态清单:
https://docs.microsoft.com/en-us/azure/media-services/media-services-dynamic-manifest-overview
此外,您还可以使用媒体服务 .NET SDK 创建、更新和删除过滤器。
注意:如果您更新过滤器,流式处理终结点最多可能需要 2 分钟才能刷新规则。如果内容是使用此过滤器提供的(并缓存在代理和 CDN 缓存中),更新此过滤器可能会导致播放器失败。建议在更新过滤器后清除缓存。如果此选项不可行,请考虑使用不同的过滤器。
Create/Update/Read/Delete 全局过滤器
以下代码展示了如何使用 .NET 创建、更新、读取和删除资产过滤器。
string filterName = "GlobalFilter_" + Guid.NewGuid().ToString();
List<FilterTrackSelectStatement> filterTrackSelectStatements = new List<FilterTrackSelectStatement>();
FilterTrackSelectStatement filterTrackSelectStatement = new FilterTrackSelectStatement();
filterTrackSelectStatement.PropertyConditions = new List<IFilterTrackPropertyCondition>();
filterTrackSelectStatement.PropertyConditions.Add(new FilterTrackNameCondition("Track Name", FilterTrackCompareOperator.NotEqual));
filterTrackSelectStatement.PropertyConditions.Add(new FilterTrackBitrateRangeCondition(new FilterTrackBitrateRange(0, 1), FilterTrackCompareOperator.NotEqual));
filterTrackSelectStatement.PropertyConditions.Add(new FilterTrackTypeCondition(FilterTrackType.Audio, FilterTrackCompareOperator.NotEqual));
filterTrackSelectStatements.Add(filterTrackSelectStatement);
// Create
IStreamingFilter filter = _context.Filters.Create(filterName, new PresentationTimeRange(), filterTrackSelectStatements);
// Update
filter.PresentationTimeRange = new PresentationTimeRange(timescale: 500);
filter.Update();
// Read
var filterUpdated = _context.Filters.FirstOrDefault();
Console.WriteLine(filterUpdated.Name);
// Delete
filter.Delete();
Create/Update/Read/Delete 资产过滤器
以下代码展示了如何使用 .NET 创建、更新、读取和删除资产过滤器。
string assetName = "AssetFilter_" + Guid.NewGuid().ToString();
var asset = _context.Assets.Create(assetName, AssetCreationOptions.None);
string filterName = "AssetFilter_" + Guid.NewGuid().ToString();
// Create
IStreamingAssetFilter filter = asset.AssetFilters.Create(filterName,
new PresentationTimeRange(),
new List<FilterTrackSelectStatement>());
// Update
filter.PresentationTimeRange =
new PresentationTimeRange(start: 6000000000, end: 72000000000);
filter.Update();
// Read
asset = _context.Assets.Where(c => c.Id == asset.Id).FirstOrDefault();
var filterUpdated = asset.AssetFilters.FirstOrDefault();
Console.WriteLine(filterUpdated.Name);
// Delete
filterUpdated.Delete();
更多信息请参考:https://docs.microsoft.com/en-us/azure/media-services/media-services-dotnet-dynamic-manifest
我正在考虑使用 Azure 媒体服务来存储媒体文件,主要是歌曲。 然后我只想将歌曲的前 20-30 秒流式传输给用户。
这可以做到吗?
感谢您的帮助
答案是过滤器和动态清单
您可以使用媒体服务为您的资产定义过滤器。从 2.11 版本开始,媒体服务使您能够为资产定义过滤器。这些过滤器是服务器端规则,可帮助您的客户执行某些操作,例如播放视频的特定部分或指定客户设备可以处理的音频和视频再现的子集(而不是与资产关联的所有再现)。
此过滤是通过在您的客户请求基于一个或多个指定过滤器流式传输视频时创建的动态清单实现的。
有关详细信息,请参阅过滤器和动态清单:
https://docs.microsoft.com/en-us/azure/media-services/media-services-dynamic-manifest-overview
此外,您还可以使用媒体服务 .NET SDK 创建、更新和删除过滤器。
注意:如果您更新过滤器,流式处理终结点最多可能需要 2 分钟才能刷新规则。如果内容是使用此过滤器提供的(并缓存在代理和 CDN 缓存中),更新此过滤器可能会导致播放器失败。建议在更新过滤器后清除缓存。如果此选项不可行,请考虑使用不同的过滤器。
Create/Update/Read/Delete 全局过滤器
以下代码展示了如何使用 .NET 创建、更新、读取和删除资产过滤器。
string filterName = "GlobalFilter_" + Guid.NewGuid().ToString();
List<FilterTrackSelectStatement> filterTrackSelectStatements = new List<FilterTrackSelectStatement>();
FilterTrackSelectStatement filterTrackSelectStatement = new FilterTrackSelectStatement();
filterTrackSelectStatement.PropertyConditions = new List<IFilterTrackPropertyCondition>();
filterTrackSelectStatement.PropertyConditions.Add(new FilterTrackNameCondition("Track Name", FilterTrackCompareOperator.NotEqual));
filterTrackSelectStatement.PropertyConditions.Add(new FilterTrackBitrateRangeCondition(new FilterTrackBitrateRange(0, 1), FilterTrackCompareOperator.NotEqual));
filterTrackSelectStatement.PropertyConditions.Add(new FilterTrackTypeCondition(FilterTrackType.Audio, FilterTrackCompareOperator.NotEqual));
filterTrackSelectStatements.Add(filterTrackSelectStatement);
// Create
IStreamingFilter filter = _context.Filters.Create(filterName, new PresentationTimeRange(), filterTrackSelectStatements);
// Update
filter.PresentationTimeRange = new PresentationTimeRange(timescale: 500);
filter.Update();
// Read
var filterUpdated = _context.Filters.FirstOrDefault();
Console.WriteLine(filterUpdated.Name);
// Delete
filter.Delete();
Create/Update/Read/Delete 资产过滤器
以下代码展示了如何使用 .NET 创建、更新、读取和删除资产过滤器。
string assetName = "AssetFilter_" + Guid.NewGuid().ToString();
var asset = _context.Assets.Create(assetName, AssetCreationOptions.None);
string filterName = "AssetFilter_" + Guid.NewGuid().ToString();
// Create
IStreamingAssetFilter filter = asset.AssetFilters.Create(filterName,
new PresentationTimeRange(),
new List<FilterTrackSelectStatement>());
// Update
filter.PresentationTimeRange =
new PresentationTimeRange(start: 6000000000, end: 72000000000);
filter.Update();
// Read
asset = _context.Assets.Where(c => c.Id == asset.Id).FirstOrDefault();
var filterUpdated = asset.AssetFilters.FirstOrDefault();
Console.WriteLine(filterUpdated.Name);
// Delete
filterUpdated.Delete();
更多信息请参考:https://docs.microsoft.com/en-us/azure/media-services/media-services-dotnet-dynamic-manifest