리눅스 레코드 : 마이크 입력이 아닌 사운드 카드 출력 캡처


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 -Lpastebin 항목에 포함되어 있습니다.

arecord매뉴얼 페이지는 입력 장치를 사용하여 선택 될 수 있음을 나타내는 -D플래그를 있지만 구문 예를 제공하지 않는다.

arecord마이크에서 사운드 카드로 입력을 변경하는 방법을 알고 싶습니다 . Audacity와 같은 GUI 기반 대안에는 관심이 없습니다. 감사.

편집 : arecord버전 1.0.25, vorbis-tools버전 1.4.0 및 ALSA 드라이버 버전 1.0.24와 함께 Debian 7.0 (stable)을 실행 중입니다.


하드웨어에 출력을 다시 캡처 장치로 라우팅하는 믹서 컨트롤이 있습니까?
CL.

@CL. 내가 아는 유일한 사전 설치된 믹서는 alsamixer입니다. alsamixer(F6 키를 눌러 사운드 카드를 선택) 내에서 루프백 카드 를 선택하면 메시지가 나타납니다 This sound device does not have any controls. 믹서를 종료하고 돌아 오면 사운드 카드가 루프백에서 기본 카드로 복원 된 것을 알 수 있습니다. 선택 후 프로세스 를 일시 중단 ( ctrl-z) 및 배경 ( bg) 하려고 하면 명령을 통해 오디오를 성공적으로 녹음 할 수 없습니다 . alsamixerloopbackarecord
user001 2016 년

카드 선택 alsamixer은 나머지 시스템에는 영향을 미치지 않습니다. 표시되는 컨트롤 만 변경합니다. Conexant 장치의 녹화 선택 컨트롤은 무엇입니까?
CL.

@CL. Conexant 장치의 경우에 하나의 재생 컨트롤 ( Master)과 하나의 캡처 컨트롤 ( Capture)이 있습니다 alsamixer. 스페이스 바를 사용하여 캡처를 켜거나 끌 수 있으며 alsamixer기본적으로 켜져 있습니다. 이것이 귀하가 의도 한 것이 아닌 경우 알려주십시오. 감사.
user001

답변:


6

ALSA 루프백 드라이버를 사용하는 것이 좋습니다. 로드하려면 :

sudo modprobe snd-aloop

의 출력에 새 캡처 장치를 추가해야합니다 arecord -L.

컴퓨터에 물리적 사운드 카드가 하나만있는 경우 .asoundrc홈 폴더에 다음 내용이 포함 된 파일을 만들어 루프백 사운드 카드를 모든 앱의 기본값으로 만들 수 있습니다.

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

이 파일이있는 동안 모든 응용 프로그램에서 출력되는 모든 사운드는 실제 스피커가 아닌 루프백 어댑터로 이동해야합니다. arecord 명령에 올바른 장치를 지정하고 완료되면 .asoundrc파일을 제거하여 정상으로 돌아갑니다.


제안 해 주셔서 감사합니다. .asoundrc내 홈 디렉토리에서 작성 하고 터미널 에뮬레이터 세션을 다시 시작하더라도 오디오는 여전히 스피커로 보내집니다. arecord -f cd -t raw | oggenc - -r -o file.ogg명령 기록 아무것도 없습니다. 발행 arecord -l은 이전과 동일한 목록을 제공하지만 각각 8 개의 하위 장치 ( )가있는 card 1: Loopback( devices 0, 1)에 대해 두 개의 추가 행이 #0-#7있습니다. 마찬가지로 arecord -L다음 세 줄을 추가했습니다 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/171287/…
beveradb

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.
Peque

5

몇 년 후, 투쟁은 계속되고 있습니다. 기록 장치를 지정하는 방법은 다음과 같습니다.

➜  ~ 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의 형식


3

하드웨어는 출력 캡처를 지원하지 않습니다. 데이터가 실제 재생 장치에 들어가면 사라집니다.

오디오 데이터를 하드웨어에 기록하기 전에 오디오 데이터를 복제하는 일부 소프트웨어를 사용해야합니다.

PulseAudio를 사용하는 것이 좋습니다. 거기에서 간단히 출력 중 하나를 캡처 소스로 선택할 수 있습니다. pavucontrol 출력 모니터링


pavucontrol사용하여 녹화를 설치 하고 시도했습니다 gnome-sound-recorder. gnome-sound-recorder녹음을 열고 시작 하면 ( Ctrl-R) 스트림이 PulseAudio Volume Control 창에 나타납니다. 그러나 스트림은 실제로 데이터를 기록하지 않습니다 (최종 길이는 0:00). 또한 GUI 대신 명령 줄을 통해 기록을 수행하는 방법에 대해 잘 알고 있습니까? 감사 .
user001

1
  1. PulseAudio 볼륨 제어-> 입력 장치 탭으로 이동하십시오. 하단에서 "모든 입력 장치"를 표시하도록 선택하십시오. "내부 오디오 아날로그 스테레오 모니터"가 음소거되어 있지 않고 오디오를 재생할 때 볼륨이 올라가거나 내려 오는지 확인하십시오 !!

  2. 오디오 레코더 를 사용 하여 오디오 소스 = 내부 오디오 아날로그 스테레오 (오디오 입력)를 녹음 하십시오 . 아래 스크린 샷을 참조하십시오.

여기에 이미지 설명을 입력하십시오


당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.