Wireshark처럼 작동하지만 네트워크 트래픽 대신 원시 사운드를 캡처하여 파일에 저장하는 프로그램이 있습니까?
나는 네트워크 트래픽이 프로토콜 샌드위치이고 실제로 그것과 비슷하게 들리지는 않는다는 것을 알고 있지만, 그 작동을 강조하기 위해 Wireshark와 비교하고 있습니다.
필요하다
- 사용자 공간 프로그램을 임시로 시작합니다.
- 특정 사운드 카드 또는 시스템 전체에서 사운드 캡처
- 검사를 위해 파일(원시 PCM(Pulse Code Modulation))에 저장하는 것이 좋습니다.
나는 여기서 어떤 충실도도 찾고 있지 않습니다. 심지어 44Khz로 샘플링된 채널이면 충분하거나 그보다 낮을 수도 있습니다.
결국 저는 캡처된 데이터를 보고 그에 대한 자체 분석을 수행할 수 있기를 원합니다.
유사하지만 완전히 동일하지는 않습니다.
Randomsound[1]은 내가 원하는 것과 유사해 보이지만 자체 분석을 수행하고 커널 무작위성 풀에만 엔트로피를 주입합니다. 원본 데이터는 저장되지 않습니다.
다음으로 Audacity를 살펴보았습니다. 이 프로그램을 사용하면 마이크 스트림을 캡처할 수 있지만 컴퓨터에서 재생되는 모든 스트림은 캡처할 수 없습니다. 따라서 명령줄을 사용하여 Audacity를 시작하고 스트림을 캡처할 수도 있습니다. 이는 "입력" 장치만 캡처하므로 충분하지 않습니다.
답변1
이것은 꽤 표준적인 설정인 것 같습니다. 당신이 찾고 있는 것은감시 장치장치의 경우 사운드 시스템 PipeWire에 내장되어 있습니다(또는 여전히 Pulseaudio일 수도 있지만 인터페이스가 동일하므로 실제로는 중요하지 않습니다).
이미 사용하고 있을 수도 있습니다: 실행
pactl list short sources
Name: field ends in
.monitor`의 내용을 찾으세요 .
이 내용을 상자에서 로그아웃할 수 있습니다 parecord
. 또는 즉시 압축하려면 다음을 사용하십시오 ffmpeg
.
ffmpeg \
-f pulse \
-i alsa_output.pci-0000_00_1b.0.analog-stereo.monitor \
-c:a libopus -b:a 128k \
recording.opus
이는 PulseAudio/PipeWire에서 입력을 받고, 어떤 장치(나열된 대로 )를 지정하고, 널리 -f pulse
사용 가능한 매우 우수한 OPUS 코덱을 사용하고, 비트 전송률을 128kb/s(보통 비압축 오디오와 구별할 수 없음)로 설정하도록 지시합니다.ffmpeg
-i {Device name}
pactl list short sources
-c:a libopus
-b:a 128k
굵은 글씨: 문제 아동
그러나 Audacity는 적어도 내가 아는 한 최신 사운드 시스템을 완벽하게 지원하지 않습니다(목적을 고려하면 다소 불행한 일입니다).
실제 오디오 하드웨어 장치를 에뮬레이트하도록 시스템에 지시해야 합니다. 다행히도 이것은 그리 어렵지 않습니다.
.asoundrc
홈 디렉터리에서 파일을 엽니다. 아직 존재하지 않을 수도 있습니다. 그냥 만드십시오(예: 를 사용하여 touch ~/.asoundrc
).
다음으로 사용할 장치를 찾습니다. 출력을 필터링하고 pactl list short sources
다음이 포함된 행을 찾습니다 .monitor
.
pactl list short sources | grep '\.monitor'
여기에 나열된 장치부터 시작하고 싶습니다 alsa_output.pci-0000_00_1b.0.analog-stereo.monitor
. 귀하의 장치는 다른 것으로 불릴 수 있습니다. 그 이름을 복사하세요.
그런 다음 ~/.asoundrc
텍스트 편집기에서 편집하고 다음을 추가합니다.
pcm.analog_out_monitor {
type pulse
device alsa_output.pci-0000_00_1b.0.analog-stereo.monitor
}
ctl.analog_out_monitor {
type pulse
device alsa_output.pci-0000_00_1b.0.analog-stereo.monitor
}
(물론 제가 사용한 기기 이름을 사용하세요.)
대담한 재부팅. analog_out_monitor
이제 입력 장치가 표시됩니다 .