web-dev-qa-db-ja.com

UNIXシステムでPCMファイルを再生する方法は?

Cで libmad を使用する方法を理解しようとしています。問題は、libmadがオーディオファイルを.pcmファイルに変換し、これらのファイルを再生する方法を見つけることができないことです。単純な.pcmプレーヤーはなく、pcmファイルを開こうとするたびにAudacityがクラッシュします。誰かがこれについて何か経験がありますか?私はこれらのpcmファイルをwavファイルまたは他の形式に変換することにオープンですが、これを行う簡単な方法はありません(少なくとも私はそれを見つけていません)。

4
Cookie Monster

有効なPCMデータを取得していますか?どのタイプのPCMを入手していますか?

基本PCMオーディオCD および WAVファイル CDからリッピングされます。ほぼ何でもプレイできるはずです。具体的には、16ビット(サンプルあたり)、44.1 kHz(サンプルレート)、ステレオ(2チャンネル)です。この種のPCMの再生は、cat file.pcm > /dev/audio(または/dev/dspまたは別の適切なオーディオデバイス)と同じくらい簡単です。

libmadホームページ は、libmadがデフォルトで24ビットPCMを出力する可能性があることを示しており、標準の16ビットPCMを期待している場合、プレーヤーソフトウェアが混乱する可能性があります。まだ行っていない場合は、プログラムのlibmadの使用法を madlld(libmad低レベルAPIチュートリアル) と照合して、ライブラリから正しい出力が得られていることを確認してください。

PCMデータにはWAVファイルのようにヘッダーが含まれていないため、ファイルを正しくロードするには、プログラムのPCM形式を指定する必要がある場合があります。 Audacityは、標準のPCM形式を処理できる必要があります。

ライブラリのバグまたはコードによるライブラリの不適切な使用が原因で、libmadから無効なPCM出力を取得している可能性もあります。

3
quack quixote

Ubuntu Linux 15.10

Sudo apt-get install ffmpeg
ffplay -autoexit -f u16be -ar 44100 -ac 1 in.raw

または:

Sudo apt-get install play
play -b 16 --endian big -e unsigned -r 44100 in.raw

ffplayオプション:

  • -autoexit:ストリームが終了したらプレーヤーを終了します
  • -f:フォーマット:
    • u:署名なし
    • 16:値あたり16ビット
    • be:ビッグエンディアン
  • -ar:サンプル周波数
  • -ac:チャンネル数

playオプション:値を比較します;-)

プレイする独自の.rawファイルを生成する方法の例: https://stackoverflow.com/questions/732699/how-is-audio-represented-with-numbers/36510894#36510894 ==

参照: https://stackoverflow.com/questions/20314739/how-to-play-pcm-sound-file-in-ubunt

おそらく、 Sox のようなツールを使用できます

SoXは、さまざまな形式のコンピューターオーディオファイルを他の形式に変換できるクロスプラットフォーム(Windows、Linux、MacOS Xなど)のコマンドラインユーティリティです。また、これらのサウンドファイルにさまざまなエフェクトを適用でき、追加のボーナスとして、SoXはほとんどのプラットフォームでオーディオファイルを再生および録音できます。

0
Sathyajith Bhat