SDL2音频无法正确播放

时间:2019-08-14 00:36:09

标签: go sdl

我正在使用SDL2绑定在Golang中制作游戏:https://github.com/veandco/go-sdl2

问题是,我添加了代码来播放音频,当我尝试播放时,音频声音混乱了。您可以说,由于声音的持续时间,它实际上在播放某些内容,并且它是在正确的事件触发的。但是声音本身就混乱了。

这是我的代码:

package SDL

import (
    "io/ioutil"
    "log"

    "github.com/veandco/go-sdl2/mix"
)

var AUDIOS map[string]*mix.Chunk

func init() {
    AUDIOS = make(map[string]*mix.Chunk)
    AUDIOS["point_normal"] = LoadAudio("sound/effects/point_normal.wav")
}

func LoadAudio(path string) *mix.Chunk {
    if err := mix.OpenAudio(44100, mix.DEFAULT_FORMAT, 2, 4096); err != nil {
        log.Fatalf("%s\n", err.Error())
    }


    // Load entire WAV data from file
    data, err := ioutil.ReadFile(path)
    if err != nil {
        log.Fatalf("%s\n", err.Error())
    }

    // Load WAV from data (memory)
    chunk, err := mix.QuickLoadWAV(data)
    if err != nil {
        log.Fatalf("%s\n", err.Error())
    }
    defer chunk.Free()
    return chunk
}

func CloseAudio() {
    mix.CloseAudio()
}

这是我尝试播放的声音:

https://opengameart.org/sites/default/files/point_normal.wav

有人可以看到我的代码有什么问题吗?

1 个答案:

答案 0 :(得分:1)

我不知道您正在使用的声音库,但这些行对我来说可疑:

defer chunk.Free()
return chunk

返回的“块”将调用Free()。那真的是您想要的吗?