如何通过 python sdk 下载传递内容(视频)?

Posted

技术标签:

【中文标题】如何通过 python sdk 下载传递内容(视频)?【英文标题】:How to delivery content (video) by download with python sdk? 【发布时间】:2021-10-25 15:12:27 【问题描述】:

我是一名 python 开发人员,在 microsoft azure 服务方面缺乏经验。

对于客户端,我必须允许使用 azure 媒体服务(视频流)下载视频。我确实在文档 (https://docs.microsoft.com/en-us/azure/media-services/previous/media-services-deliver-asset-download) 中找到了有关该主题的信息,但我想使用 python 到达那里(所以要么是其余的 azure api,要么是 python sdk)。

我开始相信这是不可能的。

我需要你的帮助。

【问题讨论】:

【参考方案1】:

如果文件是使用 Azure 媒体服务 SDK 上传的,则上传的视频将存储为 Assest 文件。这样可以更轻松地将视频流式传输到不同的设备。

要流式传输或下载资产,您首先需要通过创建定位器来“发布”它。定位器提供对资产中包含的文件的访问。

媒体服务支持两种类型的定位器:

    OnDemandOrigin 定位器,用于流式传输媒体(例如,MPEG DASH、HLS 或 Smooth Streaming) 访问签名 (SAS) 定位器,用于下载媒体文件。

创建定位器后,您可以构建用于流式传输或下载文件的 URL。

以下是使用 Rest API 的指南:https://docs.microsoft.com/en-us/azure/media-services/previous/media-services-rest-get-started

注意:您要将视频直接上传到 Azure 存储?如果是这种情况,我的建议是使用 Azure 媒体服务 SDK

上传视频,而不是直接将视频上传到 Azure 存储

Azure 媒体服务有很好的文档,可以帮助您解决其他问题:http://azure.microsoft.com/en-us/develop/media-services/resources/

【讨论】:

【参考方案2】:

您需要做的一切都应该通过 Python SDK 完全实现。

我不建议直接使用 REST API!它没有 Azure 资源管理 API 所需的任何内置重试策略。您可能会在生产中遇到问题 - 除非您知道自己在做什么并推出自己的重试逻辑。

仅对媒体服务使用官方 Python SDK 客户端。

另外,上面的 REST API 链接指向旧版 v2 API - 现在不要使用它。仅在此处使用最新的 v3 SDK 客户端 -

pip install azure-mgmt-media

我们这里提供的 Python 示例数量有限,展示了如何使用 Python 客户端 SDK - https://github.com/Azure-Samples/media-services-v3-python

我们团队中没有一个人是 Python 专家,而且我们似乎没有对那个 repo 做出很多贡献 - 所以它远没有我们这里的 .NET 示例那么全面 - https://github.com/Azure-Samples/media-services-v3-dotnet

但请记住,所有 Azure SDK 都是从 REST API Swagger(开放 API)自动生成的 - 所以它们都使用完全相同的实体,并在线上使用相同的 JSON 结构 - 所以如果你知道什么REST API 正在做什么以及实体是什么 - 您可以轻松地在语言之间移植事物。不过有助于先了解 Python!

您提到您想下载一些东西——这需要使用 Python 的存储 SDK。媒体服务仅使用 Azure 存储帐户。这意味着您可以使用 SAS URl 访问容器来上传和下载内容。查看 Python 的存储示例以了解在那里做什么。 https://pypi.org/project/azure-storage-blob/

【讨论】:

以上是关于如何通过 python sdk 下载传递内容(视频)?的主要内容,如果未能解决你的问题,请参考以下文章

Agora SDK和Vuforia SDK共享视频

Agora SDK和Vuforia SDK共享视频

使用 SDK 在 iPhone 上下载视频

Python多个任务/子流程

使用Python SDK时如何防止GCS自动解压对象?

如何在 AzureML Python SDK 中将 PipelineParameter 传递到 AutoMLStep