【问题标题】:Suitable approach for serving HLS playlist from GCP using node.js server使用 node.js 服务器从 GCP 提供 HLS 播放列表的合适方法
【发布时间】:2021-12-29 16:43:54
【问题描述】:

我在向用户提供动态 hls 播放列表时遇到了两难境地,因为所有 hls 文件都必须从 GCP 存储中提供。由于索引文件是静态的,我可以简单地使用 here 的一个答案中概述的 express static 来提供它,但它仅限于文件目录(在我看来)。对于来自 GCP 的流式 HLS 播放列表,我尝试了以下方法

用于从 GCP 提供动态索引文件

router.get('/segments-list', (req, res) => {
  const playlistName = req.query;
  const remoteFile = hlsPlaylistBucket.file('${playlistName}.m3u8'); 
  remoteFile.download().then((data) => {
    const contents = data[0];
    res.send(contents);
  });
});

用于向用户提供单个分段文件 (.ts)

router.get('/segments/:segment', (req, res) => {
  const { segment } = req.params;
  //* Gets specific segment files from GCP cloud in request of particular segments
  const remoteFile = hlsPlaylistBucket.file(`${segment}`);

  remoteFile.download().then((data) => {
    const contents = data[0];
    res.send(contents);
  });
});

这是清单文件

#EXTM3U
#EXT-X-VERSION:3
#EXT-X-TARGETDURATION:8
#EXT-X-MEDIA-SEQUENCE:0
#EXTINF:8.341667,
segments/file000.ts
#EXTINF:8.341667,
segments/file001.ts
#EXTINF:8.341667,
segments/file002.ts
#EXTINF:8.341667,
segments/file003.ts
#EXTINF:5.572233,
segments/file004.ts
#EXT-X-ENDLIST

现在这种方法似乎可行,但这是一种有缺陷的方法,因为每次用户请求时都会为内存中的文件下载小块。并且为每个片段文件提供签名 URL 也不是一种合适的方式,因为一个视频可能包含 200 个片段文件。我的方法是正确的还是我必须在 GCP 中提供像 this 这样的 HLS 播放列表。真正的问题出现在提供基本 url 段文件中,过去几天我一直在这个问题上陷入困境,但我找不到通过提供 HLS 播放列表向用户提供 VOD 文件的合适方法 任何帮助将不胜感激

【问题讨论】:

    标签: node.js google-cloud-storage http-live-streaming vod


    【解决方案1】:

    我认为这里最好的选择是使用 CORS(跨源资源共享)从 GCP 存储桶为它们提供服务,在这里您可以找到有关如何为 GCP 存储桶配置 CORS 的指南1

    更进一步,您可以将原始视频文件的转换和打包渲染到 Transcoder API Google 服务2,该服务可以生成 HLS 清单和文件并将其存储到 GCP 存储桶中,以供任何视频使用流媒体播放器,请查看此快速入门指南3

    【讨论】:

    • 感谢您的建议,尽管 atm 由于时间限制我无法合并更改,因此我调整了从下载到流式传输每个文件段的方法,尽管它可以在 atm 但将来我应遵循您的建议,采用更简化的方法
    • 我可以帮助您了解其他信息吗?如果您认为我的回答对您有所帮助,请考虑通过单击左侧投票箭头下方的复选标记(✔️)来接受它。应将颜色更改为绿色。
    猜你喜欢
    • 2012-06-22
    • 2016-07-10
    • 2020-09-08
    • 1970-01-01
    • 1970-01-01
    • 2014-03-10
    • 1970-01-01
    • 2021-10-24
    • 1970-01-01
    相关资源
    最近更新 更多