以下是一个基本的示例,该示例将一个 MP3 文件分割为多个文件,每个文件的长度为30秒:
#!/bin/bash input=input.mp3 duration=$(ffprobe -i "$input" -show_entries format=duration -v quiet -of csv="p=0") duration=${duration%.*} segments=$(($duration / 30)) remainder=$(($duration % 30)) for ((i=0; i<$segments; i++)) do ffmpeg -i "$input" -ss $(($i * 30)) -t 30 -acodec copy "output$i.mp3" done if [ "$remainder" -gt 0 ] then ffmpeg -i "$input" -ss $(($segments * 30)) -t $remainder -acodec copy "output$segments.mp3" fi
这个脚本首先使用 ffprobe
命令来获取输入文件的总持续时间。然后计算出应该分割成多少个30秒的片段,并且是否有余数。接着,对于每一个30秒的片段,使用 ffmpeg
命令分割出一个单独的文件。如果还有余数(即,总时间不是30的整数倍),那么将剩余的时间作为最后一个文件。
请注意这个脚本假设你想要分割的文件长度都是30秒。如果你需要不同的长度,你可以更改脚本中的 30
为你需要的长度。
此外,这个脚本将生成名为 output0.mp3
, output1.mp3
, output2.mp3
...的文件。如果你需要不同的文件名,可以在脚本中修改。
最后,请确保你已经安装了 ffmpeg
和 ffprobe
。如果没有,你可以通过你的包管理器(如 apt
,brew
或 yum
)来安装。