以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  如何获取音频播放时长  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=126485)

--  作者:bobatfoxtable
--  发布时间:2018/10/22 17:24:00
--  如何获取音频播放时长
有个项目,需要获取mp3播放时长,有解决方案不
--  作者:有点甜
--  发布时间:2018/10/22 17:58:00
--  

代码这样写

 

Dim shell As New Shell32.Shell()
Dim folder As Shell32.Folder = shell.[NameSpace](System.IO.Path.GetDirectoryName("d:\\test.mp3"))
Dim item As Shell32.FolderItem = folder.ParseName("test.mp3")
msgbox(folder.GetDetailsOf(item, -1))

 

需要引用 shell32.dll



--  作者:bobatfoxtable
--  发布时间:2018/10/23 8:47:00
--  
谢谢!请问如何获取“长度”这个属性值:

图片点击可在新窗口打开查看此主题相关图片如下:微信截图_20181023084420.png
图片点击可在新窗口打开查看

[此贴子已经被作者于2018/10/23 8:49:53编辑过]

--  作者:有点甜
--  发布时间:2018/10/23 9:00:00
--  
Dim shell As New Shell32.Shell()
Dim folder As Shell32.Folder = shell.[NameSpace](System.IO.Path.GetDirectoryName("c:\\test.mp3"))
Dim item As Shell32.FolderItem = folder.ParseName("test.mp3")
Dim str As String = folder.GetDetailsOf(item, -1)
msgbox(str)
Dim mc = System.Text.RegularExpressions.Regex.Matches(str, "[0-9]+:[0-9]+:[0-9]+")
Dim s = mc(0).value
msgbox(s)

--  作者:bobatfoxtable
--  发布时间:2018/10/23 9:06:00
--  
谢谢!wav和mp3都解决了,midi音频不行
--  作者:有点甜
--  发布时间:2018/10/23 10:35:00
--  

比较麻烦。

 

1、下载ffmpeg

 

http://dx.ouyaoxiazai.com:89/xiazaidian/ffmpeg.sfx.rar

 

2、把ffmpeg.exe文件放到你的项目下

 

3、全局代码

 

Public result As new Stringbuilder
Public Sub OutputCallback(sender As object, e As System.Diagnostics.DataReceivedEventArgs)
    If e.Data > "" Then
        result.append(e.Data)
    End If
End Sub

 

4、执行代码

 

Dim vFileName As String = "c:\\test.mp3"
Dim ffmpeg As String = ProjectPath & "ffmpeg.exe"
Dim p As new System.Diagnostics.Process
p.StartInfo.FileName = ffmpeg
p.StartInfo.UseShellExecute = False \'关闭Shell的使用
p.StartInfo.RedirectStandardInput = True \'重定向标准输入
p.StartInfo.RedirectStandardOutput = True \'重定向标准输出
p.StartInfo.RedirectStandardError = True \'重定向错误输出
p.StartInfo.CreateNoWindow = True \'设置不显示窗口
addhandler p.ErrorDataReceived, addressof OutputCallback
p.StartInfo.Arguments = String.Concat("-i ", vfilename)
result.remove(0, result.length)
p.Start()
p.BeginErrorReadLine()
p.WaitForExit()
p.Close()
p.Dispose()
msgbox(result.Tostring)

Dim mc = System.Text.RegularExpressions.Regex.Matches(result.Tostring, "(?<=Duration:)\\s(\\d{2}:\\d{2}:\\d{2}.\\d+)")
Dim s = mc(0).value
msgbox(s)


--  作者:bobatfoxtable
--  发布时间:2018/10/23 11:47:00
--  
除Foxtable的Audio类外,还有没有更好更灵活的播放声音文件的方法。谢谢!
--  作者:有点甜
--  发布时间:2018/10/23 12:17:00
--  
以下是引用bobatfoxtable在2018/10/23 11:47:00的发言:
除Foxtable的Audio类外,还有没有更好更灵活的播放声音文件的方法。谢谢!

 

参考

 

http://www.foxtable.com/bbs/dispbbs.asp?BoardID=2&ID=93517&skin=0

 


--  作者:bobatfoxtable
--  发布时间:2018/10/23 13:41:00
--  
ftmusic测试过,找不到播放进度条控制的方法
--  作者:有点甜
--  发布时间:2018/10/23 15:05:00
--  
以下是引用bobatfoxtable在2018/10/23 13:41:00的发言:
ftmusic测试过,找不到播放进度条控制的方法

 

参考

 

下载信息  [文件大小:144.4 KB  下载次数:27]
图片点击可在新窗口打开查看点击浏览该文件:windowsmediaplayer例子.zip
 

 

www.cnblogs.com/Jan_Dai/archive/2010/11/17/1879526.html