【发布时间】:2019-07-25 15:31:17
【问题描述】:
我有超过 1000 个音频文件,所有这些文件都以鼠标单击结束。我想从所有这些中删除最后半秒。音频文件有不同的长度(即 15 秒、5 秒……),但它们的共同点是最后半秒有鼠标点击声。如何使用 Windows 10 命令行批量修剪文件夹中 mp3 文件的结尾?我已经下载了 FFMPEG。谢谢!
【问题讨论】:
标签: batch-file audio ffmpeg mp3 trim
我有超过 1000 个音频文件,所有这些文件都以鼠标单击结束。我想从所有这些中删除最后半秒。音频文件有不同的长度(即 15 秒、5 秒……),但它们的共同点是最后半秒有鼠标点击声。如何使用 Windows 10 命令行批量修剪文件夹中 mp3 文件的结尾?我已经下载了 FFMPEG。谢谢!
【问题讨论】:
标签: batch-file audio ffmpeg mp3 trim
这是两个问题合二为一:
我会回答 #1,因为我不是 Windows 用户。批处理脚本由您决定。
使用ffprobe获取持续时间:
ffprobe -v error -show_entries format=duration -of csv=p=0 input.mp3
使用ffmpeg修剪:
ffmpeg -i input.mp3 -t <duration> -c copy output.mp3
将<duration> 替换为ffprobe 的输出减去0.5 秒。
【讨论】:
-toeof 的补丁可以恢复。
- 如何将其合并到 Windows 批处理脚本中?
应该这样做:
FOR %%A IN (*.mp3) DO (
FOR /F %%B IN ('ffprobe.exe -v error -show_entries format^=duration -of csv^=p^=0 "%%~A" ^| xidel -s - -e ". - 0.5"') DO (
ffmpeg.exe -i "%%~A" -t %%B -c copy "%%~dpnA_trimmed.mp3"
)
)
首先,在批处理中进行浮点计算在官方上是不可能的,而且在非官方的情况下真的很难编写脚本。这就是为什么我建议让Xidel 做数学。它首先是一个从 HTML/XML/JSON 下载和提取数据的命令行工具,但它可以做的更多!
25.547755 现在变为 25.047755。= 和 |。"%%~A(mp3 文件),将持续时间设置为 %%B 并创建一个新的 mp3 文件 (<filename>_trimmed.mp3)。ffprobe.exe、xidel.exe 和 ffmpeg.exe 都在同一个目录中。【讨论】:
*.bat 文件。当然你也可以直接在 cmd 中输入这个命令(一行!)。在这种情况下,将 %% 替换为 %。 Xidel 和 FFmpeg 一样,不是标准的 Windows 程序,所以是的,你必须先下载它。如果您希望上述代码正常工作,则确实与 ffmpeg.exe 相同的目录。批量转义意味着在某些字符前面放置一个^。 = 和 | 已被转义,因此无需进一步修改代码
% 而不是%%。