如何为ffmpeg的boxblur制作动画

时间:2016-06-30 02:22:39

标签: video ffmpeg

我正在运行以下ffmpeg命令,该命令将单个图像转换为10秒的慢速缩放到照片的中心。

正如您所看到的,我目前正在查看我想要的- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo fetchCompletionHandler:(void (^)(UIBackgroundFetchResult result))handler { if (application.applicationState == UIApplicationStateActive) { UIAlertView *alertView = [[UIAlertView alloc] initWithTitle:@"Reminder" message:userInfo[@"Reminder"][@"alert"] delegate:nil cancelButtonTitle:@"Mark as Completed" otherButtonTitles:@"Later"]; [alertView show]; } else if (application.applicationState == UIApplicationStateBackground || application.applicationState == UIApplicationStateInactive) { } } ,但它适用于整个10秒剪辑。我想模糊前3秒,然后将模糊的半径从它的当前值boxblur动画到boxblur=10:9从3.0 - 4.0秒(24帧, 24P)。

boxblur=0:0

有关如何实现这一目标的任何帮助?

1 个答案:

答案 0 :(得分:2)

使用

ffmpeg -loop 1 -framerate 24 -i image.jpg -filter_complex "[0:v]zoompan=z='min(zoom+0.0005,1.12)':x='iw/2-(iw/zoom/2)':y='ih/2-(ih/zoom/2)':d=240:s=hd1080:fps=24,split[base][blur];[blur]trim=duration=4,boxblur=10:9,format=yuva420p,fade=out:st=3:d=1:alpha=1[blurred];[base][blurred]overlay" -c:v libx264 -pix_fmt yuv420p -t 10 -crf 20  video.mp4

boxblur选项不支持基于时间的动画,因此完成此操作的方法是执行zoompan,然后拆分该结果。在其中一个子流中,boxblur在前4秒应用。修剪不是必要的,但会稍微加快执行速度。然后,该流的像素格式添加了alpha通道,这是完全不透明的。淡出仅应用于3到4秒的alpha通道。然后该结果覆盖在另一个子流上。当具有alpha的流覆盖在另一个流上时,alpha值将确定顶层的不透明度。由于alpha从3到4秒消失,顶层交叉淡化'到基础层。实际上,这会将boxblur减少到0。