
私は macOS 10.3.6 (High Sierra) を使用していますが、少し前に音楽の CD 4 枚組ボックス セットを入手し、トラックを MP3 にリッピングして、そのファイルをシステムに保存しました。100 曲以上の各トラックに手動でタグを付け、メタデータを追加する必要がありました (聞かないでください)。また、しばらく前に元の CD も処分したので (これも聞かないでください)、簡単に再リッピングできません。
問題はここにある: どうやら、当時使用していた MP3 ツールは、各トラックの冒頭にほんの一瞬の「ポップ」音を追加していたようです。当時は気づかなかった、または注意を払っていなかったのですが、100 曲以上の各トラックの冒頭に、あの不快なポップ音が含まれていました。
私はStack Overflowでこのスレッドを読みました。LAME使用時のクリック音” アドバイスはしっかりしているが、LAME が誤ってオーディオファイルのヘッダーを純粋なオーディオとしてエンコードしてしまうことがあると説明しているが、実際には、提示された解決策では、すでにエンコードされた MP3 を次のような方法でストリーミングしなければならない。fseek
その後、MP3 を再エンコード (つまりトランスコード) しますが、これは理想からは程遠いものです。
では、すでにエンコードされた MP3 から 1/8 秒ほどトリミングして「ポップ」を取り除き、MP3 のトランスコードを回避する方法はあるでしょうか?
私が特に探しているのは、せいぜい Homebrew 経由で新しいツール (必要な場合) をインストールするだけで済む、比較的シンプルな macOS ベースのソリューションです。完全なスクリプトを求めているわけではありませんが、少なくとも正しい方向を指し示すツールと構成のヒントを求めています。
答え1
さて、私は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 を見つけてサブディレクトリにダンプする簡単な Bash スクリプトを作成しましたmp3/
。同様の状況にある誰かの役に立つことを願っています。
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