0

nodejs を使用してラムダ関数から AWS MediaPackage 入力エンドポイントに hls メディアを配信しようとしています。私は次のことを行っており、メディア ファイル チャンク (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 auth のみをサポートしていると述べているため、ファイルのプットを処理するために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 に答える