오디오를 출력 장치로 보낼 수 있으면 동일한 오디오를 파형으로 녹음할 수 있습니다. 파일 시스템을 사용하면 루프백 파일 시스템을 설정하고 장치 대신 파일에 바이너리 데이터를 쓰기만 하면 됩니다.
내 질문은: 내 오디오 장치 대신 WAV 파일로 오디오 신호를 보낼 수 있습니까? 어떻게?
답변1
예.
사실 방법은 여러 가지가 있습니다. 사운드 가상 사운드 카드 장치를 설정하고 장치에서 데이터를 가져올 수 있지만 이는 그다지 유용한 형식은 아닙니다.
arecord
alsa 출력 스트림을 도청하고 이를 알려진 여러 형식으로 저장할 수 있는 유틸리티와 같은 것이 더 유용할 것입니다 . 기본적으로 alsa 사운드 시스템을 통해 재생할 수 있는 모든 항목을 표준 형식 사운드 파일로 복사할 수 있습니다.
답변2
시스템 또는 로그하려는 응용 프로그램의 경우 출력을 다음으로 지정하십시오.사운드 서버, 이 사운드 서버의 녹음 가능성을 연구하십시오. 예를 들어 Ubuntu에서 공식 사운드 서버는 다음과 같습니다.펄스 오디오, 이는parec
명령(에서pulseaudio-utils
팩 pulseaudio-utils 설치 http://bit.ly/software-small). 출력을 parec
사용 가능한 것으로 변환해야 할 수도 있습니다.삭스(우분투:sox
sox 설치 http://bit.ly/software-small).
parec -r --rate=44100 | sox --type raw --rate 44100 - --type ogg recording.ogg
답변3
이것은~해야 한다Audacity에 직접 로그인하는 것은 가능하지만 내 시스템(Ubuntu 10.10)에서는 사용할 수 없습니다. 그러니 지시를 따르세요.여기Audacity 위키에서 ALSA
재생 장치를 사용하여 오디오를 파일로 전송했습니다.
이것은 .asoundrc
(홈 디렉토리에 있는) 파일을 사용합니다:
pcm.teeraw {
type empty
slave.pcm "tee:default,'/tmp/out.raw',raw"
# 48000 S16_LE 2ch (aplay -t raw -f dat)
}
Flash(Firefox)에서 녹화하려면 다음을 사용합니다.
FLASH_ALSA_DEVICE=teeraw firefox
결과 파일 /tmp/out.raw
은 원시 형식이므로 변환하려면 올바른 매개변수가 무엇인지 알아야 합니다. 이상하게도 lame
이 문제를 스스로 해결할 수 있는 것 같지만 sox
명시적으로 알아야 합니다. 따라서 다음이 모두 작동하는 것 같습니다.
aplay -t raw -f dat -r 44100 /tmp/out.raw # to play
sox -r 44100 -b 16 -e signed -c 2 /tmp/out.raw /tmp/out.wav # to convert to wav
lame /tmp/out.raw # to convert to mp3
답변4
ALSA 트리에는 루프백 드라이버가 있으며,aloop-kernel.c(통과하다여기); 직접 제작해야 합니다(그리고 aplay
오디오 애플리케이션 등을 통해 장치로서의 활용도를 결정해야 합니다 arecord
)...