请问几个关于用DELPHI5.0编程播放mp3的问题? (100分)

  • 主题发起人 主题发起人 redone1302
  • 开始时间 开始时间
R

redone1302

Unregistered / Unconfirmed
GUEST, unregistred user!
我想请问几个关于用mpegplayer控件播放mp3的问题:
1、如果我把程序跟文件关联好了。象WINAMP那样,双击一个MP3文件就自动打开
并播放。但是我们编程时一般会在窗口启动时让它自动装载一个PLAYLIST文件
(*.M3U),包括WINAMP,那我的程序中如何在双击文件后捕获到这个文件名后播放并
且拦截程序不让它打开那个默认的*.M3U文件呢?
2、为何用MPEGPLAYER.DLL的暂停功能会反映那么迟钝(按下BUTTON后要等2秒左右),
有何好的解决办法呢?
3、我用文件流来读ID3的标签时,为何文件在使用时则不能读(出错),如何解决或如何使用别的方法读?
4、如何能做出象WINAMP左上角那个跳动的东西,是得到播放时的电平还是别的?请给点思路?
 
怎么没有回答这个问题呀?
难吗?
分不够可以加呀?只要您一句话————OK!
 
顺便问一个问题
好像delphi 的mediaplayer不能直接播放mp3吧
至少我的电脑上不行
之所以这样说是因为在我同学的电脑上用mediaplayer就可以
直接放,真的很奇怪
 
小猪:delphi 的Tmediaplayer 是没有任何解码能力的,但是如果
你的机子装有 JetAudio等播放器,Tmediaplayer就会调用它们的播放
引擎来放 mp3,所以你无需奇怪。
 
用过buPack组件包吗?
里面有组mp3的组件
比较全面
 
小猪:
我的问题中没有tmediaplayer.
 
双击一个MP3文件后,这个文件名即被作为参数传递给应用程序,你可以在程序中判断这个参数
是不是文件名再决定如何播放。
 
kucio:能否详细点,来个例子,OK?
 
怎么沉默了这么久啦?喂,有没有人知道的?(不好意思,声音叫大了点,没吵着您吧!)
 
3。 也许是打开文件没用共享方式,只有先读TAG,关闭,再播放。
4。 是电平,没用过你说的那个控件,但估计不能够实现这个效果,因为解码和播放
被封装在一块儿了,没法在MCI(或DirectSound)播放声音前拿到音频数据,除非
你有该控件的源码自己改
 
to cheka 分坛主:
ABOUT TAG,假若有一个MP3文件正在被WINAMP播放着,我要用程序把这个文件打开来进行
读与写的操作,该用哪个参数呢?我个个都试过了,好象达不到效果!(不出错,但BUFFER
写不进去或是读不出来)
 

可否贴相关部分的代码
 
我来回答你的问题吧!
1:我没完全看懂你的意思,:(
不过我可以提点建议。
你可以先把*.mp3和你的程序关联(带参关联)。在程序的启动时,
获取params,得到mp3文件名.这时你还没有加*.m3u吧!呵呵,
播放就行了(不过我觉得你考虑的太简单了,除了这些问题,还有
很多问题要解决,比如,关联*.m3u,*.pls;
正在播放A时,你双击了B,怎样通知程序:)
2: 这是个bug,没办法,要修改Mpeg.dll的源代码(我也碰到过,只是后来没空)
播放缓冲区太大了,而且没有立即清除缓冲区的函数
3:这也是DLL的毛病,他打开文件不是以共享方式,你在这个文件关闭之前无法打开
4:没有现成组件,mmtools里的集成度太高,即使有源码,也不好修改。
可以得到电平值,然后进行富里叶分析(如果你的信号与系统这门课足够好的话)
得到频域上的值,最后要看你的美工功底咯!

to redone1302:
半年前 我也编过一个mp3播放器,玩玩而已
感兴趣的话,下一个看看:)http://wpeter.top263.net/xmamp.zip
也可以和我交流 guoyu_mail@21cn.com
现在很少上这里看了,很忙:)
 
1:在打开文件的时候判断是否是m3u文件,如果不是的话就在程序里跳过啦。很简单的吧?
2:在VC里好像反应不是很慢哦。
3:播放时是独占方式的,如果用MCI的话可以调节打开方式为sharable,不知道用控件能否
实现共享打开。
4:太难了,不过可以看看media player 7的那些效果,比winamp更酷。而且media player
提供sdk的,可以找一下有没有这方面的介绍(不知道有没有,我猜的)
 
用Shell,把mp3文件和你的程序建立关联,双击的时候自然用你的程序打开了。
 
多人接受答案了。
 
后退
顶部