"Si un ouvrier veut bien faire son travail, il doit d'abord affûter ses outils." - Confucius, "Les Entretiens de Confucius. Lu Linggong"
Page de garde > La programmation > Calculer la durée audio Ogg dans Go : un guide étape par étape

Calculer la durée audio Ogg dans Go : un guide étape par étape

Publié le 2024-11-01
Parcourir:114

Calculating Ogg Audio Duration in Go: A Step-by-Step Guide

J'essayais de cloner Discord et j'ai découvert qu'ils utilisaient les formats ogg pour l'audio (je pense), j'essaie d'obtenir la durée audio à stocker dans la base de données.

Une solution de stackoverflow pour obtenir la durée audio OGG, j'ai trouvé fascinante. L'approche consiste à rechercher la fin du fichier, à trouver le dernier en-tête de page Ogg et à lire la position de son granule.

func getOggDurationMs(reader io.Reader) (int64, error) {
    // Read the entire Ogg file into a byte slice
    data, err := io.ReadAll(reader)
    if err != nil {
        return 0, fmt.Errorf("error reading Ogg file: %w", err)
    }

    // Search for the "OggS" signature and calculate the length
    var length int64
    for i := len(data) - 14; i >= 0 && length == 0; i-- {
        if data[i] == 'O' && data[i 1] == 'g' && data[i 2] == 'g' && data[i 3] == 'S' {
            length = int64(readLittleEndianInt(data[i 6 : i 14]))
        }
    }

    // Search for the "vorbis" signature and calculate the rate
    var rate int64
    for i := 0; i 



J'ai décidé de le partager ici, j'ai juste trouvé l'implémentation très cool et peut-être aider d'autres personnes

Déclaration de sortie Cet article est reproduit sur : https://dev.to/mmvergara/calculating-ogg-audio-duration-in-go-a-step-by-step-guide-1igh?1 En cas d'infraction, veuillez contacter study_golang @163.com supprimer
Dernier tutoriel Plus>

Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.

Copyright© 2022 湘ICP备2022001581号-3