«Если рабочий хочет хорошо выполнять свою работу, он должен сначала заточить свои инструменты» — Конфуций, «Аналитики Конфуция. Лу Лингун»
титульная страница > программирование > Расчет продолжительности звука Ogg в Go: пошаговое руководство

Расчет продолжительности звука Ogg в Go: пошаговое руководство

Опубликовано 1 ноября 2024 г.
Просматривать:740

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

Я пытался клонировать Discord и обнаружил, что они используют форматы ogg для аудио (я думаю), я пытаюсь сохранить продолжительность звука в базе данных.

Решение stackoverflow по получению продолжительности звука OGG мне показалось интересным. Этот подход включает в себя поиск конца файла, поиск последнего заголовка страницы Ogg и чтение его позиции гранулы.

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 



Я решил поделиться этим здесь, я просто нашел реализацию очень крутой и, возможно, помогу другим людям

Заявление о выпуске Эта статья воспроизведена по адресу: https://dev.to/mmvergara/calculating-ogg-audio-duration-in-go-a-step-by-step-guide-1igh?1 Если есть какие-либо нарушения, свяжитесь с Study_golang. @163.com удалить
Последний учебник Более>

Изучайте китайский

Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.

Copyright© 2022 湘ICP备2022001581号-3