Heim  >  Artikel  >  Backend-Entwicklung  >  Wie erhalte ich die Dauer einer MP3-Datei in Golang?

Wie erhalte ich die Dauer einer MP3-Datei in Golang?

WBOY
WBOYnach vorne
2024-02-09 11:57:18662Durchsuche

Wie erhalte ich die Dauer einer MP3-Datei in Golang?

Die Dauer von MP3-Dateien in Golang zu ermitteln, ist ein häufiges Bedürfnis. Der PHP-Editor Xiaoxin stellt Ihnen eine einfache und effektive Methode vor. Zunächst müssen wir eine Bibliothek eines Drittanbieters verwenden, um MP3-Dateien zu verarbeiten. Empfehlenswert ist die Verwendung der Go-Audio-Bibliothek, die einige praktische Funktionen bereitstellt. Als nächstes müssen wir die Decoder-Funktion der Go-Audio-Bibliothek verwenden, um die MP3-Datei zu dekodieren. Anschließend können wir die Dauer der MP3-Datei ermitteln, indem wir die Duration-Methode des Decoders aufrufen. Am Ende erhalten wir einen Dauerwert in Nanosekunden, den wir in ein benutzerfreundlicheres Format wie Sekunden oder Minuten umwandeln können. So erhalten Sie die Dauer einer MP3-Datei in Golang. Hoffe das hilft!

Frageninhalt

Ich habe eine Text-to-Speech-Anfrage eingerichtet, die die openAI-API auffordert, dann das Audio zu generieren. Jetzt möchte ich die Dauer in [MM:SS] wissen. Gibt es eine Möglichkeit oder Bibliothek, sie abzurufen?

Lösung

Diese Frage wird hier beantwortet:

Wie finde ich die Länge der MP3-Datei Golang?

Außerdem möchten Sie möglicherweise float64 in das MM:SS-Format konvertieren. In diesem Fall können Sie etwa Folgendes verwenden:

package main

import (
    "fmt"
    "io"
    "os"
    "time"

    "github.com/tcolgate/mp3"
)

const mp3File = <path-to-mp3-file>

func main() {
    var t float64

    fd, err := os.Open(mp3File)
    if err != nil {
        panic(err)
    }
    defer fd.Close()

    d := mp3.NewDecoder(fd)
    var f mp3.Frame
    skipped := 0

    for {

        if err := d.Decode(&f, &skipped); err != nil {
            if err == io.EOF {
                break
            }
            fmt.Println(err)
            return
        }

        t = t + f.Duration().Seconds()
    }

    fmt.Println(t)

    // Convert the value to a time.Duration object
    duration := time.Duration(t * float64(time.Second))

    // Get the duration in minutes and seconds
    minutes := int(duration.Minutes())
    seconds := int(duration.Seconds()) - (minutes * 60)

    // Format the duration in the MM:SS format
    formatted_duration := fmt.Sprintf("%02d:%02d", minutes, seconds)

    fmt.Printf("The value %v expressed in MM:SS format is %v.\n", t, formatted_duration)
}

Das obige ist der detaillierte Inhalt vonWie erhalte ich die Dauer einer MP3-Datei in Golang?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:stackoverflow.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen