gpt4 book ai didi

ffmpeg - 高效的命令行来裁剪视频,覆盖另一个裁剪并使用 ffmpeg 缩放结果

转载 作者:行者123 更新时间:2023-12-04 23:02:40 27 4
gpt4 key购买 nike

我需要以这样一种方式转换许多视频,即从单个视频的每一帧中获取 2 种不同的裁剪,将它们一个叠放在另一个上并缩小结果,创建一个新的更小的视频。
我要转换 this fullHD frame (两个裁剪区域标记为红色)到此small stacked frame .

现在我使用以下代码:

ffmpeg  -i "video.mkv" -filter:v "crop=560:416:0:0" out1.mp4
ffmpeg -i "video.mkv" -filter:v "crop=560:384:1060:128" out2.mp4
ffmpeg -i out1.mp4 -vf "movie=out2.mp4[inner]; [in][inner] overlay=0:32,scale=280:208[out]" -c:v libx264 -preset veryfast -crf 30 result.mp4

它可以工作,但效率很低,并且需要临时文件(out1 和 out2)。问题是我有超过 100.000 个这样的视频(它们很大并且存储在 NAS 上,而不是直接存储在我计算机的硬盘上)。使用 Windows 批处理脚本(for 循环)将它们全部转换需要...48 天。你能帮我优化脚本吗?

最佳答案

使用裁剪、vstack、缩放和格式过滤器:

ffmpeg -i input.mkv -filter_complex "[0:v]crop=560:24:0:0[top];[0:v]crop=560:384:1076:128[bottom];[top][bottom]vstack,scale=280:-2[out]" -map "[out]" -c:v libx264 -preset veryfast -crf 30 -movflags +faststart result.mp4

如果您想使其复杂化以加快过滤速度(也许),那么您可以先尝试缩放:
ffmpeg -i input.mkv -filter_complex "[0:v]scale=iw/2:-1,split[v0][v1];[v0]crop=560/2:24/2:0:0[top];[v1]crop=560/2:384/2:1076/2:128/2[bottom];[top][bottom]vstack[out]" -map "[out]" -c:v libx264 -preset veryfast -crf 30 -movflags +faststart result.mp4

您必须进行试验,看看哪个对您来说最快。

关于ffmpeg - 高效的命令行来裁剪视频,覆盖另一个裁剪并使用 ffmpeg 缩放结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50538206/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com