"Se um trabalhador quiser fazer bem o seu trabalho, ele deve primeiro afiar suas ferramentas." - Confúcio, "Os Analectos de Confúcio. Lu Linggong"
Primeira página > Programação > Calculando a duração do áudio Ogg no Go: um guia passo a passo

Calculando a duração do áudio Ogg no Go: um guia passo a passo

Publicado em 01/11/2024
Navegar:668

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

Eu estava tentando clonar o discord e descobri que eles usam formatos ogg para áudio (eu acho), estou tentando fazer com que a duração do áudio seja armazenada no banco de dados.

Uma solução stackoverflow sobre como obter a duração do áudio OGG, achei fascinante. A abordagem envolve procurar o final do arquivo, encontrar o último cabeçalho da página Ogg e ler a posição do 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 



Resolvi compartilhar aqui, só achei a implementação muito legal e talvez ajudar outras pessoas

Declaração de lançamento Este artigo foi reproduzido em: https://dev.to/mmvergara/calculating-ogg-audio-duration-in-go-a-step-by-step-guide-1igh?1 Se houver alguma violação, entre em contato com study_golang @163.com excluir
Tutorial mais recente Mais>

Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.

Copyright© 2022 湘ICP备2022001581号-3