将 HLS 提取到 Mediapackage 中

问题描述 投票:0回答:1

我对流媒体应用程序进行了以下设置。 EMX -> EML -> S3 -> LAMBDA -> EMP。 当我尝试向 mediapackage hls 摄取端点发出 put 请求时,我收到 201。

def postStreamToMediaPackage(envVariables, fileName, content, contentType):
    mediaPackageUrl = envVariables["url"]
    username = envVariables["username"]
    password = envVariables["password"]
    ingestUrl = f"{mediaPackageUrl.rstrip('/channel')}/{fileName}" # not sure what mediapackage wants.

    response = requests.put(
        ingestUrl, data=content, headers={
            "ContentType": contentType
        }, auth=HTTPDigestAuth(username, password))
    if response.status_code != 201:
        print(
            f"Error ingesting file {fileName} to {ingestUrl}. error: {response.text}")
    return {"ingestUrl": ingestUrl, "fileName": fileName, "status": response.status_code}

但是如果我检查媒体包入口访问日志,

  • 我可以看到我发送的每个文件都会记录两次,一个显示为

    401
    ,另一个显示为
    201

  • 我还注意到,如果我将根清单发送到“channel/{根清单名称}.m3u8”,则根清单会得到 404,但任何其他端点都会得到与前面提到的相同的行为 为了测试这一点,我直接将 EML 连接到 EMP 并启用日志记录,可以看到请求以以下样式发送

  • channel_filename
    适用于所有文件

  • `ts 文件的channel_timestamp_sequence.ts

  • .m3u8
    用于根清单

我已尽一切努力从媒体包源端点获得积极响应,但它总是返回 404 清单。

Mediapackage hls ingest 是一个 webDav 服务器。

有人尝试过这样做吗?我找不到任何有用的文档来说明他们如何期望这些。

python amazon-web-services webdav aws-media-live aws-mediapackage
1个回答
0
投票

经过大量的调整和修补,我们发现 mediapackage 需要以下文件名结构才能成功推送。

if fileName == "index.m3u8": # this is your root manifest
  ingestUrl = f"{mediaPackageUrl}.m3u8"
else:
   ingestUrl = mediaPackageUrl.replace('channel', fileName) # for all other resources, you need to feed it to the root endpoint.
© www.soinside.com 2019 - 2024. All rights reserved.