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() все работает нормально.