卓越飞翔博客卓越飞翔博客

卓越飞翔 - 您值得收藏的技术分享站
技术文章77404本站已运行440

在 Go 中计算 Ogg 音频持续时间:分步指南

在 go 中计算 ogg 音频持续时间:分步指南

我试图克隆不和谐,我发现他们使用 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 



<p>我决定在这里分享它,我发现这个实现非常酷,也许可以帮助其他人</p>


          

            
        
卓越飞翔博客
上一篇: 太阳能系统
下一篇: 返回列表
留言与评论(共有 0 条评论)
   
验证码:
隐藏边栏