"Si un trabajador quiere hacer bien su trabajo, primero debe afilar sus herramientas." - Confucio, "Las Analectas de Confucio. Lu Linggong"
Página delantera > Programación > Calcular la duración del audio Ogg en Go: una guía paso a paso

Calcular la duración del audio Ogg en Go: una guía paso a paso

Publicado el 2024-11-01
Navegar:647

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

Estaba intentando clonar Discord y descubrí que usan formatos ogg para audio (creo), estoy tratando de obtener la duración del audio para almacenarla en la base de datos.

Me pareció fascinante una solución de stackoverflow para obtener la duración del audio OGG. El enfoque implica buscar hasta el final del archivo, encontrar el último encabezado de la página Ogg y leer la posición de su gránulo.

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 



Decidí compartirlo aquí, la implementación me pareció muy interesante y tal vez ayude a otras personas

Declaración de liberación Este artículo se reproduce en: https://dev.to/mmvergara/calculating-ogg-audio-duration-in-go-a-step-by-step-guide-1igh?1 Si hay alguna infracción, comuníquese con Study_golang @163.com eliminar
Último tutorial Más>

Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.

Copyright© 2022 湘ICP备2022001581号-3