FFMPEG - 衰落的文字与背景
问题描述:
我想淡入文本进出(文本具有一个背景),在那一刻,我有什么是这个命令:FFMPEG - 衰落的文字与背景
1.混合命令
ffmpeg -y -i input.mp4 -filter_complex "drawtext=fontfile=HelveticaNeue.ttf:text='Testing': fontcolor=white:fontsize=40: box=1: [email protected]:boxborderw=5:x=(w-text_w)/2:y=(h-text_h)/2[subtitles];[subtitles][0:v]blend=all_expr='A*(if(between(T,1,2),(T-1),0))+B*(1-(if(between(T,1,2),(T-1),0)))'[out]" -map '[out]' -map 0:a output.mp4
上面的命令成功地消失在DrawText的(又名字幕在这个过滤器),但我还没有设法让它淡出出来出于某种原因,因为改变它的数值不太有我期望的结果。
我也试了一个命令,没有那么复杂,但没有其他原因工作过:
2.淡出命令
ffmpeg -y -i input.mp4 -filter_complex "drawtext=fontfile=HelveticaNeue.ttf:text='Testing': fontcolor=white:fontsize=40: box=1: [email protected]:boxborderw=5:x=(w-text_w)/2:y=(h-text_h)/2[subtitles]; [subtitles]fade=t=in:st=2:d=1,fade=t=out:st=3:d=1[out]" -map '[out]' -map 0:a output.mp4
这第二个命令进出变淡,但适用于整个视频而不是单独的字幕部分。
任何方式有人可以给我这个手?
答
的快速和肮脏的方法做到这一点是基本视频分成两个,画上一个拷贝文本,添加alpha通道,应用淡入淡出到α,结果叠加到另一副本。
例如
ffmpeg -y -i input.mp4 -filter_complex "[0]split[base][text];[text]drawtext=fontfile=HelveticaNeue.ttf:text='Testing': fontcolor=white:\
fontsize=40: box=1: [email protected]:boxborderw=5:x=(w-text_w)/2:y=(h-text_h)/2,format=yuva444p,fade=t=in:st=2:d=1:alpha=1,fade=t=out:st=3:d=1:alpha=1[subtitles]; \
[base][subtitles]overlay" output.mp4
非常有趣!我认为这将是非常慢又在哪里,我们只是淡出字幕通道的解决方案,但它是完全相反,你的解决方案只需花费不到一半,然后我的“1混合命令”,我可能会用这个去除非一些更好的选择出现,非常感谢您的意见! –
'blend'单独为每个像素寻址,以便更多mem I/O操作。 – Mulvya
是有道理:)感谢输入伴侣! –