Azure媒体服务流部分内容
我正在考虑使用Azure媒体服务来存储媒体文件,主要是歌曲。 然后,我只想将歌曲的前20-30秒流式传输给用户 这能做到吗 感谢您的帮助答案是过滤器和动态清单 您可以使用媒体服务为资产定义筛选器。从2.11版开始,Media Services允许您为资产定义筛选器。这些过滤器是服务器端规则,可帮助客户执行一些操作,如播放视频的特定部分,或指定客户设备可以处理的音频和视频格式副本的子集(而不是与资产关联的所有格式副本) 这种过滤是通过动态清单实现的,动态清单是在客户请求基于一个或多个指定的过滤器流式传输视频时创建的 有关更多信息,请参阅筛选器和动态清单: 此外,您还可以使用Media Services.NET SDK创建、更新和删除筛选器 注意:如果更新过滤器,流式处理端点刷新规则最多需要2分钟。如果使用此筛选器提供内容(并缓存在代理和CDN缓存中),则更新此筛选器可能导致播放机失败。建议在更新过滤器后清除缓存。如果此选项不可能,请考虑使用不同的筛选器。< /P> 创建/更新/读取/删除全局筛选器 下面的代码显示了如何使用.NET创建、更新、读取和删除资产筛选器Azure媒体服务流部分内容,azure,streaming,Azure,Streaming,我正在考虑使用Azure媒体服务来存储媒体文件,主要是歌曲。 然后,我只想将歌曲的前20-30秒流式传输给用户 这能做到吗 感谢您的帮助答案是过滤器和动态清单 您可以使用媒体服务为资产定义筛选器。从2.11版开始,Media Services允许您为资产定义筛选器。这些过滤器是服务器端规则,可帮助客户执行一些操作,如播放视频的特定部分,或指定客户设备可以处理的音频和视频格式副本的子集(而不是与资产关联的所有格式副本) 这种过滤是通过动态清单实现的,动态清单是在客户请求基于一个或多个指定的过滤器流
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();
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();
string filterName=“GlobalFilter_933;”+Guid.NewGuid().ToString();
List filterTrackSelectStatements=新建列表();
FilterTrackSelectStatement FilterTrackSelectStatement=新的FilterTrackSelectStatement();
filterTrackSelectStatement.PropertyConditions=新列表();
filterTrackSelectStatement.PropertyConditions.Add(新的FilterTrackNameCondition(“曲目名称”,FilterTrackCompareOperator.NotEqual));
filterTrackSelectStatement.PropertyConditions.Add(新的FilterTrackBitrateRange条件(新的FilterTrackBitrateRange(0,1),FilterTrackCompareOperator.NotEqual));
filterTrackSelectStatement.PropertyConditions.Add(新的FilterTrackTypeCondition(FilterTrackType.Audio,FilterTrackCompareOperator.NotEqual));
添加(filterTrackSelectStatement);
//创造
IStreamingFilter=\u context.Filters.Create(filterName,new PresentationTimeRange(),filterTrackSelectStatements);
//更新
filter.PresentationTimeRange=新PresentationTimeRange(时间刻度:500);
filter.Update();
//阅读
var filterUpdated=_context.Filters.FirstOrDefault();
Console.WriteLine(filterUpdated.Name);
//删除
filter.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();
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();
string assetName=“AssetFilter_”+Guid.NewGuid().ToString();
var asset=_context.Assets.Create(assetName,AssetCreationOptions.None);
string filterName=“AssetFilter_”+Guid.NewGuid().ToString();
//创造
IStreamingAssetFilter过滤器=资产.AssetFilters.Create(过滤器名称,
新建PresentationTimeRange(),
新列表());
//更新
filter.PresentationTimeRange=
新的PresentationTimeRange(开始:600000000,结束:72000000000);
filter.Update();
//阅读
asset=_context.Assets.Where(c=>c.Id==asset.Id).FirstOrDefault();
var filterUpdated=asset.AssetFilters.FirstOrDefault();
Console.WriteLine(filterUpdated.Name);
//删除
filterUpdated.Delete();
有关更多信息,请参阅: