从相机添加动画叠加到视频

时间:2017-06-26 20:34:42

标签: android ffmpeg

我需要在录制的视频上叠加多个带有动画位置,alpha和旋转的图像。什么是实现这一目标的最佳方法?

目前我正在查看ffmpeg,是否可以使用ffmpeg为叠加添加位置动画?

1 个答案:

答案 0 :(得分:1)

解决方案示例:

ffmpeg -y -i video.mp4 -i overlay.png -filter_complex "[0][1]overlay=x=mod((1080/4 + sin(t)*1080/4)\,1920):y=mod(t*300\,1080)[res];" -map "[res]" -preset ultrafast out.mp4

说明:

通过输入[0](video.mp4)叠加输入[1](overlay.png)并使用评估x = mod((1080/4 + sin(t)* 1080/4)\,1920)进行位置叠加:y = mod(t * 300 \,1080),其中t =以毫秒为单位的时间。然后将叠加结果映射到stream [res],并输出到out.mp4。

一个包含多个叠加并使用gif作为叠加层的更复杂示例:

ffmpeg -y -i video.mp4 -ignore_loop 0 -i overlay.gif -filter_complex `
>> "[0][1]overlay=x=mod((1080/4 + sin(t)*1080/4)\,1920):y=mod(t*300\,1080):shortest=1[res];`
>> [res][1]overlay=x=mod((200*1 + 1080/4 - sin(2*t)*1080/4)\,1920):y=mod(100 + t*300\,1080):shortest=1[res];`
>> [res][1]overlay=x=mod((200*2 + 1080/4 - sin(-90 + t/2)*1080/4)\,1920):y=mod(150 + t*250\,1080):shortest=1[res];`
>> [res][1]overlay=x=mod((200*3 + 1080/4 - sin(90 + 3*t)*1080/4)\,1920):y=mod(200 + t*100\,1080):shortest=1[res];`
>> [res][1]overlay=x=mod((200*4 + 1080/4 - sin(180 + t)*1080/4)\,1920):y=mod(t*250\,1080):shortest=1[res];`
>> [res][1]overlay=x=mod((200*5 + 1080/4 - sin(-180 + t)*1080/4)\,1920):y=mod(t*100\,1080):shortest=1[res];`
>> [res][1]overlay=x=mod((200*6 + 1080/4 - sin(2*t)*1080/4)\,1920):y=100 + mod(100 + t*300\,1080):shortest=1[res]`
>> " -map "[res]" -preset ultrafast out.mp4