在云虚拟机上捕获音频(Debian)

在云虚拟机上捕获音频(Debian)

我遵循了许多有关 ALSA、Pulseaudio、JACK 等的指南,但似乎都没有用。我将具体说明我想做什么。在基于云的 Debian VM 上,我想要:

  • 使用打开流cvlc
  • icecast2在同一系统上启动服务器
  • cvlc捕获正在使用的音频流darkice并将其发送到本地icecast2服务器

但是,云虚拟机没有音频卡。因此,我尝试设置虚拟设备来实现此功能。到目前为止,我还没有成功。

我为什么要这么做?很简单。我关注的几个视频博主都做现场直播。他们在当天晚些时候提供播客录音,但不提供现场音频流。我想在外出时听他们的现场直播,但流媒体 YouTube 会消耗大量移动数据。

因此,我想:

  1. 设置小型云服务器
  2. 使用播放视频流cvlc
  3. cvlc使用以下方式捕捉音频darkice
  4. 将音频重新广播到本地icecast2服务器

我已经将它分成几部分来工作。我可以:

  • icecast2在云服务器上运行
  • 使用我的笔记本电脑播放视频流cvlc
  • 用(也在我的笔记本电脑上)捕获流的音频darkice并将其发送到icecast1云服务器上的实例

但是,我不知道如何让所有组件在无声卡云服务器上运行。我知道这是可以做到的,也知道这需要设置虚拟声卡。我做过modprobe很多pactl事情,但就是无法让它工作。

抱歉说了这么多,但我想说清楚。

答案1

我通过以下帖子找到了答案: https://stackoverflow.com/questions/40061291/linux-without-hardware-soundcard-capture-audio-playback-and-record-it-to-fil

首先,安装所需的程序:

sudo apt-get install -y darkice icecast2 pulseaudio jackd2 alsa-utils dbus-x11

# If you want to use VLC, this will install the bare-minimum VLC without X:
sudo apt-get install vlc vlc-plugin-video-output x11-utils- xdg-utils- vlc-plugin-samba- fonts-freefont-ttf- libnotify4-

我假设您知道如何正确设置darkiceicecast关键是按照正确的顺序和正确的管理权限启动一切(似乎jackd需要以 身份运行):sudo

sudo service icecast2 start
sudo jackd -r -ddummy & sleep 0.25 ;
pulseaudio -D & sleep 0.25 ;
darkice -c darkice.cfg & sleep 0.25 ;

# If you are using VLC, play your audio, and it should work:
cvlc --network-caching 10000 --no-video [file-or-url]

就是这样!如果你想看更详细的内容,我为我自己创建了一个公共要点: https://gist.github.com/summersab/43d83fbfecaf9dffa665bacdc39cba10

我想在 Docker 中运行它,但我无法让 Icecast 工作——与套接字有关,而且我认为我不想走那条路。

相关内容