在程序中如何使用api函数播放mp3音乐!?

vbanddelphi 2003-10-19 10:29:05
在程序中播放mp3音乐不用控件能不能用函数或其它方法来实现呢?
...全文
263 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
vbanddelphi 2003-10-20
  • 打赏
  • 举报
回复
谢谢各位!特别感谢goodname008(卢培培,LPP Software) !问题解决了!!!谢谢!!!
knikcn 2003-10-19
  • 打赏
  • 举报
回复
Private Sub Command1_Click()
RealAudio1.DoPlay
End Sub

Private Sub Form_Load()
RealAudio1.Source = "E:\MUSIC\任贤齐\任贤齐春天花会开.rm"

End Sub

'***************************************************
'control realway activex control library
vbanddelphi 2003-10-19
  • 打赏
  • 举报
回复
先谢了,这个我知道,我就是想能不能用函数播放mp3格式的音乐!继续等!
aha99 2003-10-19
  • 打赏
  • 举报
回复
如果是windows支持的格式就可以,但是mp3音乐好像不可以,要不然你就自己解码,或者转换成windows标准的音频格式,直接用winmm中的api来实现,很简单的 LlRet = sndPlaySound(LsSoundFile, SND_ASYNC)
goodname008 2003-10-19
  • 打赏
  • 举报
回复
' 用API函数中的mciSendString即可解决问题,自己加工加工做了个函数

Option Explicit
Private Declare Function mciSendString Lib "winmm.dll" Alias "mciSendStringA" (ByVal lpstrCommand As String, ByVal lpstrReturnString As String, ByVal uReturnLength As Long, ByVal hwndCallback As Long) As Long

Private Sub Command1_Click()
PlaySound "c:\123.mp3"
End Sub

' 播放指定磁盘中的音乐文件(.wav或.mid或.mp3)
' Filename 为音乐文件的路径及文件名
Function PlaySound(ByVal FileName As String) As Boolean
Dim cmd As String, exName As String
exName = Right(FileName, 3)
mciSendString "close " & exName, 0, 0, 0
cmd = "open " & FileName & " alias " & exName
mciSendString cmd, 0, 0, 0
PlaySound = mciSendString("play " & exName, 0, 0, 0)
End Function


subzero 2003-10-19
  • 打赏
  • 举报
回复
播放mp3文件的几种途径,不全的请大家补充
1、调用现存播放器提供的控件,如楼上的real或activemovie等等,好处是代码简单
2、编写基于directshow的应用程序来播放mp3
3、直接调用现有的mp3解码引擎,并输出
4、自己编写mp3解码引擎
各位网友你们好:   首先感谢你们对我的“音乐天地”的支持,今天我的这个作品你们在使用是还可能有无足之出。为了让大家多能很好的使用它,为了它能够跟快的成长我从这个版本起就将程序的原代码开放了,希望各位高手能更好的完善它。在这里我将介绍一下我的程序的各个部分。   1。主窗口。   主窗口的功能有:动态显示音频波表,左右声道调整,暂停,继续,循环,下一首,上一首等。   2。歌曲目录。   我的这个程序是完全模拟Winamp写成的。不论是主窗口还使三个窗口的组合,在歌曲目录窗口支持双击某首歌曲的播放,支持多个文件的同时打开,支持从资源管理器拖放文件,支持歌曲目录的二次打开和保存,通过主窗口您能有选择的播放单个文件,按顺序播放和随机播放目录表的文件。   3。作者信息。   此窗口的作用是凑够三个Winamp的完整布局,并无实际意义。   程序的开发环境是Delphi6.0操作系统是Win98se,用到的技术点有:(1)Api,在程序登录时的透明窗口和左右声道的控制都使WindowsAPI的调用。(2)Delphi的Mediaplay控件的调用,在播放VCD文件时用的就是它。(3)VC++,大家最关心的肯定是动态波形表的问题,其实我为了这个问题已经查阅了一年的资料了,大家有时侯喜欢在工作闲暇时写写小工具软件,但是有些时候我们的知识面是不够的。要想达到Winamp的层次必定还相差很多,当然网友可能有高手,好了我将解决大家的问题了。   刚开始时我认为波形表时调用某个Api函数来得到的,于是我查阅了所有的api手册,结果一无所获。后来我就开始了解码层次的研究,在网上这方面的资料太少我转了几个星期也一无所获。有一天我在下班的路上卖了一张VC++资料光盘,在其居然有动态波形表的文章,通过它我知道了波形表的产生是解码的结果,它通过直接用一个8000个成员变量的庞大数组对特定的音乐文件进行手工解码最后通过声卡直接输出,其复杂程度是我所难以一是理解的代码量超过3万行。并且您还有乐理知识。其的三维音乐效果模拟也是通过解码来完成的。我的日常工作是数据库程序设计,对多媒体开远不能达到文章提到的层次,并且每一种格式的文件都要有不同的解码标准。这些标准是国际MP3组织制定的详细内容还要阅读他们的技术文档。我的多媒体程序就这样有放下了。我的目标转到了第三方控件,我想通过第三方的控件来达到解码播放的目的。但是还是没有现成的控件,我前些日子无意发现了上海一家多媒体解码公司提供了一个波形表动态联接库。通过它我实现了多媒体文件的波形表显示,但是它的预留的接口并不多导致我的程序不能首快进,快退的功能,要想的到完成功能只有花钱了。他们的这个动态联接库也只支持MP3解码并不支持MPG解码。   如果您有这个毅力学到上海这家解码公司的技术,您将改变您现有的工作岗位。我也在不断的学习但愿网友有人能尽快彻底解决这一问题。

7,759

社区成员

发帖
与我相关
我的任务
社区描述
VB 基础类
社区管理员
  • VB基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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