web-dev-qa-db-ja.com

FLACオーディオ形式との間で変換するための優れたコマンドラインツールはありますか?

理想的には、MP3からFLACに変換して戻したいです。また、これをスクリプト化できる必要があります。

10
ixtmixilix

サウンドフォーマットの変換と単純な変換のための基本的なツールは 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 がグラフィックスにとって何であるかはオーディオに対してです。

7
Warren Young

奇妙なことに、それはflacと呼ばれています。使用するのは少し面倒ですが、トランスコーディングジョブをスクリプト化したときに戻ってきました。

2
geekosaur

もちろん、他の人がすでに述べたように、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エンコーディングステップで品質が低下するため、意味がありません。

ただし、これには合理的なユースケースがあると思います...

0
polemon