Недавно я начал работать над собственным проектом, который захватывает выход камеры с использованием DirectShow .Net. Есть несколько проблем, которые я не знаю, как решить 1) Как я могу закодировать захваченный поток в формате H.264. Я понимаю, что я должен каким-то образом добавить фильтр в граф фильтра. Но я не мог найти, где и как. Кроме того, я не смог найти, если есть стандартный фильтр H.264, или я должен скачать его где-нибудь где? Если мне нужно загрузить его, это может быть просто dll, к которому я добавляю ссылку или должен быть установщик? 2) Есть ли способ сохранить захваченный вывод в объект памяти, какой-то поток или его можно записать только в файл? С наилучшими пожеланиями, ЙорданDirectShow. Net захват изображения камеры?
ответ
Вам нужно будет использовать что-то вроде FFMpeg или Handbrake. Выезд http://vidcoder.codeplex.com/. У AForge также есть некоторые возможности редактирования видео, и вы также можете передавать ему фильтры. Существует также несколько оберток FFMpeg C#, которые вы можете использовать, например https://github.com/crazyender/FFMPEG.net
Вы должны использовать AForge.net. Вся тяжелая работа для вас уже выполнена. Использовать
VideoFileWriter
http://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) Да, Вы должны загрузить кодировщик библиотеку фильтра. Большинство декодеров поставляются бесплатно. Но кодировщик - нет. Если вы не хотите платить, вам нужно найти кодер с открытым кодом. И Чтобы использовать в программе graphedit, вы должны зарегистрировать dll в этом DLL-файле. Или программа установки сделает это вместо этого. И вам также нужно проверить тип контейнера, например mp4, mkv ... Другими словами, вам нужен фильтр мультиплексора, чтобы сохранить его в файле. Я думаю, кто-то свяжет доступные URL-адреса. Извините, у меня сейчас нет URL-адресов.
2) Что это за средства захвата? Это фильм? или изображение?
В случае изображения есть много примеров проектов и SampleGrabbers. Вы можете сохранить его как в файле, так и в памяти.
В случае с фильмом, я уверен, что ваша компьютерная память не является enougth для них без кодировки. Сделайте поток памяти и передайте его менеджеру захвата.
Вы также можете сделать фильтр, чтобы настроить фильтр в соответствии с вашими потребностями. Вся информация включена в образцы SDK Windows.
Вы можете использовать коммерческое программное обеспечение от VisioForge или Viscomsoft.
Проблема с потенциалом AForge - нет звука во время съемки, только видео. Также форматы вывода очень ограничены. Но - это бесплатный и открытый исходный код, если у вас есть опыт DirectShow, вы можете добавить поддержку звука.