私はmacOS10.3.6(High Sierra)を使用していますが、以前は4枚のCDボックスセットで音楽を再生し、トラックをMP3にリッピングして、ファイルをシステムに保存していました。 100以上のトラックのそれぞれに手動でタグを付けてメタデータを追加する必要があり(尋ねないでください)、しばらく前に元のCDも削除したので(どちらも尋ねないでください)、簡単に再リッピングできませんそれら。
ここに問題があります:どうやら私がその時に使用したMP3ツールは各トラックの始めにほんの一瞬の「ポップ」を追加しました。当時、私は気づいていなかった、または注意を払っていませんでしたが、100以上のトラックのそれぞれに、トラックの最初にその迷惑なポップがあります。
Stack Overflowでこのスレッドを読みました。「 LAMEを使用する場合は最初にサウンドをクリックしてください 」アドバイスはしっかりしていますが、LAMEが誤ってオーディオファイルのヘッダーを純粋なオーディオとしてエンコードすることがあることを説明しています。提示されたソリューションでは、すでにエンコードされているMP3を fseek
のようなものでストリーミングしてから、理想からはほど遠いMP3を再エンコード(別名:トランスコード)する必要があります。
では、これらのすでにエンコードされたMP3の約1/8秒をトリミングして、「ポップ」を取り除き、MP3のトランスコードを回避する方法はありますか?
私は特に、Homebrewを介してインストールする必要があるのは(必要な場合)新しいツールのみである、比較的単純なmacOSベースのソリューションを探しています。完全なスクリプトを要求するのではなく、少なくとも私を正しい方向に向けるためのツールと構成のヒントを求めています。
さて、FFmpegの魔法を使ってこれを解決することができました(Homebrew経由でmacOSにすでにインストールしています)。具体的には、 -ss
(別名:シーク)パラメーター オーディオストリームに適用されるcopy
オプションと組み合わせると、魅力のように機能します。コマンドは次のように要約できます。
ffmpeg -ss 0.125 -i "input.mp3" -acodec copy "output.mp3"
-ss
を0.125
に設定してから、copy
を-acodec
に設定して入力と出力を指定するだけです。
そして、質問で説明したように、私の場合、処理するファイルが100以上あるので、開始オーディオの1/8をトリミングする必要があるすべてのMP3を検索し、それらをmp3/
サブディレクトリにダンプする単純なBashスクリプトを作成しました。これが同様の状況の誰かに役立つことを願っています!
find -E "path/to/audio/files" -type f -iregex ".*\.(MP3)$" |\
while read full_audio_filepath
do
# Break up the full audio filepath stuff into different directory and filename components.
audio_dirname=$(dirname "${full_audio_filepath}");
audio_basename=$(basename "${full_audio_filepath}");
audio_filename="${audio_basename%.*}";
# Set the MP3 directory.
mp3_dirpath="${audio_dirname}/mp3";
mp3_filepath="${mp3_dirpath}/${audio_filename}.mp3";
# Create the child MP3 directory.
mkdir -p "${mp3_dirpath}";
# And here is where the magic happens.
ffmpeg -y -v quiet -ss 0.125 -i "$full_audio_filepath" -acodec copy "$mp3_filepath" < /dev/null;
done