Я так понимаю делалось приложение для записи презентаций или лекций. Два года назад решал подобную задачу. И тоже на c# и DirectShow. Моя прога пишет два потока — камера, направленная на докладчика в SD, и сигнал, который идет на проектор в HD. Ну графы я и «руками» строить умею без кодогенерации, поскольку с DirectShow наигрался достаточно. Только я не пытался сразу сжимать потоки. Захват делал в формате DV (по-моему) а потом сделал перекодировщик в разные форматы. Перекодировщик на основе ffmpeg. Да и еще стояла задача компоновать оба потока в один файл, где картинка презентации занимает большую часть, а докладчик в маленьком окошке, чтобы можно было просто выложить на видеохостинг. Вот ffmpeg ее прекрасно решил, только помню долго искал сборку, которая умеет это делать(комбинировать кадры). Самому разбираться со сборкой ffmpeg под Windows не хотелось.
А по поводу синхронизации. Полезно прочитать вот это. Обычно DirectShow сам выбирает источник синхронизации и как правило это устройство записи звука. Может в вашем случае он выбрал что-то другое. Стоит попробовать явно задать Audio Capture Filter в качестве SyncSource.
«К сожалению, не смогу рассказать о решении данной проблемы, так как справиться с ней пришлось радикальным способом — переводом на запись в формат wmv при помощи ASF Writer.» Это проблема самого формата AVI. Мучился с записью видео с платы захвата и в конце концов остановился на таком же решении.
Возможно, очень глупый вопрос, но насколько сложно сделать и добавить в windows свой Audio Capture Source и что для этого читать? VLC криво работает с WDM Streaming Capture Device (заведён баг) и быть может получится обмануть его, сделав отдельный программный источник звука?
Видеозапись с помощью Directshow.NET