Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/video/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Audio 按键时的低延迟声音_Audio_Video_Gstreamer - Fatal编程技术网

Audio 按键时的低延迟声音

Audio 按键时的低延迟声音,audio,video,gstreamer,Audio,Video,Gstreamer,我正试图为我的儿子写一个应用程序(我是gui新手),他患有自闭症。上半部分有一个视频播放器,下半部分有一个文本输入区域。当输入字母时,会产生声音来模仿视频中的单词 在这个网站上还有其他关于按键播放声音的帖子,使用gstreamer作为系统调用。我也尝试过Libbanberra,但两种声音之间似乎都有明显的延迟。我可以用python或C编写应用程序,但可能至少会用C编写一部分 我还想提到的是,视频部分是由gstreamer播放的。我试图创建两个gstreamer实例,以避免昂贵的系统调用,但音频实

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

在这个网站上还有其他关于按键播放声音的帖子,使用gstreamer作为系统调用。我也尝试过Libbanberra,但两种声音之间似乎都有明显的延迟。我可以用python或C编写应用程序,但可能至少会用C编写一部分

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


如果有人对如何创建更快响应的声音有任何建议,我将不胜感激。

您可以直接将原始音频样本上传到PulseAudio,这样就不需要解码,也可以通过使用堪培拉提供的以下功能来保存额外的开关:

下一个ca_context_play()将使用它

但是,在这种情况下(同步视频播放),您将遇到的最大问题是音频设备可能配置为使用PulseAudio的大延迟(正常播放时高达1/2秒或更多)。向libcanberra提交一个bug以支持低延迟标志可能是合理的,因为它目前并不试图将声音事件的延迟降至最低。那太好了


GStreamer pulsesink可能也会获得较低的延迟(它有一些特性),但我担心它不会像libcanberra那样轻量级,例如,您将无法缓存样本。理想情况下,GStreamer还可以学习缓存样本,或预填充PulseAudio…

我只想提几件事,以防以后有人无意中发现此线程。首先,您可以有两个gstreamer实例,我的代码中有一个巨大的错误。第二,我能够通过在一次录音中记录所有声音,然后来回寻找它们,并在每个声音后设置gstreamer暂停,从而产生低延迟的声音。再次感谢elmarco的发帖。快速评论以回答您的另一个已结束的问题:终端发送和接收字符。通常,终端只显示接收到的字符。当终端打印到纸卷上时,这就是他们所能做的。被称为控制字符的特殊字符没有显示:相反,它们导致终端打印机托架返回到行的开头,或进纸,或退格。显示终端定义特殊的字符序列,称为“转义序列”,因为它们通常以“Esc”字符开头。当接收到转义序列时,终端将其解释为用于其他功能的命令,如将光标移动到屏幕上的特定位置,或者更改屏幕某一部分中显示的文本以反转视频。每个终端品牌都将定义自己的一组转义序列。