OOO

 

无责任自制品堆放地
博主对站内物可能引起的任何问题不负任何责任

用ffmpeg制作动态一图流音乐视频

前有gif动图一图流,这回是一图+一循环效果+一动态频谱的稍复杂一图流。
假设我要制作一个尺寸为854x480的一般视频,所需工具是Sonic Candle + ffmpeg。

1. 用Sonic Candle生成音乐频谱视频,帧率12,宽854,高300,背景黑色,前景白色,取名speq.mp4,然后用ffmpeg的"-an"把默认编码的128k音频去掉,以备塞入高音质音频。

2. 找一段视频素材,譬如粒子、烟雾之类效果,通过首尾crossfade改成无缝循环。例如,我从一段黑白烟雾效果o.mp4中切出长度分别为4秒、20秒、4秒的p1、p2、p3:

ffmpeg -ss 00:00:00 -i o.mp4 -t 4  -c:v libx264 o_p1.mp4
ffmpeg -ss 00:00:04 -i o.mp4 -t 20  -c:v libx264  o_p2.mp4
ffmpeg -ss 00:00:24 -i o.mp4 -t 4  -c:v libx264 o_p3.mp4

将p1和p3作淡入淡出,调整为854x480大小:

ffmpeg -i o_p3.mp4 -i o_p1.mp4 -filter_complex "color=white,fade=out:st=0:d=4[aa];[aa]scale=854x480,trim=duration=4[alpha]; [0:v][alpha]alphamerge[am];  [1:v][am]overlay=0:0" -t 8 -c:v libx264 o_p3+1.mp4

而后通过"-f concat"拼接p3+1和p2并循环,生成效果层overlay.mp4。

3. 下面是一图流的三个阶段。
首先制作带音频的静态一图流 v1.mp4,假设有底图screen.png,音频audio.aac:

ffmpeg -loop 1 -r 12 -i "screen.png" -i "audio.aac" -c:a copy -tune stillimage -shortest v1.mp4

然后把静态一图流与动态效果图层复合,图层模式暂选addition,加入特效字幕sub.ass(需要font config),生成v2.mp4:

ffmpeg -r 12 -i v1.mp4 -i overlay.mp4 -filter_complex "[1:0]setsar=sar=1,format=rgba[1sared]; [0:0]format=rgba [0rgbd];[0rgbd][1sared]blend=all_mode='addition':repeatlast=1:all_opacity=0.8,format=yuva422p10le[vid];[vid]subtitles=sub.ass" -c:a copy -shortest v2.mp4

最后再加上频谱层speq.mp4(不加也没关系):

ffmpeg -r 12 -i v2.mp4 -i speq.mp4 -filter_complex "[1:0]pad=854:480:0:90:black,setsar=sar=1,format=rgba[1sared]; [0:0]format=rgba [0rgbd];[0rgbd][1sared]blend=all_mode='screen':repeatlast=1:all_opacity=0.8,format=yuva422p10le" -c:a copy -shortest vid.mp4

如此得到的一图流中,有效果图层、字幕、频谱这三个动态,基本也可以了。

以上视频的编码参数有省略。

评论
热度(5)

© OOO | Powered by LOFTER