mcisendstring, 320kbps的MP3播放失败,???

jy33888 2009-05-20 09:40:48
如题
...全文
788 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
jy33888 2009-05-22
  • 打赏
  • 举报
回复
那有没有比MCISENDSTRING更底层的API?能不能把MP3文件里面的音频流读出来再处理?
SYSSZ 2009-05-22
  • 打赏
  • 举报
回复
我试了你发的 mp3的确放不出来,我试着用其它播放器放,千千,realplayer,windowsMediaplayer全都没问题,我又把它剪去一个M,还是放不出来,删除后在回收站里无法清空回收站,说有DG5正在使用;综合以上情况我认为:
(1)和位速320kbps无关,我试了别的位速320kbps可以放出来;
(2)和文件大小也无关系;
可能的原因:
(1)mp3本身有问题-------删除后在回收站里无法清空回收站,说有DG5正在使用---这不是正常mp3的表现;
(2)千千,realplayer,windowsMediaplayer等纠错能力强,mcisendstring能力差.
SYSSZ 2009-05-21
  • 打赏
  • 举报
回复
你发一首歌到SYSSZ_hh@YAHOO.COM.CN,让我试试
jy33888 2009-05-21
  • 打赏
  • 举报
回复
我放的是一些日文歌,在千千上放可以,它是码率320kbps
SYSSZ 2009-05-21
  • 打赏
  • 举报
回复
我放是龚玥的<民歌红II>,位速320kbps,大小9.71MB,你那个MP3是不是保护?
jy33888 2009-05-20
  • 打赏
  • 举报
回复
不行,跟我自己做的情况一样,我的只是未加除播放停止之外的功能而已,其他跟你的这个差不多,要加空格之类的我没漏,难道不是代码的问题?
jy33888 2009-05-20
  • 打赏
  • 举报
回复
我先试试,可以的话,回头给分
SYSSZ 2009-05-20
  • 打赏
  • 举报
回复
我找了一320kbps的MP3就放出来了,
Private Declare Function mciSendString Lib "winmm.dll" Alias "mciSendStringA" (ByVal lpstrCommand As String, ByVal lpstrRetumString As String, ByVal uReturnLength As Long, ByVal hwndCallback As Long) As Long

Dim mfn As String


Private Sub Form_load()
mfn = ""
Play.Enabled = False
Pause.Enabled = False
Stopplay.Enabled = False
Back.Enabled = False
Prew.Enabled = False
Timer1.Enabled = False
Timer1.Interval = 500
End Sub

Private Sub open_Click()
'On Error GoTo err
With CommonDialog1
.CancelError = True
.Filter = "音乐文件|*.mp3;*.wav;*.mid"
.Flags = cdlOFNNoChangeDir And cdlOFNPathMustExist
.Action = 1
stopplay_Click '停止按钮同时可以设备初始化
mfn = .FileName '这个程序中文件名一定不能带空格
Form1.Caption = .FileName
Play.Enabled = True
End With
play_Click
Exit Sub
'err:
End Sub

Private Sub play_Click()
On Error Resume Next
Dim t As Long
t = mciSendString("PLAY " & mfn, vbNullString, 0, 0) 'Open后边的空格一定不能丢
Dim ret As String * 128
t = mciSendString("status " + mfn + " length", ret, 128, 0)
'显示歌曲总长
ret = Left(ret, 8)
If ret <> "" Then
ProgressBar1.min = 0
ProgressBar1.Max = Val(ret)
Label3.Caption = Gettime(Val(ret))
End If
Play.Enabled = False
Pause.Enabled = True
Stopplay.Enabled = True
Back.Enabled = True
Prew.Enabled = True
t = mciSendString("status " + mfn + " mode", ret, 128, 0)
'得到设备的当前状态,是播放还是暂停等等
ret = Left(ret, 8)
StatusBar1.Panels(1).Text = ret
'在状态栏显示播放状态
t = mciSendString("play " + mfn + " form " + Str(ProgressBar1.Value), 0&, 0, 0)
'开始播放
Timer1.Enabled = True
End Sub

