「労働者が自分の仕事をうまくやりたいなら、まず自分の道具を研ぎ澄まさなければなりません。」 - 孔子、「論語。陸霊公」
表紙 > プログラミング > Go での Ogg オーディオの長さの計算: ステップバイステップ ガイド

Go での Ogg オーディオの長さの計算: ステップバイステップ ガイド

2024 年 11 月 1 日に公開
ブラウズ:924

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

Discord のクローンを作成しようとしていたところ、オーディオに ogg 形式が使用されていることがわかりました (おそらく)。データベースに保存するオーディオの長さを取得しようとしています。

OGG オーディオの長さの取得に関する stackoverflow ソリューションが興味深いと思いました。このアプローチには、ファイルの最後までシークし、最後の 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