gpt4 book ai didi

bash - ffmpeg - 设置可变视频持续时间

转载 作者:行者123 更新时间:2023-12-04 23:15:42 26 4
gpt4 key购买 nike

我使用此命令批量转换文件以及裁剪和重新缩放:

for i in $( ls *.mp4 ); do
ffmpeg -y -i "$i" -acodec libfaac -ab 128k -ar 44100 -vcodec libx264 -b 850k -threads 0 -vf [in]crop=in_w-112:in_h-63:56:0,scale=1280:720[out] "../../archive/${i/.mp4/}.mp4"
done

此命令将从第 15 秒开始,并使视频长 30 秒:
for i in $( ls *.mp4 ); do
ffmpeg -ss 00:00:15 -t 30 -y -i "$i" -acodec libfaac -ab 128k -ar 44100 -vcodec libx264 -b 850k -threads 0 -vf [in]crop=in_w-112:in_h-63:56:0,scale=1280:720[out] "${i/.mp4/}_test.mp4"
done

我想要的是一个命令,它从 BATCH 中的每个视频的开头截断 15 秒,从结尾截断 15 秒......诀窍是每个视频都有不同的持续时间,所以“它有多长”必须是一个变量(持续时间为负 15 秒或负 30 秒,如果我从一开始也算 15 秒)

视频时长示例:
video 1 - 00:25:19
video 2 - 00:15:34
video 3 - 00:19:21
video 4 - 00:22:49
etc.

最佳答案

你不能用一个简单的 bash 脚本来做到这一点吗?

如前所述here此命令将以秒为单位检索视频持续时间:

ffprobe -i some_video -show_entries format=duration -v quiet -of csv="p=0"

所以你可以把它读入一个变量,然后简单地退出 30 秒,你现在将在你的 ffmpeg 命令中设置什么持续时间。

因此,第 1 步将是您已在问题中发布的第一个 for 循环。

第 2 步将从电影持续时间中提取 30 秒并将其保存在变量中。

然后在第 3 步中,像这样重写第二个 for 循环:
for i in $( ls *.mp4 ); do
ffmpeg -ss 00:00:15 -t $your_new_duration_variable -y -i "$i" -acodec libfaac -ab 128k -ar 44100 -vcodec libx264 -b 850k -threads 0 -vf [in]crop=in_w-112:in_h-63:56:0,scale=1280:720[out] "${i/.mp4/}_test.mp4"
done

关于bash - ffmpeg - 设置可变视频持续时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42293300/

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