Google云平台:将上传的MP4文件转换为HLS文件

Google Cloud Platform: Convert uploaded MP4 file to HLS file

我正在构建一个平台,允许用户将一些视频文件(20-40 秒)从他们的 phone 上传到服务器。所有这些上传目前运行良好,文件通过 nodejs 云功能存储在 google 存储桶中。

现在我想创建一个 gcp 转码器作业,它将上传的 .mp4 视频文件转换为具有 2-4 秒持续时间的 .ts 块的 .hls 视频流。

可能的成功场景:

  1. 用户上传 mp4 文件 [完成]
  2. .mp4 文件上传后触发 functions.storage.object().onFinalize [完成]
  3. onFinalize 触发 Google Cloud Job,它将 mp4 转换为 hls。 [我们来了]
  4. .mp4 文件已从 google 存储中删除。

对于创建此类工作的任何帮助,我们将不胜感激。 我在 nodejs 中使用 firebase 云函数。

我会使用 transcoder API in GCP. It supports mp4 input and hls output. See supported formats

请注意,视频长度必须大于 5 秒。 如果它们的长度不能达到 5 秒,也许可以避免这种情况 API 并使用 AppEngine 上的工具。

完成此任务的粗略流程可能类似于:

  1. 将 MP4 上传到存储桶
  2. pubsub is triggered from the upload event
  3. 这可以触发一个可以create a new Transcoder job
  4. 的云函数
  5. 工作状态updates a pubsub topic
  6. status 指示作业完成时,Pubsub 主题会触发云功能
  7. 云函数从存储桶中删除原始mp4