我有一个文件夹,里面装满了我编写的 FFMPEG 批处理文件,用于执行各种转换任务。这些文件允许我拖放一堆文件并进行转换 - 例如,将 MP3 解压缩为 WAV 文件、裁剪 XVID 文件等。
现在我想写一个程序,将 MP3 分割成更小的块。有一个简洁的 FFMPEG 命令可以实现这个功能
ffmpeg -f mp3 -i /path/to/file.mp3 -t 00:00:00 -ss 00:10:00 -y /path/to/save.mp3
但是,这只能提取前 10 分钟。要提取整个 MP3,我必须为 MP3 长度的每 10 分钟编写类似的语句。有没有办法在批处理文件中对此进行标记?
答案1
嗯,有两种方法可以解决这个问题:
您可以为批处理文件提供命令行参数,
ffchunk.cmd *start* *end*
这将使您能够灵活地确定块长度。批处理文件看起来如下所示:`ffmpeg -f mp3 -i /path/to/file.mp3 -t 00:%1:00 -ss 00:%2:00 -y /path/to/save%1-%2.mp3`
,其中
%1
和%2
分别代表在命令行中给出的第一个和第二个参数。您可以将其调用为ffchunk 00 10
。在批处理文件中提供一个循环,以根据需要进行迭代:
`@echo off setlocal ENABLEEXTENSIONS setlocal ENABLEDELAYEDEXPANSION for /L %%i in (1,1,10) do ( set /a j=%%i-1 set k=%%i if !j! lss 10 set j=!j!0 if !k! lss 10 set k=!k!0 ffmpeg -f mp3 -i /path/to/file.mp3 -t 00:!j!:00 -ss 00:!k!:00 -y /path/to/save!j!-!k!.mp3 )`
答案2
你可以使用 ffmpeg 的段复用器。 就像是:
ffmpeg -i input.mp3 -map 0 -c copy -f segment -segment_time 600 out-%02d.mp3
...将生成一系列文件,格式为 out-00.mp3、out-01.mp3 等,每个文件长度为 600 秒(最后一部分除外,即剩余部分)。使用片段复用器处理视频时,存在准确性问题(虽然这些问题可以解决,请参阅我链接的文档),但我在处理音频文件时从未遇到任何问题。