0

我正在尝试使用 nodejs 将 hls 媒体从 lambda 函数传递到 AWS MediaPackage 输入端点。我正在执行以下操作,并且似乎正在推送媒体文件块(ts 文件):

  const auth = 'Basic ' + Buffer.from(endpoints[0].Username + ':' + endpoints[0].Password).toString('base64');
  const options = {
    hostname: endpoints[0].Url.hostname,
    path: endpoints[0].Url.path,
    headers: {
      'Content-Type': 'application/json',
      'Authorization': auth,
      'Content-Length': Buffer.byteLength(data.Body)
    },
    body: data.Body // body of ts file
  };
  console.log(options);

  const res = await httpsPut(options); //Promise using https put to send the body in options

但是,我在 CloudWatch 中看不到 MediaPackage 频道的任何日志

这是将注入媒体发送到 MediaPackage 的正确方法吗?我找不到任何文档

谢谢,

4

1 回答 1

0

好吧,我终于让它按照文档工作并做了一些尝试和错误。在这个MediaPackage 文档中,他们提到它只支持webdav 身份验证,所以我最终使用webdav 模块来处理文件的放置。

假设您正在传递有效的输入,工作解决方案最终看起来像这样:

/**
 * Helper PUT with Webdav and digest authentication to AWS MediaPackage
 * @param mediaPackageEndpoints
 * @param fileName
 * @param data
 */
const putToMediaPackage = async function(mediaPackageEndpoints, fileName, data) {
  const url = new URL(mediaPackageEndpoints[0].Url);
  const client = createClient(
    url.toString().replace('/channel', ''),
    {
      username: mediaPackageEndpoints[0].Username,
      password: mediaPackageEndpoints[0].Password,
      digest: true
    }
  );

  await client.putFileContents(fileName, data);
  return client;
}
于 2020-11-12T21:13:31.307 回答