年终总结(一):DirectShow做的播放器(有部分代码)

etomahawk 2008-12-27 11:18:37
加精
2008,真是不平静的一年。
不知不觉,这个账号已经注册6年多了,回顾一下六年也有写感慨。其实,四个字就可以总结:菜鸟依旧。
正在整理自己这一年来所做的一些东西,这里是第一篇。后续的我将继续发布出来跟大家分享我的这一年,希望各位也能跟我分享一下你们的这一年--无论是技术还是生活上的。

本篇的主角:百度MP3音乐搜索下载。
所用的技术点:DirectShow播放音乐,WinSock多线程下载,线程池,内存池,
这个核心代码是去年学习的时候写的。今年十一的时候,将界面进行了更新,换成了自己写的一套Windowless控件(不是DirectUI技术)。现将核心代码公开(里面有些BUG,仅供初学者参考)。界面库版本的代码暂不公开,还在继续开发下去。
开发之初,主要目的是进行技术探究。还有就是现有的播放器很多不习惯。为了开发这个,我曾研究了一些比较流行的播放器。说说自己对每个的感受吧(这里仅仅是网络播放器):

酷我音乐盒:很有创意(不过后来发现居然跟国外的一款很相似,怀疑抄袭)。不过界面太大了,但它的音乐指纹识别技术很牛。
酷狗音乐:不错,它的歌词显示技术跟其它的都不同。也算是有创新的吧。而且这个是DELPHI的作品。
QQ音乐:商业化太浓。下载个MP3都需要变成绿钻用户。
SoGua音乐:跟酷狗一样。功能没它强,似乎是酷狗的前一个版本。
网易音乐盒:网易音乐盒是刚出来的,觉得还不错。不过不喜欢它的界面。

总的感觉就是在互相抄袭,到最后,失去了个性。
现在主要是做在自己用的,所以,很多东西都是按照我自己的习惯做的,可能不符合各位。

现有功能/特点:
1.搜索功能:根据歌词搜索,根据歌名搜索,根据专辑搜索,百度TOP N列表。歌词搜索下载。
2.下载功能:多线程下载,异步存储。
3.所有的缓存都在内存中,在没有下载完成不会做写硬盘操作。
4.仿照QQ音乐2008界面,可以进行主题颜色更改。可以设置自己喜欢的背景图片,它将会和播放器进行ALPHA混合。
5.纯WindowsLess控件,整个窗体只可以看到一个控件TFrmMain。自己开发的一套控件。(可以使用SPY++查看一下就知道了)
6.播放热键支持。
Ctrl + -> 下一曲
Ctrl + <- 上一曲
Ctrl + End 暂停/播放
Ctrl + Home 显示/隐藏播放器
Ctrl + Up 音量增大
Ctrl + Down 音量减小

7.在列表中按下相应字母可进行搜索。比如,搜索“海阔天空”,只需要按下H键就可以进行自动跳转。
8.使用DirectShow播放音乐。
9.支持发送歌曲直接到可移动磁盘。
10.搜索引擎使用的是百度。

继续开发的设想:
1. 界面稍有闪烁,需要优化。
2. 增加在线播放功能,增加波形显示功能。(需要对DirectShow进行更深入的研究。DirectShow很强大,也很复杂,很多东西还没有研究清楚。主要是开发Filter的问题。)

编译说明请看源码内部说明。

这是播放器界面:


我写的一点点总结,可以到我的博客看:
http://etomahawk.popo.blog.163.com/blog/static/9196448200811271045475/

说明:
http://etomahawk.popo.blog.163.com/blog/static/919644820081127104233851/

大家可以到这里下载:
http://download.csdn.net/source/913864

本帖得分规则:凡是带6(我的账号注册6年纪念),8(纪念即将逝去的2008),9(准备迎接一个崭新的2009)的楼层将得分。
最后祝大家健康快乐每一天。(写的比较乱,请大家见谅)
...全文
2771 177 打赏 收藏 转发到动态 举报
写回复
用AI写文章
177 条回复
切换为时间正序
请发表友善的回复…
发表回复
loooop 2012-10-25
  • 打赏
  • 举报
