You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Google Transcoder API如何配置实现音轨可选适配无音轨输入文件

解决方法

以下两个方案均支持在单次转码作业中完成适配,无需提前检测音轨也无需重复提交作业:

方案1:配置可选音轨,无音轨时输出仅视频文件

适用于允许输出文件无音轨的场景,通过Transcoder API原生的可选流配置即可实现:

config: {
    // 明确指定输入附件与音轨选择规则
    inputAttachments: [
        {
            key: 'input0',
            input: 'gs://你的输入文件存储路径',
            audioTracks: [
                {
                    track: 0,
                    skipIfMissing: true // 核心参数:输入无音轨时自动跳过轨道选择,不抛出错误
                }
            ]
        }
    ],
    elementaryStreams: [
        {
            key: 'video-stream0',
            videoStream: {...},
        },
        {
            key: 'audio-stream0',
            audioStream: {...},
            optional: true // 核心参数:标记该流为可选,无对应输入源时自动忽略,不触发错误
        },
    ],
    muxStreams: [
        {
            key: 'hd',
            container: 'mp4',
            // 仍可同时写两个流,API会自动过滤不存在的可选流
            elementaryStreams: ['video-stream0', 'audio-stream0'],
        },
    ],
}

方案2:无音轨时自动填充静默音轨,保证输出一定包含音轨

如果要求输出文件必须携带音轨,可以提前上传一个1秒的静默音频文件到存储桶作为兜底,配置如下:

config: {
    inputAttachments: [
        {
            key: 'input0',
            input: 'gs://你的输入文件存储路径',
            audioTracks: [
                {
                    track: 0,
                    key: 'input-audio',
                    skipIfMissing: true
                }
            ]
        },
        {
            key: 'silent-audio',
            input: 'gs://你的存储桶路径/静默音频文件.mp3' // 提前上传的静默音频文件路径
        }
    ],
    editList: [
        {
            key: 'final-audio',
            inputs: [
                {
                    key: 'input-audio',
                    startTimeOffset: '0s'
                },
                {
                    key: 'silent-audio',
                    gain: 0,
                    duration: '${output.duration}' // 自动和输出视频时长对齐
                }
            ],
            // 优先使用输入源音轨,无输入音轨时自动用静默音轨填充
            inputSelectionStrategy: 'FIRST_VALID'
        }
    ],
    elementaryStreams: [
        {
            key: 'video-stream0',
            videoStream: {...},
        },
        {
            key: 'audio-stream0',
            audioStream: {...},
        },
    ],
    muxStreams: [
        {
            key: 'hd',
            container: 'mp4',
            elementaryStreams: ['video-stream0', 'audio-stream0'],
        },
    ],
}

补充说明

你之前尝试的CallOptions重试配置无法生效是正常情况:该配置属于RPC调用层面的重试规则,仅用于处理网络超时、服务端限流等RPC调用失败的场景,不适用于转码作业提交成功后执行失败的业务场景,无法实现作业执行失败后自动更换配置重试的逻辑。

内容的提问来源于stack exchange,提问作者Erich Loob

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.28 02:45:03