1

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

以下是我采取的步骤:

  1. 在 Windows Azure 管理控制台中设置媒体服务。
  2. 在“内容”选项卡中,上传了一个视频文件。可以在此处找到确切的视频文件: https ://archive.org/download/Windows7WildlifeSampleVideo/Wildlife_512kb.mp4
  3. 上传成功后,我点击视频,然后点击“编码”
  4. 从编码选项中,我选择了通用预设:“通过 HTML5 (IE/Chrome/Safari) 播放”。
  5. 然后我点击了“复选框”。
  6. 成功编码后,我单击了发布按钮。生成的 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 播放器时,视频永远不会加载。有没有人让 OSM Player 可以处理托管在 Windows Azure 媒体服务上的视频?如果是这样,是否有任何特殊设置需要用于编码或播放?

谢谢!

4

1 回答 1

1

门户中的“通过 HTML5 (IE/Chrome/Safari) 播放”选项映射到 Azure 媒体预设“H264 宽带 720p”。(有关系统提供的可用列表,请参阅http://msdn.microsoft.com/en-us/library/azure/dn619392.aspx)。此预设生成单比特率 mp4 文件、扩展名为 *.ism 的清单文件和 2 个带有元数据的 xml 文件。

您列出的网址是资产容器的网址,而不是您需要使用的 mp4 文件的网址。通过 osm player 播放资产有两种方式:指向 Azure 存储(SAS 定位器)和指向 Azure 媒体服务源服务器。下面的示例演示了如何为这两种情况构建 uri。在 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";
于 2015-01-06T23:09:34.513 回答