如何将视频上传到 Azure 媒体服务并在移动设备上观看?
How upload a video to Azure Media Services and watch it in a mobile?
好几次以来,我们都在尝试将视频上传到 Azure 媒体服务并在手机上观看。这在个人电脑上工作得很好,而且情况非常疯狂。
我们使用 .NET API 将视频上传到 Azure 媒体服务。
我们可以在 Azure 媒体播放器中观看该视频。但自从 Azure 管理以来就没有了(有一个观看视频的选项)。在 azure media player 示例查看器中都没有
然后...我们不知道问题出在 Azure 管理、Azure 媒体播放器中还是我们上传视频时(创建资产、编码、创建定位器和策略...)。
这是我的代码:
//Creamos el ASSET a apartir de un archivo
IAsset inputAsset = _context.Assets.CreateFromFile(video.PathFile, AssetCreationOptions.StorageEncrypted);
//Encode/Codificación del vídeo. Transformamos el primer asset en otro que será el realmente difundido. Se usa un patrón (JSON/XML) definido en video.Enconder
IAsset encodedAsset = EncodeToAdaptiveBitrate(inputAsset, AssetCreationOptions.None, video.Enconder, video.GetAssetName(), video);
//If I use "AssetDeliveryProtocol.All", throw error: "Account is not enabled for HDS streaming"
IAssetDeliveryPolicy policy = _context.AssetDeliveryPolicies.Create("Clear Policy", AssetDeliveryPolicyType.NoDynamicEncryption, AssetDeliveryProtocol.SmoothStreaming, null);
encodedAsset.DeliveryPolicies.Add(policy);
// Publish the output asset by creating an Origin locator for adaptive streaming
_context.Locators.Create(
LocatorType.OnDemandOrigin,
encodedAsset,
AccessPermissions.Read,
TimeSpan.FromDays(3650));
这是我的"Encoder":https://pastebin.com/zQ8rS73c
我注意到这里有几个问题可能是错误的。
- 您的帐户中是否启动了 Streaming Endpoint 并且 运行?首先确保它在那里。
- 不要使用 AssetDeliveryProtocol.All。 SDK 中存在一个问题,它试图在 Adobe HDS 中添加,我们正在放弃对它的支持。您可能只想使用在传输协议上流式传输所需的特定协议。所以使用以下
图案:
AssetDeliveryProtocol.SmoothStreaming | AssetDeliveryProtocol.Dash | AssetDeliveryProtocol.HLS | AssetDeliveryProtocol.ProgressiveDownload
您可能无法在 iOS 或 Android 客户端上播放任何内容,因为您只设置了允许 SmoothStreaming 的协议,而 SmoothStreaming 仅在桌面或自定义移动客户端上受支持.为 Android 添加 DASH,为 iOS 添加 Apple HLS 应该会有所帮助。
好几次以来,我们都在尝试将视频上传到 Azure 媒体服务并在手机上观看。这在个人电脑上工作得很好,而且情况非常疯狂。
我们使用 .NET API 将视频上传到 Azure 媒体服务。 我们可以在 Azure 媒体播放器中观看该视频。但自从 Azure 管理以来就没有了(有一个观看视频的选项)。在 azure media player 示例查看器中都没有
然后...我们不知道问题出在 Azure 管理、Azure 媒体播放器中还是我们上传视频时(创建资产、编码、创建定位器和策略...)。
这是我的代码:
//Creamos el ASSET a apartir de un archivo
IAsset inputAsset = _context.Assets.CreateFromFile(video.PathFile, AssetCreationOptions.StorageEncrypted);
//Encode/Codificación del vídeo. Transformamos el primer asset en otro que será el realmente difundido. Se usa un patrón (JSON/XML) definido en video.Enconder
IAsset encodedAsset = EncodeToAdaptiveBitrate(inputAsset, AssetCreationOptions.None, video.Enconder, video.GetAssetName(), video);
//If I use "AssetDeliveryProtocol.All", throw error: "Account is not enabled for HDS streaming"
IAssetDeliveryPolicy policy = _context.AssetDeliveryPolicies.Create("Clear Policy", AssetDeliveryPolicyType.NoDynamicEncryption, AssetDeliveryProtocol.SmoothStreaming, null);
encodedAsset.DeliveryPolicies.Add(policy);
// Publish the output asset by creating an Origin locator for adaptive streaming
_context.Locators.Create(
LocatorType.OnDemandOrigin,
encodedAsset,
AccessPermissions.Read,
TimeSpan.FromDays(3650));
这是我的"Encoder":https://pastebin.com/zQ8rS73c
我注意到这里有几个问题可能是错误的。
- 您的帐户中是否启动了 Streaming Endpoint 并且 运行?首先确保它在那里。
- 不要使用 AssetDeliveryProtocol.All。 SDK 中存在一个问题,它试图在 Adobe HDS 中添加,我们正在放弃对它的支持。您可能只想使用在传输协议上流式传输所需的特定协议。所以使用以下
图案:
AssetDeliveryProtocol.SmoothStreaming | AssetDeliveryProtocol.Dash | AssetDeliveryProtocol.HLS | AssetDeliveryProtocol.ProgressiveDownload
您可能无法在 iOS 或 Android 客户端上播放任何内容,因为您只设置了允许 SmoothStreaming 的协议,而 SmoothStreaming 仅在桌面或自定义移动客户端上受支持.为 Android 添加 DASH,为 iOS 添加 Apple HLS 应该会有所帮助。