巧克力播放器之歌词篇

前些日子完成的巧克力播放器,

被同学称之为 “没有歌词显示,鬼才会用你的啊!”,

感触很深啊,所以刚才就努了点力给把歌词功能给完成了,

对于歌词的功能,事实上还是蛮简单的,就一个读文件的操作,

然后尽量做到播放器和歌词页的同步就 OK 了,

不过在对读 .lrc 文件上还是需要注意很多地方的,

首先,对于歌词的组成还是要熟悉一下,

歌词文件每一行一般都是 [03:30.45] 之类的开头,

例如

1

所以要读取一份歌词只需要一行一行的读取,

using (StreamReader myReader = new StreamReader(lrcPath,

                                  System.Text.Encoding.GetEncoding("gb2312")))
{
    while (myReader.Read() != -1)
    {
        string myLine = myReader.ReadLine();
    }
}

然后将这些读取到得每一行存储在一个泛型集合 List<string> 中就完成了读取歌词了,

但是读取进去的都是如上面截图所示,无法区分开来时间和歌词,

只有在区分了时间和歌词才能在特定的时间里显示特定的歌词,

即歌词同步 MediaPlayer 的播放,

所以还必须对上面得到的泛型集合进行解析,以解析出歌词和时间,

解析的话,则主要是依靠遍历泛型集合中的每一项,然后再对每一项进行解析,

将时间和文字区分开来,并且将对应的时间和对应的文字存入再新建的 List<string> 泛型集合,

并且让对应的时间和对应的文字在各自的泛型集合中的索引下表相同,

这样就可以方便的根据当前播放的时间得到与这个时间最接近的存储在泛型集合中的时间的下标,

这样再根据这个下标就可以获取存储了文字泛型集合中的对应的时间了,

这样就可以达到播放和歌词的同步了。

看看效果吧

3 

2 

5

控制歌词显示的一个按钮

4

如果有想要播放器或者源码的均可以留邮箱给我,

必回复,还有就是这个例子的代码写的有点乱,

得小心看。

posted @   小宝马的爸爸  阅读(1126)  评论(24编辑  收藏  举报
编辑推荐:
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
阅读排行:
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· .NET周刊【3月第1期 2025-03-02】
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
点击右上角即可分享
微信分享提示