各位老大.用DSPACK做出来的视频播放器,视频窗口上是否能叠加静态文字???就如电视机左上角的"xx电视台"那样。 ( 积分: 50 )

  • 主题发起人 主题发起人 nantwww
  • 开始时间 开始时间
N

nantwww

Unregistered / Unconfirmed
GUEST, unregistred user!
各位老大.用DSPACK做出来的视频播放器,视频窗口上是否能叠加静态文字????就如电视机左上角的"xx电视台"那样。
 
各位老大.用DSPACK做出来的视频播放器,视频窗口上是否能叠加静态文字????就如电视机左上角的"xx电视台"那样。
 
不知道行不行,你在播放的放一个IMAGE,然后,把你你输出的文字。TEXTOUT,
 
我自己解决了.
 
这么牛啊说说怎么解决的?
 
介绍一下可以吗?
 
《DirectShow 实务精选》Filter
 
使用VMR....
 
嘿,具体说一下实现的方法,或者干脆贴一段代码上来大家学习学习嘛!为了国人的软件事业,你就做点贡献吧。谢 了!
 
我的可以:qq 364893066
 
如果是用DSPack做的话,直接在播放窗口上加透明的label就行了,想动态的话就移动label啦
 
procedure Tfrm_Main.VMRTextOut(AText: string);
var
VMRBitmap: TVMRBitmap;
begin

if AText = '' then
exit;
VMRBitmap := TVMRBitmap.Create(VideoWindow1);
with VMRBitmap, Canvasdo

begin

LoadEmptyBitmap(VideoWindow1.Width, VideoWindow1.Height, pf24bit, clSilver);
Source := VMRBitmap.Canvas.ClipRect;
Options := VMRBitmap.Options + [vmrbSrcColorKey];
ColorKey := clSilver;
Brush.Color := clSilver;
Font := frm_Option.AFont;
TextOut(0, 0, AText);
DrawTo(0, 0, 1, 1, 0.5);
end;

VMRBitmap.Free;
end;


procedure Tfrm_Main.A_FileExecute(Sender: TObject);
begin

if OpenDialog1.Execute then

begin

A_Stop.Execute;
//停止
// frm_Option.FilterGraph.Mode := gmNormal;
frm_Option.FilterGraph.Active := True;
frm_Option.FilterGraph.RenderFile(OpenDialog1.FileName);
frm_Option.FilterGraph.Play;
VMRTextOut(frm_Option.E_Text.Text);
//字幕
Timer1.Enabled := True;
A_Play.Checked := True;
A_Capture.Enabled := False;
end;

end;


这里有源码
http://2ccc.com/article.asp?articleid=272
 
如果要拍照或录像,这样的叠加在拍出来照片或视频中文字是出不来的!
 
我有这种代码,要的话联系我fhsoftzjf@163.com,我的代码是可以在放视频文件时显示在上层,还可以输出到电视机上显示.
 
接受答案了.
 
后退
顶部