表达式编码器-不捕获系统音频

本文关键字:系统 音频 编码器 表达式 | 更新日期: 2023-09-27 17:52:50

我正在尝试使用表达式编码器捕获我的网络摄像头和系统音频,网络摄像头工作正常,但系统音频只是沉默。

我遵循这里的教程:CodeProject表达式编码器教程,但它不适合我正常工作。

当我列出音频设备时,"扬声器…","麦克风…"answers"耳机…"被列出(因为它们在系统托盘中的播放设备中),但如果我尝试从扬声器或耳机中录制,我什么也得不到(如果我选择那个,我会得到麦克风音频)。

下面是我使用的代码:
job = new LiveJob();
LiveDeviceSource lds = job.AddDeviceSource(ledv[0], leda[1]);
FileArchivePublishFormat fileOut = new FileArchivePublishFormat();
fileOut.OutputFileName = string.Format("C:''Users''user1''Desktop''testvideo-{0:yyyyMMdd_hhmmss}.wmv", DateTime.Now);
job.PublishFormats.Add(fileOut);
lds.PreviewWindow = new PreviewWindow(new System.Runtime.InteropServices.HandleRef(panel1, panel1.Handle));
job.StartEncoding();
job.ActivateSource(lds);

有人知道为什么它不记录系统音频吗?在它工作之前,还有什么其他的设置需要我修改吗?

感谢您的宝贵时间。

编辑:

我决定打印出来的工作。CurrentAudioVolume,当它在编码时看看这个是否改变过但它总是在0。如果我将音频设备更改为麦克风,则当有声音时该值会上升(如预期的那样)。所以它肯定看起来像SDK是无法记录我的系统音频(无论是从扬声器或耳机)。

表达式编码器-不捕获系统音频

好的,我在同事的帮助下整理好了。

基本上耳机/扬声器等只是输出设备,所以你需要安装一个环回驱动程序作为输入设备。

在Sourceforge/Github上有一个免费的,效果很好。选择它作为音频设备。

有一个小问题,我有一个"记录"/"停止"按钮,调用job.StopEncoding();但与环回音频驱动程序选择StopEncoding()挂起窗口,我猜是因为环回驱动程序没有得到正确停止,但如果你调用job.RemoveDeviceSource(deviceSource);在调用StopEncoding()之后,然后在下一个StartEncoding()之前重新添加,它工作得很好。