首页 文章

OSM Player支持Windows Azure媒体服务

提问于
浏览
1

我正在尝试将OSM Player用作Windows Azure媒体服务上托管的视频的视频播放器 . 不幸的是,似乎OSM Player无法播放这些文件 .

以下是我采取的步骤:

  • 在Windows Azure管理控制台中设置媒体服务 .

  • 从"Content"标签中,上传了一个视频文件 . 确切的视频文件可以在这里找到:https://archive.org/download/Windows7WildlifeSampleVideo/Wildlife_512kb.mp4

  • 成功上传后,我点击了视频,然后点击"Encode"

  • 从编码选项中,我选择了Common Preset:"Playback via HTML5 (IE/Chrome/Safari)" .

  • 然后我点击"checkbox" .

  • 编码成功后,我点击了发布按钮 . 生成的URL看起来像这样:https:// [xxx] .blob.core.windows.net / [xxx] / Wildlife_512kb_H264_4500kbps_AAC_und_ch2_128kbps.mp4?sv=2012-02-12&st= [xxx]&se = [xxx]&sr = C&SI = [XXX]与SIG = [XXX]

URL的潜在敏感部分已替换为[xxx] .

当我尝试将OSM Player与此视频一起使用时,视频永远不会加载 . 有没有人让OSM Player使用Windows Azure Media Services上托管的视频?如果是,是否需要使用任何特殊设置进行编码或播放?

谢谢!

1 回答

  • 1

    门户网站中的"Playback via HTML5 (IE/Chrome/Safari)"选项映射到Azure Media预设"H264 Broadband 720p" . (有关系统提供的可用列表,请参阅http://msdn.microsoft.com/en-us/library/azure/dn619392.aspx) . 此预设生成单比特率mp4文件,显示扩展名为* .ism的文件和带元数据的2个xml文件 .

    您列出的网址是资产容器的网址,而不是您需要使用的网址的网址 . 有两种方法可以通过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";
    

相关问题