我写了一小段代码来淡入淡出视频片段 - 你可以定义视频的长度以及淡入淡出的长度。
它对没有 alpha 通道的视频很有效。
问题始于带有 alpha 通道的视频。
以下是显示该问题的视频:
https://streamable.com/94fxe
第一个视频是带有 alpha 通道的视频
第二个视频是没有 alpha 通道的视频
以下是淡入淡出不透明视频的代码片段:
ffmpeg -y -i "%FilePath%" -filter_complex "[0]pad=ceil(iw/4)*4:ceil(ih/4)*4[o];[o]split[tran][body];[body]trim=0:%LoopDuration%,setpts=PTS-STARTPTS,format=yuva420p,fade=d=%TransitionTime%:alpha=1[jt];[tran]trim=%LoopDuration%:%LoopDurationNTransition%,setpts=PTS-STARTPTS[main];[main][jt]overlay" "%looped%\temp.%ext%"
下面是我用来淡入淡出带有 alpha 通道的视频的一段代码:(主要区别仅在于我用来输出带有 alpha 的视频的编解码器):
ffmpeg -y -i "%FilePath%" -filter_complex "[0]pad=ceil(iw/4)*4:ceil(ih/4)*4[o];[o]split[tran][body];[body]trim=0:%LoopDuration%,setpts=PTS-STARTPTS,format=yuva420p,fade=d=%TransitionTime%:alpha=1[jt];[tran]trim=%LoopDuration%:%LoopDurationNTransition%,setpts=PTS-STARTPTS[main];[main][jt]overlay" -vcodec prores_ks -pix_fmt yuva444p10le -profile:v 4444 -q:v 10 "%looped%\temp.%ext%"
PS 除了使用 FFMPEG 之外,我还使用 AHK - 这就是为什么有一些带有 % 的变量。
有人能告诉我问题出在哪里吗?我尝试用我能想到的所有可能方式重写它,但我无法弄清楚......
答案1
好的,我找到了我的问题所在——我忘记了我需要淡化两个层才能实现干净的交叉淡入淡出。
因此,使用 alpha 通道淡入淡出视频的代码将是:
ffmpeg -y -i "%FilePath%" -filter_complex "[0]pad=ceil(iw/4)*4:ceil(ih/4)*4[o];[o]split[tran][body];[body]trim=0:%LoopDuration%,setpts=PTS-STARTPTS,format=yuva420p,fade=in:d=%TransitionTime%:alpha=1[jt];[tran]trim=%LoopDuration%:%LoopDurationNTransition%,setpts=PTS-STARTPTS,fade=out:d=%TransitionTime%:alpha=1[main];[main][jt]overlay" -vcodec prores_ks -pix_fmt yuva444p10le -profile:v 4444 -q:v 10 "%TempFolder%\temp.%ext%"