ALSA再生モノラルファイルですが使用できないチャンネル番号を返します。

ALSA再生モノラルファイルですが使用できないチャンネル番号を返します。

test.wavALSAを使ってスピーカーで再生したいファイルがあります。私のシステムにもsoxがインストールされています。すべてのサウンドカードが正しく取り付けられています。aplay -Lそしてarecord -L正しい値を返します。

しかし、私はこれをプレイできませんでしたtest.wav

aplay -c1 -r 48000 -f S16_LE test.wav
$ Playing WAVE 'test.wav': Signed 16 bit Little Endian, Rate 48000 Hz, Mono
  aplay: set_params:1345: Channels count non available

しかし、soxを使用すると、システムに問題はなく、ファイルは実際には16ビット1チャンネルと表示されます。

$ Encoding: Signed PCM
  Channels: 1 @ 16-bit
  Samplerate: 48000Hz

その理由が何であるかはよくわかりません。助けてくれてありがとう!よろしくお願いします!

編集する:

  1. 端末に印刷されたメッセージを手動で入力したときに間違いをしたし、SoXを使ってみると本当に1@16ビットでした。

  2. .asoundrc

pcm.!default {
 type hw
 card 0
}
ctl.!default {
 type hw
 card 0
}
  1. 使用するときはチャンネル数を指定する必要がありますarecordarecord -c 2 -r 48000 -f S16_LE test.wav それ以外の場合は、上記のエラーが返されます。ただし、test.wav録音を使用すると再生に問題はありませんarecord。奇妙なことは、test.wav他の場所からもたらした場合は再生できないことです。

答え1

piユーザーが使用しているデバイスの構成を変更すると、hwすべての自動サンプル形式変換が無効になりました。

カード番号のみを設定するには、以下を使用してください。

defaults.pcm.card 0
defaults.ctl.card 0

すべてのユーザーに対してこの設定を変更するには、に入力します/etc/asound.conf

答え2

以下を実行して sudo 権限の問題を解決できました。

sudo nano /root/.asoundrc

pcm.!default {
 type hw
 card 0
}
ctl.!default {
 type hw
 card 0
}

その後、.asoundrcホームディレクトリに合計を追加しました。オプションを指定せずにasound.confwavファイルに合計を使用できるようになりました。aplayarecord

解決策は次のようになります。alsa - プロジェクトのウェブサイト

関連情報