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, используемые для наложения текста, если вы тщательно программируете.