![Linux의 명령줄에서 오디오 출력을 어떻게 녹음할 수 있나요?](https://rvso.com/image/1628814/Linux%EC%9D%98%20%EB%AA%85%EB%A0%B9%EC%A4%84%EC%97%90%EC%84%9C%20%EC%98%A4%EB%94%94%EC%98%A4%20%EC%B6%9C%EB%A0%A5%EC%9D%84%20%EC%96%B4%EB%96%BB%EA%B2%8C%20%EB%85%B9%EC%9D%8C%ED%95%A0%20%EC%88%98%20%EC%9E%88%EB%82%98%EC%9A%94%3F.png)
오디오 출력을 mp3 파일로 녹음하고 싶습니다. Ubuntu Linux 터미널에서 어떤 도구와 명령을 사용할 수 있나요?
답변1
sox
다른 답변에서는 , arecord
및 과 같은 도구를 제안했습니다 parec
. 추가적으로,파이프와이어pw-cat
다른 도구도 PipeWire와 함께 작동하지만 사용자는 를 사용할 수 있습니다 . 모두 간단하게 호출할 수 있습니다.
arecord
arecord --format=cd file.wav
.wav
기본적으로 저장됩니다 . 적절한 형식을 지정하지 않으면 기본 오디오 품질이 좋지 않습니다. 이 프로그램에서 제가 좋아하는 기능 중 하나는 멋진 vumeter 그래픽 출력입니다. 또한 동적 출력 파일 이름 지정(시, 분, 일 등)을 지원합니다. 아쉽게도 ogg나 mp3로 출력할 수 없습니다.
sox
rec file.ext
이 프로그램은 현재 zsh 완성에서는 작동하지 않습니다. 그래픽 출력에 미터가 표시되지만 다른 정보도 표시됩니다. mp3와 ogg를 지원합니다.
pacat
parecord file.ext
mp3와 ogg를 지원합니다. 그러나 그래픽 출력에는 미터를 표시할 수 없습니다.
pw-cat
pw-record file.ext
PipeWire용 입니다 pacat
. ogg 및 mp3에 대한 사용자 정의 품질 설정을 지원하지만 지원 pacat
하지 않습니다. 계량된 그래픽 출력도 없습니다.
예를 들어 헤드셋과 같은 다른 오디오 장치에서 녹음하려면 나열된 방법 중 하나를 사용할 수 있습니다.여기먼저 녹음 장치의 이름을 알아보세요. 예를 들어:
pw-cli list-objects | grep node.name
이것이 "alsa_input.usb-Logitech_Wireless_Headset.mono"를 생성했다고 가정하면 해당 이름을 --target
옵션과 함께 사용합니다:
pw-record --target alsa_input.usb-Logitech_Wireless_Headset.mono file.wav
답변2
먼저 출력 장치의 이름을 추출해야 합니다.
이를 위해 다음 패킷을 설치할 수 있습니다.
sudo apt-get install pulseaudio-utils lame mpg123
그리고 다음을 실행하세요:
pacmd list-sinks | grep -e 'name:' -e 'index' -e 'Speakers'
출력은 다음과 같을 수 있습니다.
index: 1
name: <alsa_output.pci-0000_00_1b.0.analog-stereo>
analog-output-speaker: Speakers (priority 10000, latency offset 0 usec, available: unknown)
index: 23
name: <alsa_output.pci-0000_00_03.0.hdmi-surround71>
이름을 찾은 후 다음 명령을 실행하여 출력을 mp3 파일에 기록할 수 있습니다.
parec -d alsa_output.pci-0000_00_1b.0.analog-stereo.monitor | lame -r -V0 - out.mp3
또는 sox
다음을 수행할 수 있지만 첫 번째 솔루션이 더 강력하다는 것을 알았습니다.
sox -t pulseaudio alsa_output.pci-0000_00_1b.0.analog-stereo.monitor -t mp3 test.mp3
그러나 자동으로 녹음을 시작하고 중지하려면 다음을 실행할 수 있습니다.
parec -d alsa_output.pci-0000_00_1b.0.analog-stereo.monitor | sox -t raw -b 16 -e signed -c 2 -r 44100 - test.ogg silence 1 0.1 3% 1 3.0 3%
스피커에 소리가 전송되면 녹음이 시작되고 3초 후에 아무 소리도 수신되지 않으면 녹음이 중지됩니다. 에 대한 자세한 내용은 sox
해당 항목을 참조하세요.Linux용 매뉴얼 페이지.
답변3
당신이 사용할 수있는arecord
이를 위해.
으로 사용 가능한 장치를 얻으세요 arecord -l
. 그러면 다음과 같은 결과가 생성됩니다.
card 0: PCH [HDA Intel PCH], device 0: CX20590 Analog [CX20590 Analog]
Subdevices: 1/1
Subdevice #0: subdevice #0
card 1: Device [USB Audio Device], device 0: USB Audio [USB Audio]
Subdevices: 1/1
Subdevice #0: subdevice #0
그런 다음 USB 마이크(카드 1, 하위 장치 0)를 사용하여 녹음하려면 다음과 같이 하십시오.
arecord --device="hw:1,0" --format=s16_le --rate=48 rec_$(date "+%F_%H-%M-%S").wav
-f cd
에 대한 단축키 도 있습니다 --format=s16_le --rate=44100
.
기본 오디오 소스 설정
제공하지 않으면 에서 녹음됩니다 --device
.arecord
기본오디오 소스. 현재 기본 소스를 표시하려면 다음을 실행하세요.
pactl info | grep "Default Source"
최소한의 텍스트 메뉴를 사용하여 기본 소스를 변경하려면 다음을 사용할 수 있습니다.fzf
:
pactl set-default-source $(pactl list short sources | cut -f2 | fzf)
카드와 하위 장치 색인을 찾는 것보다 이것이 더 편하다고 생각합니다.
녹음하면서 들어보세요
오디오 장치를 듣고 동시에 녹음하는 것이 유용한 경우가 많습니다. arecord
표준 출력에 쓰기를 수행 -
한 다음 해당 오디오 데이터를 파이프로 연결하여 이를 수행할 수 있습니다.tee
오디오를 파일에 기록하고 다음으로 전달합니다 aplay
.
arecord -f cd - | tee rec.wav | aplay -
파일 변환
WAVE 파일을 원하는 형식으로 변환하십시오.
답변4
@Ahmad에게 감사드립니다. 이것은 나에게 효과적이었습니다.
sox -e signed-integer -L -b16 -c2 -r44100 -t raw "|parec -d alsa_output.pci-0000_0c_00.4.iec958-stereo.monitor" -t mp3 -c2 -C 320.01 stream.mp3 silence 1 0.1 3% 1 3.0 3%
여기서 입력 스트림 매개변수는 다음을 사용하여 볼 수 있습니다 pacmd list-sinks
.
name: <alsa_output.pci-0000_0c_00.4.iec958-stereo>
sample spec: s16le 2ch 44100Hz
properties:
alsa.resolution_bits = "16"