我遵循了许多有关 ALSA、Pulseaudio、JACK 等的指南,但似乎都没有用。我将具体说明我想做什么。在基于云的 Debian VM 上,我想要:
- 使用打开流
cvlc
icecast2
在同一系统上启动服务器cvlc
捕获正在使用的音频流darkice
并将其发送到本地icecast2
服务器
但是,云虚拟机没有音频卡。因此,我尝试设置虚拟设备来实现此功能。到目前为止,我还没有成功。
我为什么要这么做?很简单。我关注的几个视频博主都做现场直播。他们在当天晚些时候提供播客录音,但不提供现场音频流。我想在外出时听他们的现场直播,但流媒体 YouTube 会消耗大量移动数据。
因此,我想:
- 设置小型云服务器
- 使用播放视频流
cvlc
cvlc
使用以下方式捕捉音频darkice
- 将音频重新广播到本地
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-
我假设您知道如何正确设置darkice
。icecast
关键是按照正确的顺序和正确的管理权限启动一切(似乎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 工作——与套接字有关,而且我认为我不想走那条路。