Azure媒体服务流部分内容

时间:2017-06-08 23:29:50

标签: azure streaming

我正在考虑使用Azure媒体服务来存储媒体文件,主要是歌曲。 然后我想只将歌曲的前20-30秒流式传输给用户。

可以这样做吗?

感谢您的帮助

1 个答案:

答案 0 :(得分:1)

答案是过滤器和动态清单

您可以使用Media Services为资产定义过滤器。从2.11版本开始,Media Services允许您为资产定义过滤器。这些过滤器是服务器端规则,可帮助您的客户执行诸如播放视频的特定部分或指定客户设备可以处理的音频和视频再现的子集(而不是与之关联的所有再现)。资产)。

此过滤是通过客户根据一个或多个指定过滤器请求流式传输视频时创建的动态清单来实现的。

有关详细信息,请参阅过滤器和动态清单:

https://docs.microsoft.com/en-us/azure/media-services/media-services-dynamic-manifest-overview

此外,您可以使用Media Services .NET SDK来创建,更新和删除过滤器。

注意: 如果更新过滤器,流式端点最多可能需要2分钟才能刷新规则。如果使用此过滤器提供内容(并缓存在代理和CDN缓存中),则更新此过滤器可能会导致播放器失败。建议在更新过滤器后清除缓存。如果无法使用此选项,请考虑使用其他过滤器。

创建/更新/读取/删除全局过滤器

以下代码显示了如何使用.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();

创建/更新/读取/删除资产过滤器

以下代码显示了如何使用.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