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

如何在AWS MediaLive输入结束时停止频道?

嘿,我来帮你搞定这个问题!你现在的情况是MediaLive频道在MP4播放完后只暂停了RTMP输出,但频道本身还在运行,想要让它自动停止对吧?这里有两个方案,看你的业务场景选哪个:

方案一:直接修改MediaLive频道设置(最简单)

如果你的需求就是播放完这个MP4文件后直接停止频道,那不需要额外的Step Functions逻辑,直接调整频道的输入设置就行:

  • 打开MediaLive控制台,找到你的频道,进入「输入附件」配置,把SourceEndBehavior从CONTINUE改成END。
  • 当MP4文件播放完毕时,MediaLive会自动将频道状态切换为STOPPED,完全符合你的需求。
  • 小提醒:这个设置只针对单次文件播放生效,如果后续需要复用这个频道播放其他文件,记得改回CONTINUE或者按需调整。
方案二:通过EventBridge + Step Functions触发停止(更灵活)

如果因为业务需求必须保留SourceEndBehavior=CONTINUE,或者需要在停止频道前执行额外操作(比如清理S3文件、发送通知),那可以用这个联动方案:

步骤1:让MediaLive把状态事件发给EventBridge

  • 进入MediaLive控制台的频道详情页,找到「事件通知」选项,启用EventBridge通知,确保勾选了INPUT_LOST和CHANNEL_STANDBY这类和输入结束相关的事件类型。这样当MP4播放完频道进入输入丢失状态时,会自动发送事件到EventBridge。

步骤2:创建EventBridge规则触发Step Functions

  • 打开EventBridge控制台,新建一个规则:
    • 事件源选「AWS服务」,服务名称挑「MediaLive」,事件类型选「MediaLive Channel State Change」。
    • 设置事件模式,匹配频道进入INPUT_LOST状态的事件(因为你设置了SourceEndBehavior=CONTINUE,MP4播放完后频道会触发这个状态)。
    • 目标选择你的Step Functions状态机(可以是现有工作流,也可以新建一个专门处理停止逻辑的子工作流)。

步骤3:在Step Functions里加停止频道的任务

在你的Step Functions工作流中,新增一个Task步骤,调用MediaLive的停止API:

  • 任务资源用arn:aws:states:::aws-sdk:medialive:stopChannel
  • 输入参数填写你的频道ARN,示例如下:
{
  "ChannelArn": "arn:aws:medialive:us-east-1:123456789012:channel:123456"
}
  • 可以给这个任务加个错误处理,比如停止失败时自动重试3次,或者触发SNS告警通知运维。

步骤4:(可选)加状态校验避免误触发

如果担心其他原因导致的INPUT_LOST事件误触发停止操作,可以在停止步骤前加一个Task,调用MediaLive:DescribeChannel API,检查频道的输入状态是否确实是当前MP4文件播放完毕导致的,确认无误后再执行停止。

权限提醒

别忘了给Step Functions的执行角色加上medialive:StopChannel和medialive:DescribeChannel的权限,同时EventBridge的角色需要有触发Step Functions工作流的权限,不然会报错哦~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.07 12:12:37