Android 将动画覆盖添加到来自摄影机的视频

Android 将动画覆盖添加到来自摄影机的视频,android,ffmpeg,Android,Ffmpeg,我需要在录制的视频上覆盖多个带有动画位置、alpha和旋转的图像。实现这一目标的最佳方式是什么 目前我正在研究ffmpeg,是否可以使用ffmpeg向覆盖添加位置动画?解决方案示例: 说明: 将输入[1](Overlay.png)覆盖在输入[0](video.mp4)上,并使用求值x=mod((1080/4+sin(t)*1080/4)\,1920):y=mod(t*300\,1080)定位覆盖,其中t=以毫秒为单位的时间。然后将叠加结果映射到stream[res],并输出到out.mp4 一个

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

目前我正在研究ffmpeg,是否可以使用ffmpeg向覆盖添加位置动画?

解决方案示例: 说明: 将输入[1](Overlay.png)覆盖在输入[0](video.mp4)上,并使用求值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
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