我在C中开发了一个依赖于soundmixer插件的应用程序。我的目标是触发事件的声音。由于反应性至关重要,我希望让gstreamer管道保持活动状态,并在audiomixer元素上动态插入新声音(在混音器的新接收器上应用偏移之后)。
它工作得非常好,除了每次插入新声音时,声音的前200毫秒(或多或少)会被截断。
我一直在查看代码,就我所见,一切看起来都很好(声音插件没有错误,也没有应用运行时间/偏移量。)
所以我尝试了一个带gst-launch的简单管道,并在调音台上应用了偏移量:
gst-launch-1.0 filesrc location=/etc/pa/doublclick_aigu_grave.wav ! wavparse ! audiomixer sink_0::offset=1000000000 ! alsasink
事实证明,此管道也会截断声音的开头。当我使用--gst-debug = alsa:5激活日志时,我在声音开始之前收到了一堆日志:
alsa gstalsasink.c:1054:gst_alsasink_write:<alsasink0> written 441 frames out of 441
这里发生了什么?