C# - кодировщик выражений - не захватывает системный звук
Я пытаюсь захватить мою веб-камеру и системный звук с помощью 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 не может записать звук моей системы (из динамиков или наушников).
1 ответ
Хорошо, я разобрался с небольшой помощью коллеги.
В основном, наушники / колонки и т. Д. Являются просто устройствами вывода, поэтому вам необходимо установить драйвер обратной связи в качестве устройства ввода.
На Sourceforge/ Github есть бесплатный, который отлично работает. Просто выберите его как аудиоустройство.
Есть одна маленькая проблема, у меня есть кнопка "запись"/"стоп", которая вызывает job.StopEncoding(); но с выбранным звуковым драйвером loopback StopEncoding () зависает в Window, я думаю, потому что драйвер loopback не останавливается должным образом, но если вы вызываете job.RemoveDeviceSource(deviceSource); после вызова StopEncoding () и повторного добавления до следующего StartEncoding() все работает нормально.