我对流媒体应用程序进行了以下设置。 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 服务器。
有人尝试过这样做吗?我找不到任何有用的文档来说明他们如何期望这些。
经过大量的调整和修补,我们发现 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.