【问题标题】:VB.NET/ASP.NET - Getting duration of MP3 file on uploadVB.NET/ASP.NET - 上传时获取 MP3 文件的持续时间
【发布时间】:2013-05-03 16:36:43
【问题描述】:

我正在尝试将 MP3 文件上传到网站并同时查找音频的持续时间。我对 ASP 和 VB.NET 还很陌生,但我已经设法使用文件上传工具将文件上传到服务器。

但是我似乎无法弄清楚如何读取音频文件的持续时间?

我并不是特别在寻找一个完整的解决方案(尽管那会很好),但如果有人能指出我正确的方向,我将非常感激。

如果您需要更多信息,请告诉我,我会将其添加到问题中。

【问题讨论】:

标签: asp.net vb.net audio mp3


【解决方案1】:

我在最近的一个项目中使用 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】:

    我不相信上一个答案中的“* 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
    

    【讨论】:

      【解决方案3】:

      将此代码添加到轨迹栏计时器不要忘记将laber添加到播放器

       Label4.Text = AxWindowsMediaPlayer1.Ctlcontrols.currentItem.durationString

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-05-12
        • 1970-01-01
        • 1970-01-01
        • 2019-01-27
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多