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

AWSSDK.MediaLive创建频道报错:Destination未被引用的解决咨询

AWS Elemental MediaLive OutputDestination Id 问题解决方案

问题原因

你触发的UnprocessableEntityException,核心原因是OutputDestination的Id必须和频道配置里OutputGroup中引用的目标ID完全匹配。你使用了随机字符串作为Id,但没有在对应的OutputGroup配置中关联这个Id,导致MediaLive无法识别两者的绑定关系。

正确的Id设置与引用方式

1. 定义OutputDestination的Id

Id是你自定义的标识符(可以是任意字符串,比如"my-s3-hls-dest"或"rtmp-stream-1"),没有固定的“正确值”,但需要保证后续能精准引用它。

2. 在OutputGroup中关联该Id

每个OutputGroup(如HlsOutputGroup、RtmpOutputGroup)的OutputGroupSettings对应的目标配置里,需要通过DestinationRefId指定你之前定义的OutputDestination的Id,以此建立关联。

以下是.NET Core 6环境下的代码示例:

// 1. 定义输出目标,指定自定义Id
var outputDestinations = new List<OutputDestination>
{
    new OutputDestination
    {
        Id = "my-hls-destination", // 自定义的关联ID
        Settings = new List<OutputDestinationSettings>
        {
            new OutputDestinationSettings
            {
                Url = "s3://your-media-bucket/hls-output/" // 实际的输出存储地址
            }
        }
    }
};

// 2. 配置输出组,引用上面的目标ID
var outputGroups = new List<OutputGroup>
{
    new OutputGroup
    {
        Name = "HLS Output Group",
        OutputGroupSettings = new OutputGroupSettings
        {
            HlsGroupSettings = new HlsGroupSettings
            {
                Destination = new OutputLocationRef
                {
                    DestinationRefId = "my-hls-destination" // 必须和OutputDestination的Id完全一致
                },
                // 其他HLS相关配置(如分段时长、播放列表类型等)
            }
        },
        Outputs = new List<Output>
        {
            // 配置具体的输出编码、分辨率等参数
            new Output
            {
                OutputSettings = new OutputSettings
                {
                    HlsOutputSettings = new HlsOutputSettings
                    {
                        NameModifier = "_720p"
                    }
                }
            }
        }
    }
};

// 3. 组装创建频道的请求
var createChannelRequest = new CreateChannelRequest
{
    ChannelClass = ChannelClass.STANDARD,
    InputSpecification = new InputSpecification { Codec = InputCodec.AVC },
    InputAttachments = new List<InputAttachment>
    {
        new InputAttachment { InputId = "your-input-id" } // 替换为你的实际输入ID
    },
    Destinations = outputDestinations,
    OutputGroups = outputGroups
};

// 调用API创建频道
var mediaLiveClient = new AmazonMediaLiveClient(RegionEndpoint.USWest2);
var response = await mediaLiveClient.CreateChannelAsync(createChannelRequest);

核心注意事项

  • OutputDestination.Id与OutputLocationRef.DestinationRefId必须完全匹配(大小写敏感)
  • 一个OutputDestination可以被多个OutputGroup引用,只要它们的DestinationRefId指向同一个Id
  • 如果配置了多个OutputDestination,每个都需要在对应的OutputGroup中明确引用,否则会触发未引用的异常

总结

OutputDestination的Id只是一个自定义的关联标识,不需要遵循固定格式,只要保证它和OutputGroup中DestinationRefId的取值完全一致,就能让MediaLive正确关联输出目标与输出组的配置。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.20 23:45:01