连接到媒体服务 v3 API - Node.js
警告
Azure 媒体服务将于 2024 年 6 月 30 日停用。 有关详细信息,请参阅 AMS 停用指南。
注意
Google Widevine 内容保护服务目前在由世纪互联运营的 Microsoft Azure 区域中不可用。
本文介绍如何使用服务主体登录方法连接到 Azure 媒体服务 v3 node.js SDK。 你将使用 media-services-v3-node-tutorials 示例存储库中的文件。 HelloWorld-ListAssets 示例包含用于连接的代码,并在帐户中列出资产。
先决条件
- 安装 Visual Studio Code。
- 安装 Node.js。
- 安装 TypeScript。
- 创建媒体服务帐户。 请务必记住资源组名称和媒体服务帐户名称。
- 创建应用程序的服务主体。 请参阅访问 API。
专业提示! 使此窗口保持打开状态,或将 JSON 选项卡中的所有内容复制到记事本。 - 确保获取适用于 JavaScript 的 AzureMediaServices SDK。
重要
查看 Azure 媒体服务命名约定,了解实体的重要命名限制。
克隆 Node.JS 示例存储库
你将在 Azure 示例中使用一些文件。 克隆 Node.JS 示例存储库。
git clone https://github.com/Azure-Samples/media-services-v3-node-tutorials.git
安装 Node.js 包
安装 @azure/arm-mediaservices
npm install @azure/arm-mediaservices
在此示例中,你将在 package.json
文件中使用以下包。
程序包 | 说明 |
---|---|
@azure/arm-mediaservices |
Azure 媒体服务 SDK。 为确保使用的是最新的 Azure 媒体服务包,请选中 npm install @azure/arm-mediaservices。 |
@azure/identity |
使用服务主体或托管标识进行 Azure AD 身份验证所需 |
@azure/storage-blob |
存储 SDK。 将文件上传到资产时使用。 |
@azure/abort-controller |
与存储客户端一起用于超时长时间运行的下载操作 |
创建 package.json 文件
- 使用偏好的编辑器创建一个
package.json
文件。 - 打开该文件并粘贴以下代码:
{
"name": "media-services-node-sample",
"version": "0.1.0",
"description": "",
"main": "./index.ts",
"dependencies": {
"@azure/arm-mediaservices": "^10.0.0",
"@azure/abort-controller": "^1.0.2",
"@azure/identity": "^2.0.0",
"@azure/storage-blob": "^12.4.0"
}
}
使用 TypeScript 连接到 Node.js 客户端
示例 .env 文件
将身份验证值保存在名为 .env 的文件中。 (没错,没有文件名,只有扩展名。)请阅读访问 API,了解如何获取和复制这些值。 可以从门户中媒体服务帐户的“API 访问”页获取值,也可以使用 CLI 获取所需的值。
将值复制并粘贴到名为 .env 的文件中。 该文件应存储在工作存储库的根目录中。
一旦创建了 .env 文件,就可以开始使用这些示例。
运行示例应用程序 HelloWorld-ListAssets
- 从根文件夹启动 Visual Studio Code。
cd media-services-v3-node-tutorials
code .
- 通过一个终端安装在 package.json 文件中使用的包
npm install
创建 sample.env 文件的副本,将其重命名为 .env,并更新该文件中的值,使之与帐户和订阅信息匹配。 可能需要先从 Azure 门户收集此信息。
将目录更改为 HelloWorld-ListAssets 文件夹
cd HelloWorld-ListAssets
- 打开 HelloWorld-ListAssets 文件夹中的 list-assets.ts 文件,然后按 Visual Studio Code 中的 F5 键开始运行脚本。 如果你的资产已在帐户中,应会看到显示的资产列表。 如果帐户为空,你将看到一个空列表。
若要快速查看列出的资产,请使用门户上传几个视频文件。 将自动创建每个资产,然后再次运行此脚本以返回它们的名称。
详细了解 HelloWorld-ListAssets 示例
HelloWorld-ListAssets 示例说明了如何使用服务主体连接到媒体服务客户端,并列出帐户中的资产。 有关其作用的详细说明,请参阅代码中的注释。
import { DefaultAzureCredential } from "@azure/identity";
import {
AzureMediaServices
} from '@azure/arm-mediaservices';
// Load the .env file if it exists
import * as dotenv from "dotenv";
dotenv.config();
export async function main() {
// Copy the samples.env file and rename it to .env first, then populate it's values with the values obtained
// from your Media Services account's API Access page in the Azure portal.
const clientId: string = process.env.AADCLIENTID as string;
const secret: string = process.env.AADSECRET as string;
const tenantDomain: string = process.env.AADTENANTDOMAIN as string;
const subscriptionId: string = process.env.SUBSCRIPTIONID as string;
const resourceGroup: string = process.env.RESOURCEGROUP as string;
const accountName: string = process.env.ACCOUNTNAME as string;
// This sample uses the default Azure Credential object, which relies on the environment variable settings.
// If you wish to use User assigned managed identity, see the samples for v2 of @azure/identity
// Managed identity authentication is supported via either the DefaultAzureCredential or the ManagedIdentityCredential classes
// https://learn.microsoft.com/javascript/api/overview/azure/identity-readme?view=azure-node-latest
// See the following examples for how to authenticate in Azure with managed identity
// https://github.com/Azure/azure-sdk-for-js/blob/@azure/identity_2.0.1/sdk/identity/identity/samples/AzureIdentityExamples.md#authenticating-in-azure-with-managed-identity
// const credential = new ManagedIdentityCredential("<USER_ASSIGNED_MANAGED_IDENTITY_CLIENT_ID>");
const credential = new DefaultAzureCredential();
let mediaServicesClient = new AzureMediaServices(credential, subscriptionId, base_url="https://management.chinacloudapi.cn")
// List Assets in Account
console.log("Listing assets in account:")
for await (const asset of mediaServicesClient.assets.list(resourceGroup, accountName, { top:1000 })){
console.log(asset.name);
}
}
main().catch((err) => {
console.error("Error running sample:", err.message);
});
更多示例
更多示例可在存储库中获得。 请查看自述文件,了解最近更新的示例。
媒体服务 JavaScript/TypeScript 开发人员参考
- npm install @azure/arm-mediaservices
- 用于 Node.js 的 Azure 媒体服务模块的参考文档
- 面向 JavaScript 和 Node.js 开发人员的 Azure
- Media Services source code in the @azure/azure-sdk-for-js Git Hub repo
- 面向 Node.js 开发人员的 Azure 包文档
- 媒体服务概念
- 面向 JavaScript 和 Node.js 开发人员的 Azure
- Media Services source code in the @azure/azure-sdk-for-js repo