Как я могу смешать два потока видео в С#?

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

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


person Sebastian Gray    schedule 26.08.2009    source источник


Ответы (5)


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

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

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

person SLaks    schedule 26.08.2009
comment
Я думаю, что это действительно интересная идея для того, что кажется довольно простой реализацией этой проблемы. Я собираюсь попробовать это и посмотреть, что еще я могу сделать с видеокистью. - person Sebastian Gray; 28.08.2009

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

person Firoz    schedule 26.08.2009
comment
Я раньше не слышал об этой библиотеке, спасибо, что указали на нее. Если я закончу тем, что пойду по пути тяжелой атлетики - я проверю это. - person Sebastian Gray; 28.08.2009

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

person Sebastian Gray    schedule 26.08.2009

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

person Sebastian Gray    schedule 29.08.2009

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

person gureumi    schedule 04.05.2011