如何使用GCS Transcoder API合并独立的视频和音频文件
GCS Transcoder API分离音视频合并配置方案
问题原因
现有配置仅声明了两个输入资源和输出音视频流参数,未建立输入资源与输出流的映射关系,导致Transcoder 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], # 新增编辑列表,映射输入流到输出基础流 edit_list=[ transcoder_v1.types.EditAtom( key="atom0", inputs=[ transcoder_v1.types.EditAtom.Input( key="input0", channel=0 ), transcoder_v1.types.EditAtom.Input( key="input1", channel=0 ) ], start_time_offset=transcoder_v1.types.duration_pb2.Duration(seconds=0), ) ], 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"], ), ], )
配置说明
- edit_list段用于定义时间轴上的内容拼接规则,这里因为两个输入时长完全一致,无需额外裁剪,直接设置起始时间为0即可覆盖全时长
- 每个EditAtom.Input条目分别关联你定义的两个输入资源,channel参数指定读取输入的第0条流(你的两个输入分别只有视频、音频单条流,所以都填0即可)
- 该配置完全兼容后续叠加层、多码率多格式输出需求,后续只需在现有结构基础上新增overlay配置、多套elementary_streams和mux_streams即可,无需修改现有音视频映射逻辑
内容的提问来源于stack exchange,提问作者Thomas Spycher
相关产品推荐
相关产品推荐

