0

我正在尝试使用 Expression Encoder 捕获我的网络摄像头和系统音频,网络摄像头工作正常,但系统音频只是静音。

我在这里按照教程进行操作:CodeProject 表达式编码器教程,但它对我不起作用。

当我列出音频设备时,会列出“扬声器...”、“麦克风...”和“耳机...”(因为它们位于系统托盘中的播放设备中)但如果我尝试从任一扬声器录制或耳机我什么也得不到(如果我选择那个,我会得到很好的麦克风音频)。

这是我正在使用的代码:

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);

有谁知道为什么它不录制系统音频?在它应该工作之前,我需要处理任何其他设置吗?

谢谢你的时间。

编辑:

我决定在编码时打印出 job.CurrentAudioVolume 以查看它是否发生了变化,但它总是位于 0。如果我将音频设备更改为麦克风,当有声音时这个值会上升(如预期的那样)。所以看起来 SDK 肯定无法录制我的系统音频(来自扬声器或耳机)。

4

1 回答 1

0

好的,我在一位同事的帮助下解决了这个问题。

基本上耳机/扬声器等只是输出设备,因此您需要安装环回驱动程序作为输入设备。

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

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

于 2014-03-24T13:30:03.747 回答