Новости шатер над потоком аналогового телевидения - C # - PullRequest
1 голос
/ 12 апреля 2011

Я хочу поместить шатер новостей поверх потока аналогового телевидения с помощью c #, я могу транслировать аналоговое телевидение с помощью DirectShow, но я не могу понять, как смешать его с вращающимся текстом, должен ли я создать фильтр? или я должен использовать другую технологию, чем DirectShow?

Ответы [ 2 ]

3 голосов
/ 13 апреля 2011

DirectShow - самый простой способ сделать это, но у него есть некоторая кривая обучения, особенно из C #. Страница Википедии дает вам общий обзор DirectShow.

Инструменты DirectShow доступны в последней версии Windows SDK. Использование C ++ для программирования DirectShow более просто, но вы можете довольно легко использовать DirectShow через COM-взаимодействие или DirectShow.net (что я еще не пробовал). При использовании COM-взаимодействия полезна следующая статья:

http://blogs.msdn.com/b/ericgu/archive/2004/09/20/232027.aspx

Возможно, вы сможете использовать оверлейный фильтр VMR, если производительность анимации достаточно плавная. Смотрите следующие статьи

http://www.codeproject.com/KB/audio-video/VideoPicture.aspx
http://www.codeproject.com/KB/audio-video/Ticker.aspx
http://msdn.microsoft.com/en-us/library/dd407344(v=vs.85).aspx

В качестве альтернативы вам потребуется написать собственный фильтр, который отображает текст в каждом кадре, корректируя его положение синхронно с метками времени видеокадров. Если вам нужно сделать это только внутри собственного приложения, тогда следующий подход может быть самым простым

http://www.sichbo.ca/Free_Code/100_C_Sharp_directshow_filters

Microsoft официально рекомендует, чтобы фильтры DirectShow создавались в C ++ по соображениям производительности, но наложенный текст прокрутки должен быть в порядке в C #, поскольку узким местом будут API, используемые для наложения текста, если вы тщательно программируете.

0 голосов
/ 19 апреля 2011

На самом деле вам не нужно писать фильтр, чтобы нарисовать текст поверх вашего видео.Просто создайте график, на котором несжатое видео проходит через образец граббера (один из стандартных фильтров DirectShow), настройте обратный вызов для примера граббера, и вы сможете изменять видеоданные в обратном вызове.Делать это в C # очень легко, используя DirectShow.NET, но не оптимально из-за сортировки.Сначала вы можете построить такой граф в GraphEditPlus , затем он покажет вам исходный код на C # или C ++ о том, как построить этот граф и использовать образец граббера.

...