You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何通过Azure Media Services直接将预录视频转为RTMP直播流?

简化Azure生态内预录MP4转直播流的方案

你绝对是对的——Azure生态里确实藏着一个更简洁的解决方案,完全不用折腾Docker+FFmpeg的复杂流程,也能规避你担心的性能、延迟和组件崩溃问题。核心就是用Azure Media Services (AMS) 的原生VOD转直播功能,全程API可控,所有操作都在Azure体系内完成。

为什么你的现有流程复杂?

你之前的方案相当于自己搭建了一个中间推流层(FFmpeg+Docker),但AMS本身就支持直接将预录的MP4(作为Media Asset)作为直播流的输入,内部自动完成封装和分发,完全不需要外部编码器介入。

具体实现步骤(全程API/代码自动化)

1. 提前上传预录MP4到AMS Asset

先把你的预录视频上传到AMS的Media Asset里——这一步可以提前完成,后续直播直接复用,不用每次重复上传。用Azure CLI的话,命令如下:

# 创建空Asset
az ams asset create -a <你的AMS账户名> -g <资源组名> -n "PreRecordedLiveSource"
# 上传MP4到Asset
az ams asset upload -a <你的AMS账户名> -g <资源组名> -n "PreRecordedLiveSource" -f "/本地路径/你的视频.mp4"

2. 创建支持Asset输入的Live Event

不要创建普通的RTMP输入Live Event,而是创建Pass-Through类型的Live Event,并指定输入为你刚才上传的Asset。这种模式下,AMS会直接把预录视频封装成直播流,不需要额外转码,性能拉满且启动快。

示例API请求(简化版,可通过SDK/Postman调用):

POST https://management.azure.com/subscriptions/{订阅ID}/resourceGroups/{资源组名}/providers/Microsoft.Media/mediaServices/{AMS账户名}/liveEvents/{LiveEvent名称}?api-version=2022-08-01
{
  "properties": {
    "input": {
      "type": "Asset",
      "assetName": "PreRecordedLiveSource"
    },
    "encoding": {
      "type": "PassThrough"
    },
    "preview": {
      "accessControl": {
        "ip": {
          "allow": [{"address": "0.0.0.0", "subnetPrefixLength": 0}]
        }
      }
    },
    "autoStart": true
  }
}

3. 创建Live Output并获取分发URL

Live Event启动后,需要创建一个Live Output来归档并分发直播流:

az ams live-output create -a <你的AMS账户名> -g <资源组名> -n "PreRecordedLiveOutput" \
  --live-event-name <你的LiveEvent名称> \
  --asset-name "LiveArchiveAsset" \
  --archive-window-length PT1H

之后你就可以通过AMS的Streaming Endpoint获取直播流的分发URL,直接提供给网页播放器:

  • HLS格式:https://<StreamingEndpoint域名>/streaming/LiveArchiveAsset.ism/manifest(format=m3u8-aapl)
  • DASH格式:https://<StreamingEndpoint域名>/streaming/LiveArchiveAsset.ism/manifest(format=mpd-time-csf)

优势对比你的现有方案

  • 去掉了FFmpeg/Docker依赖:完全由AMS托管处理流封装,不用担心编码器性能、容器启动延迟或崩溃问题
  • 流程极大简化:从5步缩减为3步(提前上传+创建Live Event+获取URL),API调用更简洁
  • 成本可控:Pass-Through模式不需要转码费用,仅收取Live Event和Streaming Endpoint的基础费用,且直播结束后可立即停止资源避免浪费
  • 高可用性:AMS是Azure托管服务,自带冗余和故障恢复,无需自己维护组件

额外优化建议

  • 可以用Azure Logic Apps或Azure Functions实现自动化:比如定时启动/停止Live Event,或者在直播结束后自动清理资源
  • 如果需要转码(比如适配不同分辨率),可以把encoding.type改成StandardPremium1080p,AMS会自动完成转码

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

火山引擎 最新活动