我正在尝试将音频从 Windows 主机上的默认麦克风流式传输到 Docker 容器。通过层 pf 虚拟化安装设备可能会出现问题。我无法弄清楚如何在我的 C#(dotnet 核心)代码中正确使用传入的流。
我正在使用 VLC windows 应用程序在我的 windows 主机上创建测试流,使用此处的说明。我正在流式传输到 rtp://127.0.0.1:5004,因为一切都将在同一台机器上运行。在我的自定义 C# 应用程序中使用流的代码如下所示:
LibVLC libvlc = new LibVLC();
libvlc.SetLogFile("c:\\temp\\vlc.log");
MediaPlayer player = new MediaPlayer(libvlc);
var media = new Media(libvlc, "rtp://127.0.0.1:5004", FromType.FromLocation);
var status = await media.Parse(MediaParseOptions.ParseNetwork);
player.Playing += (sender, e) =>
{
//Need to do something here?
};
player.Play(media);
我期望做的是在 MediaPlayer、Media 或其他 VLC 对象上注册一些事件处理程序,并获得一个音频字节缓冲区,我可以将其转换为预期格式(PCM,1 通道,16K 样本/秒,16 位每个样本),然后重写到另一个流(为简单起见,代码中未显示)。但是,我显然错过了一些东西。
所以,我的问题是:对于我的场景,我应该更喜欢来自主机的 HTTP、RTSP 还是 RTP 流?一旦我正确设置了该设置,如何注册传入的音频事件,以便我可以处理它们并将数据写入另一个流?