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

时间:2014-03-24 12:12:48

标签: c# audio-recording expression-encoder expression-encoder-sdk expression-encoder-4

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

我在这里遵循了教程:CodeProject Expression Encoder Tutorial但它对我来说无法正常工作。

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

以下是我正在使用的代码:

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无法录制我的系统音频(无论是扬声器还是耳机)。

1 个答案:

答案 0 :(得分:0)

好的,我在同事的帮助下将其整理出来。

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

Sourceforge / Github上的免费版本效果很好。只需选择它作为音频设备。

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