마이크를 녹음하고 이더넷에서 듣기

마이크를 녹음하고 이더넷에서 듣기

오디오에 문제가 있습니다.

Xubuntu(Alice라고 부르겠습니다) 아래에 라인인 잭에 연결된 외부 마이크를 계속 듣는 데 사용할 수 있는 오래된 컴퓨터가 있습니다. 내 PC에서 ssh를 통해 (물리적으로도) 컴퓨터에 액세스할 수 있습니다(Ubuntu에서는 그를 Bob이라고 부르겠습니다)... 최근에 변경된 로그인 키보드 레이아웃을 업데이트할 때 이유를 모르겠습니다. 현재는 그렇게 하지 마십시오. . arecord, pulseaudio를 사용하여 원격으로 마이크 녹음을 시도했지만 성공하지 못했지만 ALSA 및 PA가 처음입니다. PA의 경우 마이크가 pacmd list-sources에 나열되지 않습니다! ? .

Alice를 지속적으로 기록하고 결국 Bob의 기록을 읽는 (쉬운?) 방법이 있습니까(그러나 동시에 디스크 공간이 많지 않아 최대 50GB의 여유 공간이 있습니다)?

답변1

"Alice"에서 VLC를 사용하여 RTP를 통해 오디오를 로컬 주소로 스트리밍한 다음 "Bob"이 해당 주소 + 포트를 듣고 오디오 녹음을 캡처하도록 하는 것이 좋습니다. 까다로운 부분은 오디오 입력 장치의 MRL(Media Resource Locator)을 식별하는 것입니다.

스트리밍 명령은 다음과 같습니다.

cvlc alsa://<input_device> --sout-keep --no-sout-video --sout="#transcode{acodec=mpga,ab=<bit_rate>,aenc=ffmpeg,channels=<n_channels>,samplerate=<sample_freq>,threads=2}:rtp{mux=ts,dst=<stream_address>,port=<stream_port>,sdp=sap,proto=udp}" &

어디:

  • input_device는 잭 마이크의 ALSA 하드웨어 주소입니다. cat /proc/asound/cards마이크가 사운드 카드 1에 연결되어 있으면 input_device다음과 같이 표시 됩니다.hw:1,0
  • bit_rate선택 사항이지만 일반적으로 64*여야 합니다 n_channels(즉, 모노의 경우 64, 스테레오의 경우 128, 고급의 경우 264).
  • n_channels마이크가 지원하는 오디오 채널 수입니다(1은 모노, 2는 스테레오).
  • sample_freq또한 마이크에 따라 44100 또는 48000과 같아야 하지만 더 작을 수도 있습니다(Hz 단위).
  • stream_address선택한 멀티캐스트 IP 주소여야 합니다(예: 239.255.12.42).
  • stream_port또한 원하는 포트(예: 1234)

그런 다음 "Bob"에서 라이브 오디오 스트림을 수신하고 이를 기본 오디오 출력 장치로 재생하려면 다음 명령을 실행하십시오.

vlc -vv rtp://@<stream_address>:<stream_port>

cvlcNET과 달리 GUI 없이 VLC만 실행한다는 점에 유의하세요 vlc -I dummy.

그런 다음 출력 사운드 파일 이름( out_file_name)을 생성하는 루프가 포함된 몇 가지 기본 스크립트를 작성하고 다음 VLC 명령을 실행하여 잠시 동안 해당 출력 파일에 오디오를 듣고 녹음한 다음 VLC 프로세스를 종료할 수 있습니다(이 경우 WAV 형식의 오디오):

cvlc --no-sout-video --sout-audio --ttl=1 --sout-keep --sout "#transcode{acodec=mpga,ab=<bit_rate>,aenc=ffmpeg,channels=<n_channels>,samplerate=<sample_freq>,threads=2}:std{access=file,mux=wav,dst=<out_file_name>}" rtp://@<stream_address>:<stream_port> vlc://quit &

루프에서 위 명령을 시작한 후 매번 녹음하려는 시간을 기다린 다음 백그라운드 청취 kill -9 $!프로세스를 사용하거나 종료하십시오 pkill vlc.

관련 정보