gpt4 book ai didi

bash ffmpeg 使用输入文件名作为输出视频文件名

转载 作者:行者123 更新时间:2023-12-04 23:25:08 31 4
gpt4 key购买 nike

我在 Mac 终端上工作。我在一个目录中有 250 个视频文件。对于每一个,我想要一个介于 10 秒和 20 秒以及 179 和 207 秒之间的 20 秒子剪辑。我希望输出文件的名称与输入文件相同,加上“_1”后缀,以便区分它们。目前,我有以下代码:

#!/bin/bash

for %%f in (*.mp4) do ffmpeg -i "%%f" -vf "select='between(t, 10, 20) +
between(t, 197, 207)', setpts=N/FRAME_RATE/TB" -qscale 0 -af "aselect='between(t, 10, 20) +
between(t, 197, 207)', asetpts=N/SR/TB" "%%~nf_1.mp4"

当我执行时,它给了我以下错误: 意外标记附近的语法错误 `('

如果我删除循环并尝试使用特定的“inputfilename.mp4”和“inputfilename_1.mp4”(即我想要的输出文件名),它就可以工作。至于上面代码中的输出文件名, this post建议“~nf”从输入文件中删除扩展名(即“.mp4”),所以我后来添加了_1.mp4。

有什么建议么?先感谢您。

最佳答案

你的循环应该是

for %%f in *.mp4 do

换句话说,丢掉括号。循环的“in”部分需要一个参数列表。 *.mp4 将扩展以包含所有匹配的文件名。

如果您有两个文件 a.mp4 和 b.mp4 则 *.mp4 将在循环执行之前展开为:
for %%f in a.mp4 b.mp4 do

关于bash ffmpeg 使用输入文件名作为输出视频文件名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51101678/

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