我正在尝试使用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无法录制我的系统音频(无论是扬声器还是耳机)。
答案 0 :(得分:0)
好的,我在同事的帮助下将其整理出来。
基本上耳机/扬声器等只是输出设备,因此您需要安装环回驱动程序作为输入设备。
Sourceforge / Github上的免费版本效果很好。只需选择它作为音频设备。
有一个小问题,我有一个"记录" /"停止"调用job.StopEncoding()的按钮;但是选择了Looping音频驱动程序StopEncoding()会挂起Window,我猜是因为环回驱动程序没有正确停止,但是如果你调用job.RemoveDeviceSource(deviceSource);在调用StopEncoding()然后在下一个StartEncoding()之前重新添加它之后它可以正常工作。