我通读了很多部分解决了我的问题的线程,并试图编写一个脚本,该脚本将.m4a音频文件分为多个部分并替换其元数据。
我没能一口气做到这一点(也许你可以告诉我怎么做),但是这两个脚本非常接近。 (出于可读性和调试目的,我将它们分为两部分。)
#!/bin/bash
# cutaudio.sh
input=$1
output=$2
duration=$3
ffmpeg -i $input -map 0 -f segment -segment_time $duration -c copy "$output-%03d.m4a"
上面的脚本可以正常工作,并将文件分成提供的长度的块。
#! /bin/bash
# stripmetadata.sh
input=$1
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录制)的可用部分。
答案 0 :(得分:0)
要扩展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