我正在尝试将 MP3 文件上传到站点并同时查找音频的持续时间。我对 ASP 和 VB.NET 很陌生,但我已经设法使用文件上传工具将文件上传到服务器。
但是我似乎无法弄清楚如何读取音频文件的持续时间?
我并不是特别在寻找一个完整的解决方案(虽然那会很好),但如果有人能指出我正确的方向,我会非常感激。
如果您需要更多信息,请告诉我,我会将其添加到问题中。
我在最近使用 naudio 的项目中完成了此操作(使用包管理器下载)。我已经快速从 c# 转换代码而没有进行测试,因此请仔细检查错误。
private shared function GetMp3Duration(filename as string) as double
Dim duration as double = 0.0
using (fs as FileStream = File.OpenRead(filename))
Dim frame as Mp3Frame = Mp3Frame.LoadFromStream(fs)
while (frame isnot nothing)
if (frame.ChannelMode = ChannelMode.Mono) then
duration += frame.SampleCount / frame.SampleRate
else
duration += frame.SampleCount * 2.0 / frame.SampleRate
end if
frame = Mp3Frame.LoadFromStream(fs)
End While
End Using
return duration
End Function
我不相信上一个答案中的“* 2.0”是合适的。我试过这个,结果持续时间是实际的两倍,对于立体声 mp3 声音样本。我建议以下代码,在 MSVS 社区 2013 中成功测试:
Imports NAudio.Wave
'...
Private Shared Function GetMp3Duration(filename As String) As Double
Dim reader As New Mp3FileReader(filename)
Dim duration As Double = reader.TotalTime.TotalSeconds
reader.Dispose()
Return duration
End Function
hii将此代码添加到轨迹栏计时器不要忘记将laber添加到播放器
Label4.Text = AxWindowsMediaPlayer1.Ctlcontrols.currentItem.durationString