C&C++   发布时间:2022-04-03  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了c – ALSA:如何判断声音播放完毕的时间大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一个c对象接受声音请求并使用ALSA播放它们.有线程处理声音请求.一些声音是周期性的,并在将wav文件内容写入ALSA库后重新安排.有没有办法在发布所有数据时发现?函数snd_pcm_writei是一个阻塞写入函数,但它并不一定意味着该文件已被播放.

我正在虑的一个选项是在播放每个声音文件调用snd_pcm_drain,然后在播放下一个文件调用snd_pcm_prepare.这会是一个很好的解决方案吗?或者效率低下?

更新:“排水解决方案”似乎有效,但效率不高.这些调用需要一段时间才能返回(可能会清理一些资源)并增加程序的延迟.当我连续播放许多小文件时,延迟最佳.每个文件之间可以听到几秒钟的沉;这是snd_pcm_drain正在执行.

解决方法

可能不正确(我在这个领域做了很少的工作),但是从这里查看ALSA文档: http://www.alsa-project.org/alsa-doc/alsa-lib/pcm.html

看起来snd_pcm_status_t保存状态信息,该信息应该指示流当前是否正在处理数据.

大佬总结

以上是大佬教程为你收集整理的c – ALSA:如何判断声音播放完毕的时间全部内容,希望文章能够帮你解决c – ALSA:如何判断声音播放完毕的时间所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。