如何将一堆 m4a 文件分成块并用 ffmpeg 替换它们的元数据?
How can I split a bunch of m4a files in chunks and replace their metadata with ffmpeg?
我通读了很多部分解决了我的问题的线程,并尝试编写一个脚本来将 .m4a 音频文件分成几部分并替换其元数据。
我没能在一行中实现这一点(也许你可以告诉我怎么做)但是这两个脚本已经非常接近了。 (为了便于阅读和调试,我将它们分成两部分。)
#!/bin/bash
# cutaudio.sh
input=
output=
duration=
ffmpeg -i $input -map 0 -f segment -segment_time $duration -c copy "$output-%03d.m4a"
上面的脚本工作正常,并将文件分成提供长度的块。
#! /bin/bash
# stripmetadata.sh
input=
n="1"
for i in $input*; do
title="Part $n"
ffmpeg -i $i -map 0 -metadata title="$title" -c copy -y "$i"
n=$((n + 1))
done
这个脚本实际上设法替换了元数据中的标题,但是文件也被剥离到第一秒。在第二个脚本之后它们的大小都是 33.7 kb。我还是 ffmpeg 的新手,所以非常感谢您的帮助!
编辑:
这是生成的脚本,对于任何感兴趣的人:
https://github.com/adrifromhh/cutaudio
我用它来将下载的有声读物(从 youtube 或从 Audible 录制)剪切成可用部分。
为了扩展 oguzismail 的评论,您应该写入一个临时文件,然后在之后覆盖原始块文件,例如,
for i in $input*; do
title="Part $n"
ffmpeg -i $i -map 0 -metadata title="$title" -c copy -y /tmp/tmp.m4a
mv -f /tmp/tmp.m4a "$i"
n=$((n + 1))
done
我通读了很多部分解决了我的问题的线程,并尝试编写一个脚本来将 .m4a 音频文件分成几部分并替换其元数据。
我没能在一行中实现这一点(也许你可以告诉我怎么做)但是这两个脚本已经非常接近了。 (为了便于阅读和调试,我将它们分成两部分。)
#!/bin/bash
# cutaudio.sh
input=
output=
duration=
ffmpeg -i $input -map 0 -f segment -segment_time $duration -c copy "$output-%03d.m4a"
上面的脚本工作正常,并将文件分成提供长度的块。
#! /bin/bash
# stripmetadata.sh
input=
n="1"
for i in $input*; do
title="Part $n"
ffmpeg -i $i -map 0 -metadata title="$title" -c copy -y "$i"
n=$((n + 1))
done
这个脚本实际上设法替换了元数据中的标题,但是文件也被剥离到第一秒。在第二个脚本之后它们的大小都是 33.7 kb。我还是 ffmpeg 的新手,所以非常感谢您的帮助!
编辑: 这是生成的脚本,对于任何感兴趣的人: https://github.com/adrifromhh/cutaudio 我用它来将下载的有声读物(从 youtube 或从 Audible 录制)剪切成可用部分。
为了扩展 oguzismail 的评论,您应该写入一个临时文件,然后在之后覆盖原始块文件,例如,
for i in $input*; do
title="Part $n"
ffmpeg -i $i -map 0 -metadata title="$title" -c copy -y /tmp/tmp.m4a
mv -f /tmp/tmp.m4a "$i"
n=$((n + 1))
done