0

我的问题与名为“snd_pcm_hw_params”的 libasound 函数有关,该函数与播放声音文件的代码有关。我是 ALSA 编程的新手。使用我在互联网上找到的一个编码示例,我编写了一个小程序来播放一个 7 秒的 .wav 文件到默认声卡。当我连续多次运行此代码时,偶尔(但不总是)对 snd_pcm_hw_params 的必要调用以将先前填充的 snd_hw_params_t 结构写入驱动程序,我得到一个错误代码 -2 (ENOENT)。我不知道这意味着什么,也不知道如何处理或防止它。我的代码只是发出一条错误消息并退出。通常,如果我再次运行它,代码运行良好。对我来说很好,但最终,这段代码应该交给非程序员使用,我想要么防止错误,或在不涉及所述非编程用户的情况下在内部解决它。我注意到用户应该能够通过单击按钮来导致程序提前中止,当这种情况发生时,我的代码调用 snd_pcm_drop,然后调用 snd_pcm_close。如果程序运行完成,并播放了所有 7 秒的 wav 文件,则它通过调用 snd_pcm_drain 结束,然后调用 snd_pcm_close。任何帮助或建议将不胜感激。:) 任何帮助或建议将不胜感激。:) 任何帮助或建议将不胜感激。:)

4

0 回答 0