1

MP3 ファイルをサイトにアップロードしようとしていますが、同時に音声の長さを調べています。私は ASP と VB.NET にはまったく慣れていませんが、ファイル アップロード ツールを使用してファイルをサーバーにアップロードすることができました。

しかし、オーディオファイルの長さを読み取る方法がわかりませんか?

私は特に完全な解決策を探しているわけではありませんが (それはいいことですが)、誰かが私を正しい方向に向けることができれば、私は非常に感謝しています.

さらに情報が必要な場合はお知らせください。質問に追加します。

4

3 に答える 3

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
于 2013-05-30T10:43:52.173 に答える
0

前の回答の「* 2.0」が適切であるとは確信していません。これを試してみたところ、ステレオ mp3 サウンド サンプルの場合、結果の長さは実際の 2 倍になりました。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
于 2015-03-20T20:22:28.017 に答える