我正在尝试将OSM Player用作Windows Azure媒体服务上托管的视频的视频播放器。不幸的是,似乎OSM Player无法播放这些文件。
以下是我采取的步骤:
网址的潜在敏感部分已替换为[xxx]。
当我尝试将OSM Player与此视频一起使用时,视频永远不会加载。有没有人让OSM Player使用Windows Azure Media Services上托管的视频?如果是,是否需要使用任何特殊设置进行编码或播放?
谢谢!
答案 0 :(得分:1)
“通过HTML5(IE / Chrome / Safari)播放”选项在门户网站地图中映射到Azure媒体预设“H264 Broadband 720p”。 (有关系统提供的可用列表,请参阅http://msdn.microsoft.com/en-us/library/azure/dn619392.aspx)。 此预设生成单比特率mp4文件,显示扩展名为* .ism的文件和带元数据的2个xml文件。
您列出的网址是资产容器的网址,而不是您需要使用的mp4文件的网址。 有两种方法可以通过osm播放器播放资产:指向Azure存储(SAS定位器)并指向Azure Media Services Origin服务器。下面的示例演示了如何为两种方案构建uris。在sdk扩展方法中简化了Uri构造。请参阅https://github.com/Azure/azure-sdk-for-media-services-extensions中的定位器扩展程序。
//Fetching existing job
IJob job = _mediaContext.Jobs.Where(c => c.Id == "nb:jid:UUID:29e033f5-402d-bc47-8f8d-56d83ff6915c").FirstOrDefault();
//Assume it has 1 output asset
IAsset asset = job.OutputMediaAssets[0];
//Access policy to publish asset for 5 days
const string days = "5days";
IAccessPolicy policy = _mediaContext.AccessPolicies.Where(c=>c.Name == days).FirstOrDefault();
//If not exists we creating access policy
if (policy == null)
{
policy =_mediaContext.AccessPolicies.Create(days, TimeSpan.FromDays(5), AccessPermissions.Read | AccessPermissions.List);
}
//Remove previously used locators
_mediaContext.Locators.ToList().ForEach(c=>c.Delete());
//Creating Sas Locator. Users directly access asset through Azure storage
ILocator sasLocator = _mediaContext.Locators.CreateLocator(LocatorType.Sas, asset, policy);
IAssetFile mp4File = asset.AssetFiles.Where(c => c.Name.Contains(".mp4")).FirstOrDefault();
string srcUri = sasLocator.BaseUri + "/" + mp4File.Name + sasLocator.ContentAccessComponent;
//Creating OnDemandOrigin Locator. Users access assets through origin server
ILocator ondemandOriginLocator = _mediaContext.Locators.CreateLocator(LocatorType.OnDemandOrigin, asset, policy);
IAssetFile ismFile = asset.AssetFiles.Where(c => c.Name.Contains(".ism")).FirstOrDefault();
string ondemandUri = ondemandOriginLocator.Path + ismFile.Name +"/Manifest";