Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vb.net/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
VB.NET/ASP.NET-获取上传时MP3文件的持续时间_Asp.net_Vb.net_Audio_Mp3 - Fatal编程技术网

VB.NET/ASP.NET-获取上传时MP3文件的持续时间

VB.NET/ASP.NET-获取上传时MP3文件的持续时间,asp.net,vb.net,audio,mp3,Asp.net,Vb.net,Audio,Mp3,我正试图上传一个MP3文件到一个网站,同时查找音频的持续时间。我对ASP和VB.NET非常陌生,但我已经设法使用文件上载工具将文件上载到服务器 然而,我似乎不知道如何读取音频文件的持续时间 我并不是特别想要一个完整的解决方案(尽管那会很好),但如果有人能给我指出正确的方向,我将非常感激 如果您需要更多信息,请告诉我,我会将其添加到问题中。我在最近使用naudio(使用软件包管理器下载)的项目中完成了这项工作。我已经快速地从c#转换了代码,没有进行测试,所以仔细检查错误 private s

我正试图上传一个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 Community 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将此代码添加到轨迹栏计时器不要忘记将标签添加到播放器


Label4.Text=AxWindowsMediaPlayer1.Ctlcontrols.currentItem.durationString
id3标记中是否有此信息>不确定。。。但如果是,你可以使用这种方法:或者类似的问题[