使用 ffmpeg 创建拖放批处理文件来分割 MP3

使用 ffmpeg 创建拖放批处理文件来分割 MP3

我有一个文件夹,里面装满了我编写的 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

嗯,有两种方法可以解决这个问题:

  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

  2. 在批处理文件中提供一个循环,以根据需要进行迭代:

     `@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 秒(最后一部分除外,即剩余部分)。使用片段复用器处理视频时,存在准确性问题(虽然这些问题可以解决,请参阅我链接的文档),但我在处理音频文件时从未遇到任何问题。

相关内容