linux arecord:マイク入力ではなくサウンドカード出力をキャプチャする


20

次のコマンドを使用して、サウンドカードの出力をキャプチャし、Vorbis ogg形式でエンコードしようとしています。

arecord -f cd -t raw | oggenc - -r -o file.ogg

ただし、サウンドカードの出力ではなく、コンピューターのマイク入力が記録されます。

コマンドの出力arecord -l

**** List of CAPTURE Hardware Devices ****
card 0: PCH [HDA Intel PCH], device 0: CONEXANT Analog [CONEXANT Analog]
  Subdevices: 1/1
  Subdevice #0: subdevice #0

コマンドの出力は、arecord -Lこのpastebinエントリに含まれています。

arecordマニュアルページは、入力装置を使用して選択することができることを示す-Dフラグを、ない構文の例を与えません。

arecordマイクからサウンドカードへの入力を変更する方法を知りたいです。AudacityなどのGUIベースの代替には興味がありません。ありがとう。

編集:私はarecordバージョン7.0.2、vorbis-toolsバージョン1.4.0、およびALSAドライババージョン1.0.24でDebian 7.0(安定版)を実行しています。


ハードウェアには、出力をキャプチャデバイスに戻すためのミキサーコントロールがありますか?
CL。

@CL。私が知っているプレインストールされた唯一のミキサーはalsamixerです。alsamixer(サウンドカードを選択するF6キー)内でループバックカードを選択すると、メッセージが表示されますThis sound device does not have any controls。ミキサーを終了して戻ると、サウンドカードがループバックからデフォルトカードに復元されていることがわかります。選択後にプロセスを一時停止(ctrl-z)およびバックグラウンド(bg)しようとしても、コマンドを使用してオーディオを正常に録音できません。alsamixerloopbackarecord
user001

でカードを選択しalsamixerても、システムの他の部分には影響しません。表示されるコントロールが変わるだけです。Conexantデバイスの録音選択コントロールとは何ですか?
CL。

@CL。Conexantデバイスの場合、内に1つの再生コントロール(Master)と1つのキャプチャコントロール(Capture)がありますalsamixer。キャプチャは、スペースバーを使用してオンとオフを切り替えることができalsamixer、デフォルトではオンになっています。これが意図したものでない場合はお知らせください。ありがとう。
user001

回答:


6

ALSAループバックドライバーを使用することをお勧めします。ロードするには:

sudo modprobe snd-aloop

これにより、新しいキャプチャデバイスがからの出力に追加されarecord -Lます。

コンピューターに物理的なサウンドカードが1つしかない場合.asoundrc、ホームフォルダーに次の内容のファイルを作成することで、ループバックサウンドカードをすべてのアプリのデフォルトにすることができます。

pcm.!default {
    type hw
    card 1
    device 0
}

このファイルが配置されている間、すべてのアプリケーションからの音声出力は、実際のスピーカーではなくループバックアダプターに送られる必要があります。arecordコマンドで正しいデバイスを指定し、完了したら、.asoundrcファイルを削除して通常の状態に戻します。


