FFmpeg转码后多视频流问题:如何仅输出带Logo的合成视频流
FFmpeg转码后多视频流问题:如何仅输出带Logo的合成视频流
嘿,这个问题我之前也碰到过,核心原因是你的命令里不小心把原始视频流也打包到输出文件里了,导致生成了多个视频流,平台上传时就出现了选流错误的情况。
咱们拆解下问题:你当前命令里的 -map 0:v 会直接把原始输入视频流(没加Logo的那个)也纳入输出,再加上滤镜处理后生成的带Logo合成流,自然就出现了多视频流冲突。虽然你设置了默认流,但Vimeo/YouTube这类平台的流选择逻辑不一定会遵循这个设置,得从根源解决——只输出合成后的那个视频流。
给你修改后的命令:
ffmpeg -i input.mov -i logo.png -c:a aac -c:v libx264 -pix_fmt yuv420p -crf 18 -map 0:a? -filter_complex "yadif,[1]scale=iw*1:-1[wm];[0:v:0][wm]overlay=main_w-overlay_w-5:5[outv]" -map [outv] -disposition:v:0 default output_h264.mov
重点修改了这两处:
- 在
overlay滤镜结尾添加了[outv],给合成后的带Logo视频流起个标记名,方便后续精准映射 - 删掉了原来的
-map 0:v,改用-map [outv]指定只输出这个标记过的合成视频流
这样处理后,输出文件里就只会有:
- 带Logo的合成视频流(唯一的视频流)
- 保留的原始音频流(如果输入文件有音频的话)
上传到Vimeo或YouTube时,平台只能识别到这一个视频流,自然不会选错了。
备注:内容来源于stack exchange,提问作者Will
相关产品推荐
相关产品推荐

