mplayerを使ってPCM wavを作成するには?

mplayerを使ってPCM wavを作成するには?

spexencを使って携帯電話のオーディオブックを再エンコードしたいです。最初のステップは、mplayerを使用してファイルを再エンコードすることです。

for i in *.mp3; do
    mplayer -ao pcm:waveheader "$i" -af pan=1:0.5:0.5,resample=22050 -ao pcm:file="$i.wav";
done

オンラインで見つけました。しかし、出力ファイルはpcm wavではありません。

file *.wav
RIFF (little-endian) data, WAVE audio, mono 22050 Hz

xiph.orgの参照wavはpcmです。

file wb_male.wav 
RIFF (little-endian) data, WAVE audio, Microsoft PCM, 16 bit, mono 16000 Hz

spexencは最後のPCM WAVをエンコードしますが、mplayerファイルはエンコードしません。なぜできないの? 「pcm」というオーディオ出力がpcmファイルを出力しませんか?どうすれば修正できますか? fifoに名前を付けずにwavをspeexencに直接パイプする簡単な方法はありますか?

答え1

これMPlayerのマニュアルページ次の構文を使用します。

mplayer -ao pcm:file=test.wav test.avi

サンプルレートの制限などの操作を実行するには、-srateオプション(-srate 44100Redbook CD Audioなど)を追加できます。

ただし、インストールした場合はffmpeg実際にはそうするように設計されているため、使用することをお勧めします。

答え2

mplayer -ao pcmmp3で生成されたwavファイルはPCM形式です。それはmp3デコーダが自然に生成するので、浮動小数点PCMです。fileこれは言うべきですが、浮動小数点PCM形式がわかりません。

mp3デコーダは浮動小数点を生成し、受信したフォーマットを記録する-ao pcmので、フォーマットを変更するにはその間にaf formatフィルタが必要です。署名された16ビットリトルエンディアン(おそらくあなたが望むもの)の場合、これを行うことが-af format=s16leできます。

答え3

pcm出力でmplayerを実行すると、最速の方法が表示されます。

Info: Faster dumping is achieved with -benchmark -vc null -vo null -ao pcm:fast

だから

mplayer in.mp3 -benchmark -vc null -vo null -ao pcm:fast:file=out.wav -af format=s16le

結果:

$ file out.wav
RIFF (little-endian) data, WAVE audio, Microsoft PCM, 16 bit, stereo 48000 Hz

これで十分ですか? soxまたはaudacityを使用してステレオをモノラルに変換できます。

関連情報