回复
好东西啊,,但是就是不能下载
码农天天向上 2009-10-11
  • 打赏
  • 举报
回复
牛人!
学习!
openui 2009-08-30
  • 打赏
  • 举报
回复
强人
莫鸣 2009-08-01
  • 打赏
  • 举报
回复
UP 好东西...........
ysgs129 2009-04-13
  • 打赏
  • 举报
回复
xuexi
痞子小王 2009-03-27
  • 打赏
  • 举报
回复
呵呵,好东西
fa_ge 2009-02-05
  • 打赏
  • 举报
回复
楼主真是强人
fox1999 2009-02-03
  • 打赏
  • 举报
回复
你好,我是 RedFox.

我也是想问那个 SkinTreeView 的问题,你应该是用全画出来的。我现在是想从 TreeView 来自绘。自绘我会,但如果让选中行变高呢?
按道理是会有 WM_MEASUREITEM 事件的。但这个事件只会在显示时触发一次。如何它TreeView 再次触发 WM_MEASUREITEM 事件呢?
coolspac 2009-01-10
  • 打赏
  • 举报
回复
[Quote=引用 168 楼 etomahawk 的回复:]



to 63 coolspac:

这个windowsless很有意思,不知怎么实现的?
---------------------------------------------------
自己做出来的控件啊,就跟Delphi的从TGraphicControl继承下来的效果一样,不过我是从TObject继承下来自绘出来的。

[/Quote]

那么请问,既然没有了handle,继承后怎么响应鼠标和键盘事件呢?难道插到父窗口的消息过程里?
etomahawk 2009-01-09
  • 打赏
  • 举报
回复
to xiedewei :

未搜苏到歌词’
---------------------------------------------------
多谢指正,已经修改!


to 63 coolspac:

这个windowsless很有意思,不知怎么实现的?
---------------------------------------------------
自己做出来的控件啊,就跟Delphi的从TGraphicControl继承下来的效果一样,不过我是从TObject继承下来自绘出来的。

to 65 wengqd_54:

先顶下 很强 和千千 别的不说 内存占的太多了 接近2W了 而千千呢5K 优化下 把千千打下 你就更强了 呵呵 等待你的产品哦 呵呵!

-----------------------------------------------------
谢谢参与!DirectShow做出来就这样,不知道如何优化了,有待研究。做给自己用的,没想过和谁比!

to 102 angmaomao:

这个播放器能播放多少格式。
------------------------------------------------------
跟你电脑中安装的解码器多少有关!

to 118 net205:

郁闷,我没有分,下不了
百度在获取歌曲的真实下载地址的地方使用了JS加密,不知道LZ是怎么解决的????
--------------------------------------------------------
源码里边有,可以看看!就是将它的JS翻译成Delphi代码进行解密!

to 140 hyruur:

界面做得不错,我也在开发directshow方面的软件,就想学习下你的界面美化,是不是用了皮肤包
-----------------------------------------------------------
自己写的控件,不喜欢也不太会用第三方的控件包!


感谢各位参与,祝大家在新的一年里天天开心!
cyh424 2009-01-06
  • 打赏
  • 举报
回复
不错
火龙岛主 2009-01-05
  • 打赏
  • 举报
回复
up
周药师 2009-01-04
  • 打赏
  • 举报
回复
up...
success000 2009-01-04
  • 打赏
  • 举报
回复
ding
Frank.WU 2009-01-04
  • 打赏
  • 举报
回复
新年快乐!
aniugee 2009-01-04
  • 打赏
  • 举报
回复
代码已下载,再次回来瞻仰牛人
aniugee 2009-01-04
  • 打赏
  • 举报
回复
不错
twydzh 2009-01-04
  • 打赏
  • 举报
回复
期待楼主的在线播放快点弄好^_^
单眼皮的老虎 2009-01-03
  • 打赏
  • 举报
回复
推荐的要支持一下
yc_8301 2009-01-03
  • 打赏
  • 举报
回复
牛人,膜拜一下。。
顶上去。。
加载更多回复(157)

1,183

社区成员

发帖
与我相关
我的任务
社区描述
Delphi GAME,图形处理/多媒体
社区管理员
  • GAME,图形处理/多媒体社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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