理想的には、MP3からFLACに変換して戻したいです。また、これをスクリプト化できる必要があります。
サウンドフォーマットの変換と単純な変換のための基本的なツールは SoX、サウンド処理プログラムのスイスアーミーナイフ です。
sox foo.mp3 foo.flac
Debianを実行している場合、sox
でのMP3の書き込みのサポートは、lennyおよびで壊れています。 squeeze(そして私が知る限り、同じ問題がUbuntu 10.04と10.10に影響します)。 このバグ は2011年3月上旬に修正されたため、最新のソースを取得(またはsox
14.3.1-1build1以降のバイナリを取得)して再コンパイルすると機能するはずです。
.mp3
にエンコードする代わりの方法は、 lame
です。 .flac
は読み取れませんが、sox
または flac
を使用して.flac
から.wav
に変換できます。次に、lame
から.wav
から.mp3
へ。
flac -d foo.flac -c | lame - foo.mp3
sox バージョン13以降はFLACをサポートし、 他の多くの形式 もサポートしています。 soxは、ある形式から別の形式に変換するだけでなく、オーディオファイルに対して 多くのこと を実行できます。 ImageMagick がグラフィックスにとって何であるかはオーディオに対してです。
奇妙なことに、それはflac
と呼ばれています。使用するのは少し面倒ですが、トランスコーディングジョブをスクリプト化したときに戻ってきました。
もちろん、他の人がすでに述べたように、SoXを使用することもできますが、 lame
および flac
を使用することをお勧めします。
最初の質問は.mp3
から.flac
になります(これが通常悪い考えである理由を以下に示します)。
lame --decode <file>.mp3 - | flac -o <file>.flac -
これはWAVヘッダーを使用しますが、非常に長いファイル(4時間以上の長いサウンドファイルなど)に関しては制限があります。
2番目の質問は、.flac
から.mp3
に移動する方法です。
flac -d -c <file>.flac | lame - <file>.mp3
これらの設定は、デフォルトの品質レベルなどを前提としています。lame
および/またはflac
のマニュアルページを読んで、それらを微調整する方法を理解してください。
さて、非常に長い録音があり、それを損失の多い形式に再エンコードしたい場合があります。これは私のユースケースの1つであり、私はこれを思いつきました。
デフォルトの品質設定を使用して.flac
から.mp3
に移動します。
flac -d --force-raw-format --endian=little --sign=signed <file>.flac -c | lame -r -s 48 - <file>.mp3
これは、生の形式がPCMデータであることを前提としています。サンプルレート48kHz、2チャンネル。各サンプルは16ビット、リトルエンディアン、符号付き整数です。
lame
のエンコードプロセスでは、ここでデフォルトの品質設定を使用していますが、これは十分に洗練されていない可能性があります。
MP3はすでに不可逆エンコードされているため、MP3ファイルからFLACファイルを作成しても意味がないことに注意してください。
MP3-> FLAC、次にFLAC-> MP3の順に移動しても、最初の元のMP3エンコーディングステップで品質が低下するため、意味がありません。
ただし、これには合理的なユースケースがあると思います...