Как я могу смешать два потока видео в C #? - PullRequest
2 голосов
/ 26 августа 2009

В прошлом я использовал Managed Direct X и DirectShow.Net для воспроизведения видео с текстурой на простой сетке. Затем я использовал эту же технику, чтобы объединить несколько источников видео в одну текстуру, используя различные возможности, предоставляемые текстурами, чтобы смешать эти потоки вместе. Это был очень интересный эксперимент 2 года назад, и он вполне подходил для той цели, когда Managed Dirext X все еще разрабатывался и поддерживался (которого больше нет), а также аналогично DirectShow.Net - не похоже, что он был обновлен. с июля 2007 г.

Я снова собираюсь углубиться в это пространство и хотел бы узнать, как это можно сделать в C #, без использования устаревших API или API с истекшим сроком эксплуатации и как лучше всего к нему подойти.

Ответы [ 5 ]

3 голосов
/ 26 августа 2009

Это очень легко сделать в WPF.

Используйте два MediaElement , один над другим, и сделайте верхний прозрачным на 50%.

Однако я не думаю, что можно сохранить его в новом видео

2 голосов
/ 26 августа 2009

вы можете использовать SlimDX библиотеку с открытым исходным кодом, которая почти такая же, как MDX и DirectShow, и имеет поддержку в Vista также в win7.0

1 голос
/ 30 августа 2009

Дополнительная опция - OpenTK; для смешивания кадров, предоставляемых видеопотоком: http://www.opentk.com/doc/graphics

1 голос
/ 27 августа 2009

Другой вариант, с которым я столкнулся сегодня, может быть AForge.net - он содержит пространство имен для воспроизведения видео. http://www.aforgenet.com/framework/samples/video.html и публикуется по лицензии LGPL.

0 голосов
/ 04 мая 2011

Я сделал это примерно в 2003 году. Мне пришлось использовать небезопасный код, другими словами, указатели для преобразования каждого кадра изображения, скопированного из двух видеопотоков, в формат RGB и усреднения значений каждого пикселя, а затем преобразования обратно в исходный формат. Падение производительности настолько велико, если вы не используете небезопасный код. Насколько я понимаю, при обработке видеопотока DirectShow совершает чудеса, автоматически выравнивая множество кодеков для выполнения действия. В то же время эти потоки изображений должны быть поточно-ориентированными и должным образом синхронизированными, что означает большие накладные расходы. Но кто-то, кто знает лучше, должен вмешаться в это.

...