オーディオファイルを連結してトランスコードするには、これが従うべきワークフローです。
- 入力オーディオファイルをWAV / PCMデータにデコードします。
- WAVを連結する
- WAVをエンコードしてオーディオコーデックファイルを出力します。
これらのステップの処理は、WAVデータに対して連結を実行します。これは、処理が最も簡単で、損失が最も少ない方法です。とにかくトランスコードしたいので、プロセスのどこかでWAVにデコードする必要があります。それを利用するかもしれません。
これが私がお勧めするステップです。使用します ffmpeg
デコード用 sox
連結のため oggenc
エンコード用。あなたはあらゆるステップのために他のツールを代用することができます - mencoder
他のものはデコーダとしてうまく機能します、そしてOggをエンコードするどんなツールでもエンコーダとして使うことができます。 sox
連結のために。
find *.wma -exec ffmpeg -i {} outfile.{}.wav \;
(これは実行されます ffmpeg -i infile.wma outfile.infile.wma
現在のディレクトリ内の各WMAファイルに)
sox outfile* all.wav
(注意 outfile
手順1)で出力ファイルに付けたものと同じプレフィックスです。
oggenc all.wav all.ogg
おそらくここでいくつかの品質設定が欲しいのですが、これはまともな品質のデフォルトを与えます。好きな結果が得られませんでした ffmpeg
しかし、あなたはそれを好むかもしれないので、私は下記のffmpegの例を含めました。
に注意してください sox
すべてのWAVファイルが同じフォーマットでないと、コマンドは正しく機能しません。 sox
コマンドラインスイッチを使って、どのフォーマットで出力したいかを指定します。 sox
連結ステップ用。君は できた ステップ1で生のPCMフォーマットに出力して使用する cat
ステップ2では、これは同じフォーマットの場合にのみ機能します。どのフォーマットを使用するかについては、デコーダーとエンコーダーの両方に非常に限定されている必要があります。
ffmpegを使ったエンコーディング:ffmpegに組み込まれているVorbisエンコーダーはあまりよくないとネットの苦情を訴えています。あなたのバージョンがlibvorbisサポートでビルドされているなら、 -acodec libvorbis
代わりに。サンプルコマンドライン:
ffmpeg -i all.wav -acodec libvorbis -ac 2 -ab 128k all.ogg