求一个用C语言写的网络音乐播放器,类似千千听歌的源代码。
1.
2.
一.标准问题
问:Unicode和Ansi版本怎么样?哪个更好?
Unicode是一种统一的字符编码方式,Unicode版本的程序只能在NT/2000/XP/2003等新窗口上运行,可以解决不同语言的显示问题,而且由于Unicode在这些系统上的性能更好,在处理大量列表时也很有帮助。
在监听内部处理字符串时(比如处理标签或列表时),系统默认为16位Unicode(即使是Ansi版本也一样,只是显示时转换成Ansi),这样可以最大化处理性能。
问:我是传统XP(2000)的用户。我可以用千千监听吗?
是的,千千静已经支持unicode了,可以在Windows 2000/XP下使用,不是简体中文。千千静物的界面不会出现乱码,但是部分带有ID3v1标签的MP3文件可能会显示乱码。您可以尝试使用“文件信息”中的内码转换功能找到正确的内码。千千敬亭还提供繁体和简体之间的标签和歌词转换。
问:安装新版本时,我需要先删除以前的版本吗?
不用,直接去盖安装就行了。千千听力可以兼容以前的参数设置,但一些功能可能会因升级而改变,大多数设置将继续有效。
问:为什么我的电脑上没有淡入淡出窗口效果?
淡入淡出窗口和半透明窗口效果需要Windows2000或以上操作系统支持。
问:我的窗口不小心被拖到了屏幕外面。我该怎么办?
在Windows的系统栏(屏幕右下角的系统时间)右击主菜单,选择“查看窗口”下的“重新排列”,这个选项对普通模式和迷你模式都有效。
问:我想打开千千千千默认支持的文件格式。最方便的方法是什么?
在千千选项的最后一页“系统关联”中,您可以勾选想要关联的某一种格式或某一类格式,并为该格式或该类格式指定一个文件类型图标。考虑到不同用户的喜好不同,千千只提供了图标定制功能,并没有提供任何很多默认图标。
问:为什么千人千面听皮这么少?
作者本人并不擅长美术设计,也找不到专业人士来帮助千千(因为千千是免费的)。其实千千静听的皮肤格式比较简单,基于XML格式,ZIP压缩。感兴趣的用户可以将皮肤文件改为。zip后缀,解开。详情请见首页皮肤页。
问:为什么千千敬亭不支持Winamp的皮肤?
由于播放器的功能不同,皮肤的设计和实现也不同。很多听力需要的皮肤元素,Winamp的皮肤里都没有。比如听歌需要一个歌曲展示窗口,但是Winamp本身没有这个窗口的皮肤。论坛上有很多由winamp改造的网友皮肤。有兴趣的话,不妨看看。
-
第二,玩
问:为什么不支持在Win98下播放CD?
Win98没有自己的读取数字光盘的驱动程序。您可以从主页下载该通用驱动程序,网址为:
问:为什么我在播放CD时不能将其转换为另一种格式?
因为在Windows下对CD的数字访问是独占的,所以同一时间只有一个人可以访问CD。如果要切换压力,请先停止播放。
问:千千有自动搜索在线光盘信息的功能吗?
4.3以后的版本为freedb提供了在线查询光盘信息的功能,但非正版光盘可能找不到。
问:为什么我不能播放Windows Media Player制作的WMA文件?
Window Media Player在制作WMA文件时默认启用了“数字版权保护”机制,但要支持这个文件,必须得到微软的官方支持。考虑到程序复杂,目前还不支持。所以在制作WMA文件时,请尽量不要使用数字版权保护。
问:什么是重放增益(自动音量),应该如何使用?
“重放增益信息”是通过扫描和分析音频文件检测到的最佳增益值。如果在将来的回放中使用该增益值,则可以将音频文件的音量调整到最佳水平,从而减少甚至避免不同音频文件之间的音量差异。
您可以通过手动扫描或自动扫描获得这些信息。手动扫描是指右键点击播放列表上的一些文件,扫描增益信息,或者在千千选项的“播放”页面选择“自动扫描”,这样没有这些信息的文件会在播放时自动扫描(如果已经存在,就不会再扫描)。但是需要注意的是,如果播放中断或者用户拖动播放进度,扫描会停止。
问:为什么在我启用重播增益后,一些歌曲的音量不正常?
增益信息以文件标签的形式保存在文件中。可能是增益信息的其他软件损坏,导致音量异常。这时候就需要再手动扫描一遍。
问:千千支持什么音频输出方式?
千千支持Waveout(波形输出)、DirectSound、Kernel Streaming(内核音频流)和ASIO,但并不是所有的都可以在不同的系统和声卡环境下支持,尤其是ASIO,需要声卡本身的支持。一般只有高端声卡才能支持。
问:这些音频输出模式的特点是什么?
Waveout是微软最早提出的音频流输出方式,所以兼容性好,几乎所有声卡都支持;
DirectSound是微软DirectX的组合部分,兼容性也很好,在有多个程序需要播放音频的时候可以提供高可靠的保证,使用这种方法可以让千千万万的听众更好的支持声音的淡入淡出效果;
内核流是微软底层使用的一种音频流模式,延迟较低。它用于延迟要求较高的领域。因为在底层,所以效率更高,受其他程序影响更小。如果你用它来播放,你只能听到播放器的音乐,而不会受到其他程序声音的影响。但是内核流对声卡和驱动也有一定的要求。
ASIO是Steinberg提出的一种比较新的音频流输入输出接口,一般用于实时性要求高的专业场合,对声卡要求较高。
理论上这四种模式对输出音质没有影响,因为这些模式只是将声音的数字信号传输到声卡的数模转换器(D/A),不会改变信息。
问:像AxASIO这样的软件可以让配有不支持ASIO的声卡的电脑使用ASIO。有什么优势吗?
像AxASIO或者ASIO内核流驱动这样的软件都是在内核流的基础上ASIO模拟的,所以效果不如直接用内核流,设备不当也会影响正常播放。
问:千千使用哪种MP3解码器?
千千使用最新版本的mpg123-0.59s-pre,是目前开源代码中最好的MP3解码器之一,精度和速度都非常出色。早期版本的千千用的是MAD,但是在个人PC上,MAD的解码速度比mpg123慢70%甚至更多,绝对精度还是略低于mpg123,所以后来改成了mpg123。
问:播放时缓冲长度是不是越高播放越流畅?
一般来说,只要设置1000-2000毫秒的长度,太长只会增加资源占用。
问:播放时输出位是否尽可能高?
不会,目前几乎所有的音源都来自16位的CD,一般的声卡只支持16位输出,所以基本上选择16位就能满足绝大多数要求。千千的“原比特”指的是音频本身的比特数,因为当涉及到一些24比特的WMA时,千千会自动选择24比特输出。
需要注意的是,在很多支持ASIO的声卡中,最佳的输出位数是32位或24位,因此选择相应的位数可以提供最佳的性能(因为不需要额外的转换)。
问:采样变频一般用在什么地方?
对于AC'97标准声卡(基本都是主板自带的),硬件只支持48000Hz的采样频率,而CD的音频是44100Hz,CD转换的MP3等大部分格式也是44100Hz。也就是说,在这类声卡上,数字信号转换成模拟信号之前,要做采样频率。如果驱动提供的转换程序不是很好(据说是为了提高性能,常用算法),可以尝试使用播放器提供的软件转换功能。但是对于这种声卡来说,它的输出音质并不是很理想,所以使用更好的转换算法意义不大,而且由于软件转换需要CPU做更多的事情,性能肯定会受到影响。
问:高频抖动是什么意思?
一般音频编解码器使用高位来处理16位的音源。音源最终播放输出的时候,高位要降到16位才能输出(因为一般声卡只支持16位的输出),所以会有量化副作用,就像把一张真彩色图片转换成256色一样。如果转换程序不好,就会出现大块。于是产生了抖动技术,即采用插值算法,在转换前用一些随机噪声进行处理,以减少量化带来的副作用。
一般来说,如果音源和输出的位数相同,就不需要使用抖动。抖动仅适用于16位以下的输出。
-
第三,文件标签
问:什么是文档标签,它的用途是什么?
文件标签是指一个歌曲文件的标题(歌名)、艺人(歌手)等信息,就像一个人的名字一样。有了文件标签,我们就可以准确的知道这首歌的出处,通过这些信息我们就可以在这台机器上或者网上准确的找到对应的歌词文件。
问:如何填写或编辑文件标签?
您可以通过千千的文件信息对话框编辑标签信息。这个对话框有两种显示方式:1。播放歌曲时,右击主窗口的主菜单,选择“查看窗口”中的“文件信息”。此时,将显示当前播放歌曲的文件信息。2。选择播放列表中的一首或多首歌曲,在右键菜单中选择“文件信息”,显示所选文件的信息。如果您选择了多首歌曲,您可以同时编辑多首歌曲的信息。
问:千千支持哪些类型的标签?
千千几乎支持所有已知的通用标签类型,如ID3v1/ID3v2、APE对于MP3文件;对于Ogg文件,支持Ogg本身的Vorbis标签;对于APE、MPC等新的文件格式,也支持APE标签,对于iTunes的MP4/M4A格式,千千也支持其标签类型。需要注意的是,WMA标签的写入需要安装微软的media9或更新版本,但读取不需要任何额外的支持;对于RM文件,千千目前只支持最基本的标签字段。
问:千千嵌入的歌词怎么样?它们与标签有关吗?
千千嵌入的歌词以标签的形式存储在歌曲文件中,字段名为“歌词”。标签的操作对于嵌入的歌词也是有效的。
问:如何显示我想在播放列表的歌曲标题中显示的标签字段?
你可以在千千选项的播放列表页面中设置“标记时的格式”,你可以用类似“%(英文字段名)”的字符串来表示你想要显示的任何字段,前提是你知道这些字段的英文名称。你可以通过上面提到的文件信息对话框的“高级模式”看到该文件中所有已有标记字段的名称和值。
问:一些文档显示标签混乱。有什么办法可以纠正吗?
您可以尝试使用“文件信息”中的内码转换功能找到正确的内码。
问:为什么在列表中查找文件很慢?
为了节省资源,提高向列表添加文件的速度,千千静听默认只在一个播放列表显示一个音频文件时读取信息,而foobar2000这样的播放器在第一次添加时就读取所有文件的信息,所以搜索时不需要读取。事实上,千千敬亭也提供了与foobar2000相同的文件信息操作方法。请在选项中的“播放列表”页面将阅读信息改为“添加”,并选择“将文件信息缓存到播放列表”。
-
第四,歌词
问:如何使用歌曲秀?为什么不能显示我从网上下载的歌词?
歌词文件有一定的格式,一般带有LRC和TXT后缀,每个歌词前面都有一个时间戳如【00:00.00】。没有这些标签,歌词就无法显示。可以用千千静自带的歌词编辑器给每一句歌词加上时间戳,保存后可以正常显示。建议歌词文件命名为“歌手名字-歌名。lrc”,然后把存放这些歌词的目录添加到千千本地的搜索文件夹中,以后就不用一个一个关联了。当然,你的歌曲文件也要有对应的歌手名字和歌名信息,这样才能保证播放器能找到正确的歌词文件。
问:为什么歌词下载失败?
有几个可能的原因:
1.文件信息不正确,导致搜索时无法正确匹配;
2.歌曲太新了,这些歌词网站都还没有收集歌词;
3.如果您安装了防火墙,网络请求可能会被过滤,您无法连接到歌词服务器;
4.歌词服务器可能有问题,或者正在维护。
问:为什么没有用户自己输入或选择歌词的功能?
歌词下载网站的搜索和下载方式是不一样的。如果想用播放器实现自动处理,需要编写相应的搜索下载程序,而不是简单的进入一个网站。(注:百度搜到的歌词都是纯文字歌词,不能直接用在歌友会上)
问:为什么我下载了正确的歌词,但下次播放时,我仍然显示错误的歌词?
千千按照嵌入歌词的顺序加载歌词-& gt;关联歌词-& gt;本地搜索-& gt;网上搜索,有可能嵌入或关联了错误的歌词,或者本机有错误的歌词文件。这时候可以按照上面的顺序检查优先级高的歌词,如果发现错误,直接删除或者修改即可。具体操作请参考右键菜单中的歌词相关参数或歌词显示的选项。
问:我想把下载的歌词自动保存成与歌曲相同的文件名,直接保存到歌曲所在的目录下,方便查找。我该怎么做?
在千千选项的“歌词搜索”页面,有相关的参数可以设置。
问:我的标签信息和文件名都是繁体。我能找到简化的歌词吗?
如果使用Unicode版本,系统在2000以上,可以实现,但是在线搜索只有王玄的搜索插件支持,另外两个网站的搜索引擎不支持简体和繁体的自动识别。
-
动词 (verb的缩写)其他人
问:我想直接在播放列表里删除硬盘上的文件。为什么「物理删除」是灰显的?
千千提供了物理删除的功能,但是考虑到用户可能会出错,默认是禁用的。您可以在千千选项的播放列表页面中找到启用此功能的选项。
问:我想直接从播放列表中拖动文件到其他地方,例如我的USB闪存驱动器或MP3播放器。可以吗?
可以,在播放列表中,选择要操作的文件。注意用左键按住标题(否则会变成文件选择,和windows资源管理器的操作一样),拖动文件到你想要的地方,如果要复制,再按Ctrl。操作与Explorer完全相同。这样你甚至可以直接把文件拖到回收站,删除不想要的文件。
问:我想把CD压缩成MP3、WMA或APE。我能和成千上万的听众一起做吗?
当然可以。通过添加文件或目录,将CD上的所有音轨文件拖入播放列表。由于数字音轨捕捉是独占访问,如果光盘上的文件或音轨正在播放,请先停止播放,然后在播放列表中选择要转换的文件(可以多选进行批量转换),点击右键菜单中的“转换格式”命令进行转换。如果在压缩格式列表中找不到MP3或WMA,请重新安装千千听力。同样,您可以转换成千上万个可以通过聆听播放的文件(例如,将APE和其他格式转换为MP3和WMA)。
问:为什么其他玩家比千千静听更支持RM?
其他玩家用的是Real Player的播放器内核,其实相当于用Real Player玩,和直接用Real Player玩差别不大,而且这个内核占用内存比较大,所以笔者不想采用这种方法。实际上,Real公司只披露了RMF文件格式的部分内容,还有一些细节没有完全披露,尤其是与编码格式有关的部分。在现有条件下,千千敬亭只能这样做,希望以后能得到更多的技术支持。
问:如果我的计算机上没有安装Windows Media Player 9或更高版本,我还可以播放WMA吗?
当然,只要你在安装时选择支持WMA,千千听歌只使用微软的WMA解码器组件,也就是安装目录中的wmadmod.dll文件,只有400K J左右,也支持WMA文件信息的读取。
问:我想将数千台监听设备从一台计算机复制到另一台计算机。所有的设置还有用吗?
安装目录下的TTPlayer.xml文件中保存了数千个监听设置。把这个文件和程序复制到其他电脑上就行了,根本不需要重装。当然,有些目录可能会因电脑不同而不同,需要注意(比如歌词下载的保存目录会因为电脑不同而失效)。
问:我熟悉INI文件。为什么不用INI文件保存这些设置呢?
INI是一个“过时”的配置文件,读取和分析速度慢,扩展性差。XML是存储各种信息的最佳格式,现在支持越来越广泛,所以XML是更好的选择。
问:为什么我在千千使用DFX收听时看不到DFX之窗?
如果你的电脑上安装了Winamp,同时Winamp上也安装了DFX,那么只要把Winamp的插件目录设置为千千的Winamp音效目录应该就没有问题(默认情况下,千千会检测Winamp插件目录并自动设置)。如果不安装Winamp,把DFX安装到千千的目录下,那就要手动把DFX安装后目录下的Plugins目录设置到千千的Winamp音效插件目录下。
问:为什么不支持视频?
作者设计听音的原则是播放音频。至于看视频图像,有更多更好的选择。相信每个人心里都已经有了自己喜欢的视频播放器。
问:千千监听按需支持哪些网络协议?
目前成千上万的听众在HTTP和MMS支持在线需求,其中MMS协议需要媒体播放器7或更高版本的支持。暂时不支持互联网上流行的RTSP协议。
问:千千敬亭是用什么语言写的?为什么这么小支持这么多格式?
成千上万的听众都是用VC6写的。如果你还知道WTL,作者可以告诉你,界面是用WTL写的,比MFC更适合写快速、简洁、资源消耗少的程序。当然,很多音频编码库都是用C语言写的,效率更高,更紧凑。
问:随着用户越来越多,作者会考虑收费还是注册?
作者不会以任何理由违背向用户收费的承诺!
问:为什么不在网站上做一些宣传,让更多人知道?
我一直在提高千千的原因不是为了钱,所以用更多的人对我来说不一定是好事。毕竟一个人做软件很辛苦,人太多会造成更多的问题和麻烦。
问:经常在一些论坛上看到推荐千听的帖子。有人说这是作者请来的“枪手”推荐的?
这是最可笑的问题,但确实有很多网友在问!
我的回答是“绝对不会”。一方面,如上所述,我对宣传不感兴趣。另一方面,我又养不起所谓的“枪手”。问问你自己或者你身边的朋友,你怎么知道千千静听,或者你是在媒体上看到广告的?你在论坛上看到很多推荐吗?还是朋友直接推荐给你的?
作者不反对网友向不同论坛推荐倩倩经。如果你觉得千千是一款你喜欢的,值得推荐的软件,有什么理由不能推荐给更多的人呢?!
问:为什么它被命名为“千千”?听起来声音不太大。
作者非常喜欢陈慧娴的歌曲。我相信每个人都知道为什么要用“千千”这个词。其实我当时自己也写了一个播放器,因为我觉得Winamp很多地方都不是很好用。我一直认为如果我有自己的播放器来听我喜欢的歌曲会很棒,所以我有了今天的千千听力。希望大家喜欢。