录制麦克风并从以太网监听

录制麦克风并从以太网监听

我遇到了音频问题。

我在 Xubuntu 下有一台旧机器(我们称之为 Alice),我可以用它来连续收听插入线路输入插孔的外部麦克风的声音。我可以通过 ssh 从我的 PC(我们称之为 Bob -在 Ubuntu 下)访问该机器(物理上也是如此......当我更新最近更改的登录键盘布局时,我不知道为什么,目前阻止我这样做所以)。我尝试使用 arecord、pulseaudio 远程录制麦克风,但没有成功,但我对 ALSA 和 PA 很陌生。对于 PA,麦克风不会在 pacmd list-sources 中列出!?。

有没有一种(简单?)方法可以连续(但同时,我的磁盘上没有太多空间,最多 50 GB 可用空间)记录 Alice(并最终读取 Bob 的记录)?

答案1

我建议在“Alice”上使用 VLC 通过 RTP 将音频流式传输到本地地址,然后让“Bob”监听该地址 + 端口并捕获音频录音。棘手的部分是识别音频输入设备的 MRL(媒体资源定位器)。

流命令如下所示:

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>

请注意,cvlc仅启动没有 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

相关内容