You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何绕过门户通过.NET/Python/CLI/API向Azure Media Services传视频?

绕过Azure门户向Azure Media Services上传视频文件的解决方案

CLI 上传流程

az ams asset create仅负责创建资产元数据,不会自动上传文件,完整流程如下:

  • 创建空资产:
    az ams asset create -a <AMS账户名> -g <资源组名> -n <目标资产名>
    
  • 获取资产的写入权限SAS URL:
    az ams asset get-sas -a <AMS账户名> -g <资源组名> -n <资产名> --permissions Write --expiry 2024-12-31T23:59:59Z
    
  • 用Azure存储CLI上传文件:
    az storage blob upload --container-name <资产关联存储容器名> --file <本地视频路径> --name <Blob文件名> --sas-token "<获取到的SAS令牌>" --account-name <存储账户名>
    
    容器名和存储账户名可通过az ams asset show -a <AMS账户名> -g <资源组名> -n <资产名>查看输出中的storageContainerName和storageAccountName字段。

.NET SDK(v3)上传流程

使用Azure.MediaServices和Azure.Storage.Blobs NuGet包:

using Azure;
using Azure.MediaServices;
using Azure.Storage.Blobs;
using Azure.Identity;
using System;
using System.IO;
using System.Threading.Tasks;

var credential = new DefaultAzureCredential();
var amsClient = new MediaServicesClient(new Uri("https://<AMS账户名>.media.azure.net/"), credential);

// 1. 创建资产
var asset = await amsClient.Assets.CreateOrUpdateAsync("<资源组名>", "<AMS账户名>", "<资产名>", new Asset());

// 2. 获取写入权限SAS URI
var sasResponse = await amsClient.Assets.ListContainerSasAsync(
    "<资源组名>", "<AMS账户名>", "<资产名>",
    permissions: AssetContainerPermission.Write,
    expiryTime: DateTime.UtcNow.AddHours(4));

// 3. 上传视频文件
var containerClient = new BlobContainerClient(new Uri(sasResponse.AssetContainerSasUrls[0]));
await containerClient.UploadBlobAsync("video.mp4", File.OpenRead(@"./local-video.mp4"));

Python SDK(v3)上传流程

依赖azure-mgmt-media和azure-storage-blobs包:

from azure.identity import DefaultAzureCredential
from azure.mgmt.media import AzureMediaServices
from azure.storage.blob import BlobContainerClient
from datetime import datetime, timedelta

credential = DefaultAzureCredential()
ams_client = AzureMediaServices(credential, "<订阅ID>")

# 1. 创建资产
asset = ams_client.assets.create_or_update("<资源组名>", "<AMS账户名>", "<资产名>", {})

# 2. 获取写入权限SAS URL
sas_urls = ams_client.assets.list_container_sas(
    "<资源组名>", "<AMS账户名>", "<资产名>",
    permissions="Write",
    expiry_time=datetime.utcnow() + timedelta(hours=4)
)

# 3. 上传视频文件
container_client = BlobContainerClient.from_container_url(sas_urls.asset_container_sas_urls[0])
with open("./local-video.mp4", "rb") as video_file:
    container_client.upload_blob("video.mp4", video_file)

REST API(v3)上传流程

  1. 创建资产:发送POST请求

    • URL: https://management.azure.com/subscriptions/<订阅ID>/resourceGroups/<资源组名>/providers/Microsoft.Media/mediaServices/<AMS账户名>/assets/<资产名>?api-version=2023-01-01
    • 请求体:{}
    • 认证:使用Azure AD Bearer令牌
  2. 获取容器SAS:发送POST请求

    • URL: https://management.azure.com/subscriptions/<订阅ID>/resourceGroups/<资源组名>/providers/Microsoft.Media/mediaServices/<AMS账户名>/assets/<资产名>/listContainerSas?api-version=2023-01-01
    • 请求体:
      {
          "permissions": "Write",
          "expiryTime": "2024-12-31T23:59:59Z"
      }
      
  3. 上传文件:向SAS URL对应的容器发送PUT请求

    • URL: https://<存储账户名>.blob.core.windows.net/<容器名>/<Blob文件名>?<SAS令牌>
    • 请求体:视频文件二进制数据
    • 头部:Content-Type: video/mp4

内容的提问来源于stack exchange,提问作者KGH

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.27 08:42:31