ご提案ありがとうございます。.asoundrcホームディレクトリに作成してターミナルエミュレータセッションを再起動しても、オーディオは引き続きスピーカーに向けられます。arecord -f cd -t raw | oggenc - -r -o file.oggコマンドは何も記録されません。発行は、arecord -l前と同じリストを提供する、しかしのための2つの追加の行とcard 1: Loopbackdevices 0, 1)、8つのサブデバイス(各#0-#7)。同様にarecord -L、次の3行を追加しましたsysdefault:CARD=Loopback [newline] Loopback, Loopback PCM [newline] Default Audio Device。文字数制限のため、次のコメントに続きました。
user001

arecord -f cd -t raw --device=sysdefault | oggenc - -r -o file.oggコマンドが実行されている間、空のオーディオファイルを録音しようとします(以前のようにマイクからオーディオデータを描画しません)。残念ながら、(の最初の行)と(の最後の行)のsysdefault両方であると定義されているため、縮退しています。あなたが提供できるフォローアップの提案をありがとう。CARD=PCHarecord -LCARD=Loopbackarecord -L
user001

ループバックを使用すると、サウンドカードの出力ではなく再生デバイスで再生されたもののみを記録できます。
CL。

申し訳ありませんが、私の答えはうまくいきませんでした-それは私の設定でうまくいきます。私はasoundrcファイルのこの説明をご覧になることをお勧め:alsa-project.org/main/index.php/Asoundrc あなたはいくつかのことを試してみて、少しより多くのあなたがすべきさまざまなデバイスで遊ぶ場合、私はかなり確信しています動作させます。少し面倒ですが、たまたま物理的な3.5mm-> 3.5mmケーブルを持っていますか?その場合、ヘッドフォン出力ジャックをマイク/ライン入力ジャックに接続するだけで済みます。
beveradb

asoundrcで動作しない場合は、これらのリンクから把握するための詳細情報が提供される場合があります。sabi.co.uk / Notes / linuxSoundALSA.html tasksRecordPlay forum.vectorlinux.com/index.php?topic=7500.0 Ifそれでも動作しない場合は、ALSAの代わりにPulseAudioを使用するように切り替えることができます。この回答では、PulseAudioを使用してこれを行う方法について説明します。askubuntu.com
questions

6

数年後、闘争は続きます...記録装置を指定する方法、見よ:

➜  ~ arecord -l                                                              
**** List of CAPTURE Hardware Devices ****                                   
card 0: PCH [HDA Intel PCH], device 0: CX20590 Analog [CX20590 Analog]       
  Subdevices: 1/1                                                            
  Subdevice #0: subdevice #0                                                 
card 1: Device [USB PnP Sound Device], device 0: USB Audio [USB Audio]       
  Subdevices: 1/1                                                            
  Subdevice #0: subdevice #0     

➜  ~ arecord -f S16_LE -r 44100 --device="hw:1,0" plik.wav                   
Recording WAVE 'plik.wav' : Signed 16 bit Little Endian, Rate 44100 Hz, Mono 
^C
Aborted by signal Interrupt...  

したがって、デバイス文字列の形式は hw:<card>,<device>

デバイスIDの形式


6

私は同じ問題を抱えていて、ここで別の解決策を見つけまし。主なアイデアはを使用することpacatです。私にとっては、このように動作します:

1)モニターデバイスの検索:

$ pacmd list | grep "\.monitor"
name: <alsa_output.pci-0000_01_00.1.hdmi-stereo.monitor>
name: <alsa_output.pci-0000_00_1b.0.analog-stereo.monitor>
        alsa_output.pci-0000_01_00.1.hdmi-stereo.monitor/#0: Monitor of HDA NVidia Digital Stereo (HDMI)
        alsa_output.pci-0000_00_1b.0.analog-stereo.monitor/#2: Monitor of Built-in Audio Analog Stereo

2)オーディオをファイルにキャプチャする:

$ pacat --record -d alsa_output.pci-0000_00_1b.0.analog-stereo.monitor > dump.raw

3)ファイルを変換wav

sox -t raw -r 44100 -e signed-integer -L -b 16 -c 2 dump.raw output.wav

それでおしまい!


3
parec代わりに使用できることに注意してくださいpacat --record。また、の使用soxと使用を回避することもできますparec -d <monitor> --file-format=wav output.wav。使用可能なファイル形式を一覧表示できますparec --list-file-formats
ペケ

3

ハードウェアはその出力のキャプチャをサポートしていません。データが実際の再生デバイスに送信されると、データは削除されます。

オーディオデータをハードウェアに書き込む前に複製するソフトウェアを使用する必要があります。

PulseAudioを使用することをお勧めします。そこで、出力の1つをキャプチャソースとして選択するだけです。 pavucontrol出力モニタリング


インストールしてpavucontrol、を使用して録音を試みましたgnome-sound-recorder。開いgnome-sound-recorderて再コーディング(Ctrl-R)を開始すると、PulseAudio Volume Controlウィンドウにストリームが表示されます。ただし、ストリームは実際にはデータを記録しません(最終長は0:00です)。また、GUIの代わりにコマンドラインを使用して記録を実行する方法に精通していますか?ありがとう。
user001

1
  1. PulseAudio Volume Control-> Input Devicesタブに移動します。下部で、「すべての入力デバイス」の表示を選択します。「内部オーディオアナログステレオのモニター」がミュートされていないか、オーディオを再生するときに音量が上下するかどうかを確認してください!!

  2. オーディオレコーダーを使用して、オーディオソース=内部オーディオアナログステレオ(オーディオ入力)を記録します。以下のスクリーンショットをご覧ください。

ここに画像の説明を入力してください


弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.