标签: google-cloud-transcoder

如何使音轨成为 Google Transcoder API 的可选选项

问题

我想做的只是使用@google-cloud/video-transcoderTranscoderServiceClient v1)从node.js 的存储桶中转换和压缩视频文件。单个输入文件和单个输出。输入文件可能有也可能没有音轨。当文件包含音轨时,一切都会按预期工作,但如果不包含音轨,我会收到代码 3 的错误:

\atom atom0 does not have any inputs (input0) with an audio track
Run Code Online (Sandbox Code Playgroud)

目前我能想到的唯一选择是:

  1. 用于pubsub侦听作业错误并再次运行失败的作业,但没有音频流(使其正常工作)。
  2. 在开始作业之前使用类似的方法ffprobe来确定文件中是否有音轨。

但是,我不希望读取该文件两次:一次用于确定可用轨道,然后进行转码。我不想将这项工作运行两次。我在文档中没有找到有关如何仅包含音轨(如果存在)的内容(或者如果音轨不存在则将其替换为空音轨)。

当前配置

config: {
    elementaryStreams: [
        {
            key: 'video-stream0',
            videoStream: {...},
        },
        {
            key: 'audio-stream0',
            audioStream: {...},
        },
    ],
    muxStreams: [
        {
            key: 'hd',
            container: 'mp4',
            elementaryStreams: ['video-stream0', 'audio-stream0'],
        },
    ],
}
Run Code Online (Sandbox Code Playgroud)

使用的文档

  1. 设置 - Transcoder API Node.js 客户端参考(我的实现与 googleapis git 中的临时示例几乎相同)
  2. 配置-JobConfig
  3. 看涨期权 - CallOptions …

node.js google-cloud-transcoder

8
推荐指数
1
解决办法
950
查看次数

Google Cloud Platform:将上传的 MP4 文件转换为 HLS 文件

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

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

可能成功的场景:

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

将不胜感激任何有关创造此类工作的帮助。我正在将 firebase 云功能与 nodejs 一起使用。

ffmpeg node.js google-cloud-platform google-cloud-transcoder

3
推荐指数
1
解决办法
1536
查看次数