如何在GCS转码器API中混合视频和音频

2024-06-07 05:48:20 发布

您现在位置:Python中文网/ 问答频道 /正文

我有两个mp4文件。一个只包含视频,另一个只包含音频。两者的长度完全相同(从HLS流中提取的秒数)

我希望它们现在通过GCS代码转换API作业混合在一起,该作业由数据流管道触发。通过文档挖掘还没有找到解决方案

我当前的作业配置如下所示:

gcs_video = "gcs://abc/video.mp4"
gcs_audio = "gcs://abc/audio.mp4"
video_input = transcoder_v1.types.Input(key="input0", uri=gcs_video)
audio_input = transcoder_v1.types.Input(key="input1", uri=gcs_audio)

job.config = transcoder_v1.types.JobConfig(
            inputs=[video_input, audio_input],
            elementary_streams=[
                transcoder_v1.types.ElementaryStream(
                    key="video-stream0",
                    video_stream=transcoder_v1.types.VideoStream(
                        h264=transcoder_v1.types.VideoStream.H264CodecSettings(
                            height_pixels=720,
                            width_pixels=1280,
                            bitrate_bps=2500000,
                            frame_rate=30,
                        ),
                    ),
                ),
                transcoder_v1.types.ElementaryStream(
                    key="audio-stream0",
                    audio_stream=transcoder_v1.types.AudioStream(
                        codec="aac", bitrate_bps=64000
                    ),
                ),
            ],
            mux_streams=[
                transcoder_v1.types.MuxStream(
                    key="hd",
                    container="mp4",
                    elementary_streams=["video-stream0", "audio-stream0"],
                ),
            ],
        )

稍后,我们将添加一些覆盖并将其转换为不同的格式。但现在,如果我能让他们聚在一起,我已经很高兴了:)


Tags: keyinputvideo作业uriaudiostreamstypes
2条回答

多亏了@TJ Liu的回答,我才能够为我的代码转换工作找到正确的配置。结束配置如下所示:

gcs_video = "gcs://abc/video.mp4"
gcs_audio = "gcs://abc/audio.mp4"
video_input = transcoder_v1.types.Input(key="input0", uri=gcs_video)
audio_input = transcoder_v1.types.Input(key="input1", uri=gcs_audio)
clip_duration = 9

job.config = transcoder_v1.types.JobConfig(
            inputs=[video_input, audio_input],
            edit_list=[
                transcoder_v1.types.EditAtom(
                    key="atom0",
                    inputs=["input0", "input1"],
                    end_time_offset = Duration(seconds=clip_duration)

            )
            ],
            elementary_streams=[
                transcoder_v1.types.ElementaryStream(
                    key="video-stream0",
                    video_stream=transcoder_v1.types.VideoStream(
                        h264=transcoder_v1.types.VideoStream.H264CodecSettings(
                            height_pixels=720,
                            width_pixels=1280,
                            bitrate_bps=2500000,
                            frame_rate=30,
                        ),
                    ),
                ),
                transcoder_v1.types.ElementaryStream(
                    key="audio-stream0",
                    audio_stream=transcoder_v1.types.AudioStream(
                        codec="aac", bitrate_bps=64000
                    ),
                ),
            ],
            mux_streams=[
                transcoder_v1.types.MuxStream(
                    key="hd",
                    container="mp4",
                    elementary_streams=["video-stream0", "audio-stream0"],
                ),
            ],
        )

文档中没有列出一些默认值。尝试将以下内容添加到您的配置中,看看它是否有效

"editList":[
   {
      "key":"atom0",
      "inputs":[
         "video_input_key",
         "audio_input_key"
      ],
      "startTimeOffset":"0s"
   }
]

相关问题 更多 >