"일꾼이 일을 잘하려면 먼저 도구를 갈고 닦아야 한다." - 공자, 『논어』.
첫 장 > 프로그램 작성 > Go에서 Ogg 오디오 지속 시간 계산: 단계별 가이드

Go에서 Ogg 오디오 지속 시간 계산: 단계별 가이드

2024-11-01에 게시됨
검색:391

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

Discord를 복제하려고 하다가 오디오에 ogg 형식을 사용한다는 것을 알게 되었고(내 생각에는) 데이터베이스에 저장할 오디오 길이를 얻으려고 합니다.

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/calculated-ogg-audio-duration-in-go-a-step-by-step-guide-1igh?1에서 복제됩니다. 침해가 있는 경우, Study_golang에 문의하세요. @163.com 삭제
최신 튜토리얼 더>

부인 성명: 제공된 모든 리소스는 부분적으로 인터넷에서 가져온 것입니다. 귀하의 저작권이나 기타 권리 및 이익이 침해된 경우 자세한 이유를 설명하고 저작권 또는 권리 및 이익에 대한 증거를 제공한 후 이메일([email protected])로 보내주십시오. 최대한 빨리 처리해 드리겠습니다.

Copyright© 2022 湘ICP备2022001581号-3