如果实现卡拉OK字幕滚动功能

netyou 2003-09-25 09:44:43
一般的字幕功能比较容易实现,用TBitmap和Ttime定时器就可以实现了,但是现在要实现和卡拉OK字幕滚动功能就比较麻烦了(如winamp滚动歌词),因为每句歌词滚动的时候时间延迟不是一致的,如果快和慢了都和歌曲不吻合,不知道各位有什么好的解决办法和思路,提出来参考参考,谢谢!
...全文
252 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
netsys2 2003-09-25
  • 打赏
  • 举报
回复
因为TTimer.Interval的时间间隔在这里显示都是不变化的,难道每显示一句之后,马上把TTimer.Interval的时间设置成下句歌词的滚动时间吗?

------>当然不这样了,你的TIMER用法有问题,你应该这样:

设置TTimer->Interval = 10;//最小

然后在Timer事件中:

int tnum;//这个东西才是每次都重新设置
int tickers=0;
void __fastcall TForm1::Timer1Timer(TObject *Sender)
{
if(tickers++ < tnum) //没到显示时间直接返回
return;
//显示一字或者一句
}


netyou 2003-09-25
  • 打赏
  • 举报
回复
看了上面二位的想法,其实我现在就是想通过插件实现winamp的歌词滚动功能,如歌词秀一样,这个时间因为有标记时间的lrc文件,这个好办,每句歌词显示时间我也可以通过lrc的时间计算出来,我现在的问题是怎么实现每句歌词的滚动,因为每句歌词显示的时间延迟不同,而用Ttimer觉得不好实现,因为TTimer.Interval的时间间隔在这里显示都是不变化的,难道每显示一句之后,马上把TTimer.Interval的时间设置成下句歌词的滚动时间吗?这样实现可能性大吗?
fairyprince 2003-09-25
  • 打赏
  • 举报
回复
在每个歌词上前面加入点
用Timer做计时
到了就出,不到就不出,过了就跳
netsys2 2003-09-25
  • 打赏
  • 举报
回复
就是说,不能采用一个匀速的的TIMER,而是针对每句歌词设计速度,

比如说:

天气真好,下河洗澡
--- --- - -------
1 2 1 4

对每一段的每个字都得统计时间、停顿等,然后再设计字幕器。

有简便方法:找歌本,上面标有这些时间节拍。。。
zihan 2003-09-25
  • 打赏
  • 举报
回复
这个应该没有什么好的办法,除非你记录每句歌词应该出现的时间,然后根据长度计算她的显示时间,或者说下一句出来的时候替换上一句.但是就找出她每句改出现的时间就是一个麻烦事情了
ljianq 2003-09-25
  • 打赏
  • 举报
回复
关注!
netyou 2003-09-25
  • 打赏
  • 举报
回复
用Sleep(Delay)上面那段程序代码再加一句image1->refresh();就可以实现滚动了,但是屏幕显示有晃动,有些不好!有什么办法可以实现不晃呢?
netsys2 2003-09-25
  • 打赏
  • 举报
回复
你才是误会我的意思了。

我这个TIMER是控制两句话或者两个字之间的时间,

显示话或者字是另外的函数,而针对单个的显示单元(话或者字),那么速度肯定是相同的!

正如唱一首歌,每句话速度是不一样的,但每个字内部的时间是均匀的,虽然每个字的时间是不同的
netyou 2003-09-25
  • 打赏
  • 举报
回复
To:aliker(吹口琴的猫)
开始我也用sleep试过,程序如下:
for(i=0;i<Ad;i++)
{
SourRect=TRect(0,0,Wi,Image1->Height/2/Ad*Ad +i);
DestRect=TRect(0,Image1->Height/2 -i,Wi,Image1->Height/2 + Image1->Height/2/Ad*Ad);
Image1->Canvas->CopyRect(DestRect,Bitmap1->Canvas,SourRect);
Sleep(Delay);
}
但是一运行,并没有想的那样逐行上滚,而是等几十秒钟,然后把结果显示在image1上,为什么上面的程序不能实现输出一部分歌词,然后等一定时间,然后再先上滚一行点阵,这样反复形成一个滚动效果呢?难道Sleep(Delay)没有这个功能?
netyou 2003-09-25
  • 打赏
  • 举报
回复
To:netsys2(来电)
你错误理解我的意思了,因为每句歌词要一行点阵的向上滚动,而每句歌词它滚完的时间是不同的,所以你的TTimer->Interval = 10;限制死了,是不对的,因为如果你这样定死了,那么就和歌曲播放速度不一致了,因此这个时间间隔是实时变化的,不过我不知道用TTimer能不能实现这个歌词滚动功能,是否考虑用别的方法,譬如线程之类的。。。
aliker 2003-09-25
  • 打赏
  • 举报
