Как стать автором
Обновить

Комментарии 6

Я так понимаю делалось приложение для записи презентаций или лекций. Два года назад решал подобную задачу. И тоже на c# и DirectShow. Моя прога пишет два потока — камера, направленная на докладчика в SD, и сигнал, который идет на проектор в HD. Ну графы я и «руками» строить умею без кодогенерации, поскольку с DirectShow наигрался достаточно. Только я не пытался сразу сжимать потоки. Захват делал в формате DV (по-моему) а потом сделал перекодировщик в разные форматы. Перекодировщик на основе ffmpeg. Да и еще стояла задача компоновать оба потока в один файл, где картинка презентации занимает большую часть, а докладчик в маленьком окошке, чтобы можно было просто выложить на видеохостинг. Вот ffmpeg ее прекрасно решил, только помню долго искал сборку, которая умеет это делать(комбинировать кадры). Самому разбираться со сборкой ffmpeg под Windows не хотелось.
Ну, почти угадали. Очень похожая задача. Согласен, кодогенерация не решает здесь большинства проблем. А какими фильтрами Вы микшировали потоки?
Посмотрел в код. У меня микшер явно не добавляется в граф. А получается из вот такого вызова:
hr = m_graphBuilder.SetOutputFileName(MediaSubType.Avi, this.m_fileName, out mux, out sink);

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

Публикации