按键上的低延迟声音

时间:2012-02-23 13:07:44

标签: audio video gstreamer

我正在为我的儿子写一个应用程序(我是一个gui第一个计时器),他有自闭症。上半部分有一个视频播放器,底部有一个文本输入区域。当输入字母时,会产生声音来模仿视频中的单词。

本网站上有关于在按键上播放声音的其他帖子,使用gstreamer作为系统调用。我也尝试过libcanberra,但两者似乎都有明显的声音延迟。我可以用python或C编写应用程序,但很可能在C中至少完成一些。

我还想提一下,gstreamer正在播放视频部分。我试图创建两个gstreamer实例,以避免昂贵的系统调用,但音频实例似乎在调用时会杀死应用程序。

如果有人有关于创建更快响应声音的任何提示,我会非常感激。

1 个答案:

答案 0 :(得分:4)

您可以将原始音频样本直接上传到PulseAudio,因此使用堪培拉的以下功能将无法解码和(可能保存)额外的开关:

http://developer.gnome.org/libcanberra/unstable/libcanberra-canberra.html#ca-context-cache

下一个ca_context_play()将使用它。

但是,您在这种情况下遇到的最大问题(同步视频播放)是音频设备可能配置了PulseAudio的大延迟(正常播放时最多为1 / 2s或更多)。向libcanberra提交错误以支持LOW_LATENCY标志可能是合理的,因为它目前不会尝试最小化声音事件的延迟。那会很棒。

GStreamer pulseink也可能获得低延迟(它具有一些属性),但我担心它不会像libcanberra一样轻量级,并且你将无法缓存样本。理想情况下,GStreamer还可以学习缓存样本,或预先填充PulseAudio ......