将你的音频通过网络传输至iPad等具有串流能力的设备上

最近新装了一台Windows PC,囊中羞涩,音响就先不考虑了,适逢桌上常年有台iPad Air,音质尚可,便拿来做PC外放了。

另也适用于一些其它场景,总结一下:

  1. 将音频由音质更好的设备进行播放
    • 在你的iPad Pro上播放
    • 在支持串流协议的高级网络音箱上播放
  2. 某些限制场景下的音频转发
    • 没有蓝牙收发能力的台式机(正如没有音响的台式)
  3. 远程播放
    • 网络广播
    • 和好朋友一起分享音乐
    • 一边工作一边收听其它来自房间的会议

基于Windows平台的串流服务端

一般地,串流服务端会捕获系统播放设备(麦克风/线路输入等)作为音频源

因而我们需要一个将音频输出(扬声器)转音频输入的插件,以供串流软件捕获做音频源

Linux 信号源 不限于 音频输入设备

材料

开始

1.下载&安装VB-Audio Virtual Cable Driver,安装成功则声音选项卡会出现一对镜像设备

2.切换播放设备,将信号导到刚刚创建的虚拟接口上

  • 跟随系统(Windows Media Player, Groove)
  • 自定义播放设备(Adobe Premiere Pro, 网易云音乐, 腾讯会议)

3.创建一个基于http协议的串流服务

图形化点来点去太麻烦了,我们直接一点,上脚本:

"C:\Program Files\VideoLAN\VLC\vlc.exe" -I dummy --dummy-quiet dshow:// :dshow-vdev=none :dshow-adev="CABLE Output (VB-Audio Virtual Cable)" :live-caching=0 :sout=#transcode{vcodec=none,acodec=mp3,ab=128,channels=2,samplerate=44100,scodec=none}:http{mux=mp3,dst=:8080/} :no-sout-all :sout-keep

  • 捕获设备:CABLE Output (VB-Audio Virtual Cable)
  • 监听地址:0.0.0.0:8080
  • 协议:http(通用性强)
  • 编码:MP3

4.在iPad端启动VLC Media Player,打开网络串流,填入串流服务器地址,开始播放!

http://<serverip>:8080?/action=stream 

拓展

当你不想让其它人听到,或者只有一部分人听到,可以在服务器端做点限制

新增WIndows高级防火墙规则并指定作用域(IP和端口)

set ProgramPath="C:\program files\videolan\vlc\vlc.exe"
set ListenPort=8080
set AllowAddress="192.168.1.0/32"
:: 多个请用逗号隔开
netsh advfirewall firewall add rule name="VLC media player 8080" remoteip=%AllowAddress% dir=in protocol=TCP localport=%ListenPort% action=allow program=%ProgramPath% enable=yes profile=private
:: 检查
netsh advfirewall firewall show rule name="VLC media player 8080" verbose
:: 删除
netsh advfirewall firewall del rule name="VLC media player 8080"

不足

  • 实时播放(会有延迟,且取决于根据网络延迟,严重时会出现音画极不同步的情况)
  • 单向播放(类似于广播)

鸣谢

7
1