2013-03-31 7 views
0

Недавно я начал работать над собственным проектом, который захватывает выход камеры с использованием DirectShow .Net. Есть несколько проблем, которые я не знаю, как решить 1) Как я могу закодировать захваченный поток в формате H.264. Я понимаю, что я должен каким-то образом добавить фильтр в граф фильтра. Но я не мог найти, где и как. Кроме того, я не смог найти, если есть стандартный фильтр H.264, или я должен скачать его где-нибудь где? Если мне нужно загрузить его, это может быть просто dll, к которому я добавляю ссылку или должен быть установщик? 2) Есть ли способ сохранить захваченный вывод в объект памяти, какой-то поток или его можно записать только в файл? С наилучшими пожеланиями, ЙорданDirectShow. Net захват изображения камеры?

ответ

1
  1. Вам нужно будет использовать что-то вроде FFMpeg или Handbrake. Выезд http://vidcoder.codeplex.com/. У AForge также есть некоторые возможности редактирования видео, и вы также можете передавать ему фильтры. Существует также несколько оберток FFMpeg C#, которые вы можете использовать, например https://github.com/crazyender/FFMPEG.net

  2. Вы должны использовать AForge.net. Вся тяжелая работа для вас уже выполнена. Использовать VideoFileWriterhttp://www.aforgenet.com/framework/docs/html/4ee1742c-44d3-b250-d6aa-90cd2d606611.htm. Похоже, что структура AForge также использует FFMpeg под капотом (см. AForge.Video.FFMPEG пространство имен). Вы просто создать писатель и передать его растровый/кадр writer.WriteVideoFrame(bitmap);

Вы должны полностью исследовать видео абстракций в AForge. Вы могли бы сэкономить значительное количество времени.

Пример: http://www.aforgenet.com/framework/samples/video.html

1

1) Да, Вы должны загрузить кодировщик библиотеку фильтра. Большинство декодеров поставляются бесплатно. Но кодировщик - нет. Если вы не хотите платить, вам нужно найти кодер с открытым кодом. И Чтобы использовать в программе graphedit, вы должны зарегистрировать dll в этом DLL-файле. Или программа установки сделает это вместо этого. И вам также нужно проверить тип контейнера, например mp4, mkv ... Другими словами, вам нужен фильтр мультиплексора, чтобы сохранить его в файле. Я думаю, кто-то свяжет доступные URL-адреса. Извините, у меня сейчас нет URL-адресов.

2) Что это за средства захвата? Это фильм? или изображение?

  • В случае изображения есть много примеров проектов и SampleGrabbers. Вы можете сохранить его как в файле, так и в памяти.

  • В случае с фильмом, я уверен, что ваша компьютерная память не является enougth для них без кодировки. Сделайте поток памяти и передайте его менеджеру захвата.

Вы также можете сделать фильтр, чтобы настроить фильтр в соответствии с вашими потребностями. Вся информация включена в образцы SDK Windows.

1

Вы можете использовать коммерческое программное обеспечение от VisioForge или Viscomsoft.

Проблема с потенциалом AForge - нет звука во время съемки, только видео. Также форматы вывода очень ограничены. Но - это бесплатный и открытый исходный код, если у вас есть опыт DirectShow, вы можете добавить поддержку звука.