Private Sub pause_Click()
t% = mciSendString("pause " + mfn, 0&, 0, 0)
'发出暂停的命令
Play.Enable = True
Pause.Enabled = False
Stopplay.Enabled = True
Back.Enabled = False
Prew.Enabled = False
End Sub

Private Sub stopplay_Click()
t% = mciSendString("stop " + mfn, 0&, 0, 0)
t% = mciSendString("close " + mfn, 0&, 0, 0)
'停止播放
Play.Enabled = True
Pause.Enabled = False
Stopplay.Enabled = False
Back.Enabled = False
Prew.Enabled = False
End Sub

Private Sub back_Click()
t% = mciSendString("play " + mfn + " from " + Str(ProgressBar1.Value - (ProgressBar1.Max \ 10)), 0&, 0, 0) '向后跳一小段再播放
End Sub

Private Sub prew_Click()
t% = mciSendString("play " + mfn + " from " + Stri(ProgressBar1.Value + (ProgressBar1.Max \ 10)), 0&, 0, 0) '向前跳一小段再播放
End Sub

Private Sub Timer1_Timer()
Dim t As Long
Dim ret As String * 128
t = mciSendString("status " + mfn + " position", ret, 0, 0)
'得到当前播放位置
ret = Left(ret, 8)
ProgressBar1.Value = Val(ret)
Label1.Caption = Gettime(Val(ret))
'显示歌曲当前时间
If ProgressBar1.Value = ProgressBar1.Max Then
stopplay_Click
End If
t = mciSendString("status " + mfn + " mode", ret, 128, 0)
ret = Left(ret, 8)
StatusBar1.Panels(1).Text = ret
End Sub

Private Sub Form_Unload(Cacel As Integer)
t% = mciSendString("stop " + mfn, 0&, 0, 0)
t% = mciSendString("close " + mfn, 0&, 0, 0)
End Sub

Private Function Gettime(position As Long) As String
'这个函数的功能是把以长整型表示的时间转换为电子钟式的"**:**"
Dim min, sec
min = position / 1000
min = min / 60
sec = min - Int(min)
min = Int(min)
sec = 60 * sec / 100
sec = Int(sec * 100)
Gettime = Str(min) + ":" + Str(sec)
End Function

jy33888 2009-05-20
  • 打赏
  • 举报
回复
还在线的。。。
jy33888 2009-05-20
  • 打赏
  • 举报
回复
一般MP3大概5M左右,190KBPS, 320的大概10M左右,用千千可以看到,我打开190的就可以,320的不行
SYSSZ 2009-05-20
  • 打赏
  • 举报
回复
代码?320kbps的MP3是个什么歌曲?
内容概要:本文围绕“空地多无人平台协同路径规划技术”的论文复现展开,重点介绍了基于Matlab的多无人机与地面无人平台协同路径规划的算法实现与仿真研究。研究系统性地整合了无人机三维路径规划、动态避障、多机协同、任务分配及防撞机制等核心技术,结合智能优化算法(如遗传算法、粒子群算法、灰狼优化算法等)与经典路径规划模型(如Dubins路径、A*、RRT等),在复杂威胁环境下实现了高效、安全的协同路径规划。文中提供了完整的Matlab代码支持,便于科研人员进行算法验证、性能对比与二次开发,并强调通过复现高水平学术论文(如EI、SCI期刊及硕博论文)深入掌握该领域的前沿方法与技术路线。; 适合人群:具备一定Matlab编程基础,从事无人机系统、自动化控制、人工智能、路径规划等相关领域研究的研究生、科研人员及工程技术人员,尤其适用于正在开展科研项目、撰写学位论文或希望提升算法实践能力的研究者。; 使用场景及目标:① 复现并深入理解空地协同路径规划领域的高水平论文算法;② 掌握Matlab在多智能体路径规划中的建模、仿真与可视化方法;③ 应用于科研课题、毕业设计、项目申报及算法创新实践中,提升研究的技术深度与工程可行性。; 阅读建议:建议结合文中提供的网盘资源(含完整代码、仿真模型及参考文献资料)同步学习,优先选择与自身研究方向契合的案例进行复现,注重算法原理与代码实现之间的映射关系,并在掌握基础方案后尝试进行参数调优、算法融合或引入新约束条件以实现改进与创新。

1,488

社区成员

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

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