如何实现字幕叠加?(高分急问)(300分)

  • 主题发起人 主题发起人 luket
  • 开始时间 开始时间
L

luket

Unregistered / Unconfirmed
GUEST, unregistred user!
当我们用超级解霸播放VCD时,会在右上角看到“超级解霸 2000”的字样,这是叠加在运动
的图象之上的。

我想要的就是这种效果。。。
请各位研究一下,如何实现???(不限语言)
谢谢!!
 
最简单的方法: 用一个Label,Transparent设为Ture即可。 :)
另一种方法:在内存中建一个Bitmap,在其中用API写字,然后用BitBlt复制到屏幕上即可(字符的背景要透明哟)。
 
对不起,我的一位朋友(对多媒体编程有一定的研究)已经Delphi是不可能做到像
“超级解霸 2000”那样的。只能用上面那种办法。
 
用VFW的时候就有一条命令专门做这个的
增加一个信息块:
capinfochunk cic;
cic.fccinfoID = infotypeSMPTE_TIME;
cic.lpdata = "00:20:30:12";
cic.cbDATA =strlen(cic.lpDATA)+1;
capFileSetInfoChunk(hwndc,&cic);
研究一下VFW应该没问题的,(如果你用的是VFW兼容的程序)
我做视频捕捉时看到的,但自己没用
:-)
 
to Creation-zy:
你可能需要仔细看一下问题,它的背景是运动的图像,用LABEL或者画笔或是BitBlt是不可能实现的。
to xygz:
这是些什么对象和函数?能在MSDN中找到吗?或是某种硬卡的SDK函数?
各位注意:
可能需要工作在DirectX环境下,因为全屏播放时会切换。
各位仔细想想,不像超级解霸那样自己来解码播放,仅依靠MCI来播放,有什么办法实现叠加?
 
呵呵!好问题!不过也是难题!
去马飞涛的主页看看,想来一定会大有收获。虽然我知道一点,但不敢侵权,呵呵!
 
VFW里的函数!
 
是用DirectX做的,DirectX有一个表面(类似于普通图像操作的DC),
可以用GDI的API函数在这个表面进行绘图。
 
to 人在边缘:
请告诉URL!!
to Lww:
我也是这么想的,能不能给出示范源代码,加分都可以的。。
 
到http://www.torry.net/nonrect.htm下载FormRgn。
用FormRgn——TTextExtRgn产生字串透明窗口叠加在播放窗口之上即可。
这是一个菜办法,但总可以解决嘛,哈哈!
 
新得利的小张做过一个,效果不错,
但他死活不肯透露一点点思路给我,真不够意思.
但可以肯定的是:他做了一个Transform的Filter.
 
我也做过一个,不过是利用一个线程不停的截取画面,然后合成后再画到原来的位置,
播放的时候绝对看不出。

 
呵呵,用IamWLJ888,的方法吧。我也想到过[^]
 
tseug:
能否把代码共享一下?因为工作DIRECTX全屏模式下,我的窗口都不能显示在图象之上
,更别谈叠加了!!用IamWLJ888,的方法行不通的原因也在这。
另外,如何截取DirectX画面?我有三十个左右LABEL,怎么办?
这种线程的使用会不会占用大量CPU时间?
 
LWW说的不错!可使用DSPACK作播放器嘛,它的TDSVideoWindows中有TCanvas可在上面写文字。
你可建一个线程实时不停地写文字,线程占用CPU不会太大。
但是播放一个文件开始时叠加的文字有所闪烁,
请大家看看是否有办法解决。:(
 
据我的研究:
用VFW需要视频捕捉卡.我没有
只能用Overlay Surface,叠加在软解压的图象上.
可惜目前极不稳定,经常死机.
 
研究中、、、
 
后退
顶部