使用 ffmpeg 分割 .flac 文件会截断音频但不会截断文件长度

Segmenting .flac files with ffmpeg truncates audio but not file length

我正在尝试将 Twitter space 的音频 (.ts) 文件转换为我可以轻松编辑的格式,OSX。

到目前为止,我可以使用以下方法将文件批量转换为 .flac:

for i in *.ts;
do name=`echo "$i" | cut -d'.' -f1`
echo "$name"
ffmpeg -i "$i" -sample_fmt s16 -ar 41000 "${name}.flac"
done

这行得通,并且稍微减小了文件大小,但是.. 因为大多数文件的长度都在 7 小时左右,所以我选择的编辑器无法处理一个文件中那么多的音频。

所以我环顾四周,找到了将文件分成 3 小时长的部分的命令。

ffmpeg -i space-1OdKrBealBqKX_0.flac -map 0 -f segment -segment_time 10800 -c copy space-1OdKrBealBqKX_0__%03d.flac

这可行,但每个文件末尾都包含与原始文件一样多的空白/无声 space。这将成为与帮助编辑这些文件的团队共享的问题,因为每个文件都有原始文件的长度和文件大小。有很多文件。 音频片段和命名确实有效。

如何将文件的实际长度截断到音频段?

警告:我不是任何这些问题的专家,我只是设法 google 并走到这一步,所以如果有人知道并想提供工作代码,我们将不胜感激!

FLAC 文件包含流持续时间的元数据。流复制时,ffmpeg 无法覆盖该元数据,因此它会被保留。

您的解决方法是在原始步骤中进行分段。

ffmpeg -i "$i" -sample_fmt s16 -ar 44100 -f segment -segment_time 10800 "${name}__%03d.flac"