回复
用Sleep(DWORD time);函数试试?
MVBOX更新日志: 1. 优化程序启动流程,启动更快 2. 优化列表显示,加载歌曲列表更快,资源占用更小 3. 优化下载管理,减少下载资源占用 4. 解决Mvbox在QQ6.0群视频不能上麦问题 5. 解决启动时无响应问题 MVBOX 是一款集音频、视频于一体的多媒体娱乐软件,它具有最新、最快、最全的高音质流行歌曲和丰富的网络原创歌曲KTV资源,通过它您不仅可以在线听歌、K歌,还可以高质量的录制自己的卡拉OK歌曲和有清晰画面的MTV;同时,MVBOX还给您提供了强大的虚拟视频功能,使您在与他人使用QQ、UC、MSN等进行视频聊天时,可以很方便的利用画中画、调色板、滤镜和抠象、特效等功能来美化您的摄象头;您既可以播放电影、MTV、图片到虚拟摄像头与网友共享,还可以对您的视频或照片添加各种大头贴特效,从此使您的视频更加绚丽多彩,不再单调,为您创造一个虚幻的魅力世界,让您在朋友中以靓丽的形象脱颖而出; MVBOX的清晰视频捕获功能,很方便的让您与朋友互动交流、在线实时演示、网上教学和转播网络电视电影;高保真的录音录像功能还可以使您很方便的录制自己想要的网络资源并可DIY制作您的MTV作品。该软件拥有小巧精致、操作简捷、不占资源、功能强大的特点,深得用户喜爱,并且成为目前国内最受欢迎的简单实用的卡拉OK音乐播放和虚拟视频软件。 MvBox卡拉OK播放器特点: 1. 卡拉OK播放功能: MVBOX具有强大的卡拉OK功能,用户可以方便的随意切换左右声道来使用原唱和伴奏,可以自动消原音,调节升降调,设置声音特效,空间效果等;并能同步显示卡拉Ok歌词字幕,可以欣赏高品质音乐和MTV;MVBOX兼容MP3、WMA、WMV,MPG,FLV,SWF等多种流行格式的音视频文件,并提供音视频解码器的下载。 2. 搜索下载功能: MVBOX提供强大的搜索功能,在MVBOX点歌台里用户可以方便的搜索到歌曲,图片、视频、特效等素材。超大歌词库,最新、最快、最全的流行歌曲和网络原创歌曲资源;提供多种方式点歌,方便灵活,支持KSC和LRC歌词显示。大量丰富的图片、视频、特效等素材应有尽有,高速服务器下载更令您一爽到底。 3. 列表管理功能: 强大的列表功能方便网友管理自己的图片、视频、歌曲和作品等素材;通过列表窗口对歌曲、图片、视频、特效、摄像头、作品进行个性化的分类管理。方便查找歌曲和素材,并可以对全站的内容进行关键字搜索查找。 4. 视频播放功能: 视频窗口既可以用来显示用户选择的背景图片、视频,还可以选择模式播放MTV、电影;既可以播放本地的视频文件。也可以在线播放网络视频资源;不仅能实现视频、图片、摄像头取景以及合成效果,同时还可以添加大头贴特效,实现虚拟视频、画中画、摄像头抠像、文字滚动字幕、视频捕捉等多种视频特效,进行多个视频特效的叠加;另外在用户播放歌曲时还会有歌词字幕同步流动出现在视频窗口下方,新颖独特;并支持视频窗口拖动大小显示和全屏显示。 5. 图片动态慢摇功能图片切换慢摇效果可以使您的静态图片视频化,其中的随机推拉、缩放、旋转能给您带来不同角度的动态视频效果的冲击,从而能很简单方便的去定制自己的电子相册和MTV。 6. 虚拟摄像头功能: 它能在您电脑上模拟一个摄像头,您可以用MVBOX在任何支持摄像头的聊天软件(UC、QQ、MSN、E话通、碧聊、呱呱等等)里面唱歌、跳舞、播放电影、MTV、图片到虚拟摄像头与网友共享;可对您的视频或照片添加各种特效,还可对屏幕窗口进行转播或录制。 MvBox卡拉OK播放器功能: 1、新增音乐均衡器,提高音质 2、新增歌曲列表序号,方便歌曲定位查找 3、改进摄像头采集算法,使视频更顺畅 4、改进虚拟声卡,消除WIN7下MKA格式歌曲噪声现象 5、改进MKA解码器,使音乐播放更稳定 6、改进下载算法,使文件下载更快 7、支持在线播放Mtv文件下载功能  MvBox卡拉OK播放器截图:

13,825

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder相关内容讨论区
社区管理员
  • 基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