C#制作音乐播放器同步歌词的正确方法
我以前用过了两种方式.1.在歌曲播放的时候另外使用一条线程每隔0.01秒去判断一次是否有当前时间的歌词显示,弊端就是如果选择快进或者快退歌词就对不上了,而且每次处理完字符...
我以前用过了两种方式.1. 在歌曲播放的时候另外使用一条线程每隔0.01秒去判断一次是否有当前时间的歌词显示,弊端就是如果选择快进或者快退歌词就对不上了,而且每次处理完字符串的时候都会消耗一定时间,当歌曲放到一半的时候也对不上歌词了 2. 每隔0.01秒去获取当前播放的时间从而处理字符串,有时因为获取到的时间有一定的差距,歌词还是对不上,并且特别费资源 我像问一下,怎么有效更好的去匹配歌词时间和当前播放的时间!谢谢!
展开
1个回答
推荐于2018-05-10
展开全部
根据当前播放的进度,来定位歌词。为了降低开销,可以采用以下方法1.就像你说的另外使用线程2.隔的时间适当增大,比如换成几百毫秒,根据歌词效果来决定最适合的最大间隔时间3.如果是上下滚动的歌词,只画显示区域,不要全部画所有歌词4.查找指定时间歌词时,一旦找到,就跳出循环5.预先加载歌词时间和歌词内容到内存,歌词时间在加载时处理成我们需要的格式.其它能在加载时处理的就不要放到匹配时去处理5.播放时间好像是精确到毫秒的,比如播放时间A的歌词在a和a+1段歌词之间,我们可以显示a段为当前歌词,假设a+1段与a段的时间差为b,a段时间为c,则我们应该显示:[(A-c)/b]*(a+1段与a段的距离)+a距离
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询