Linux 中的“播放”实用程序真的有“延迟”来停止处理非常小的文件的进程吗?

Linux 中的“播放”实用程序真的有“延迟”来停止处理非常小的文件的进程吗?

我有一个 wav 文件,持续时间:00:00:00.17(不到一秒!)

当我调用play执行它时,play执行得很好,但我的终端空闲了大约 4 秒,直到播放过程完成。

这是设计使然吗?是否可以只播放声音并在不到一秒的时间内完成?

编辑time按照建议运行@jsbillings:

 File Size: 1.89k     Bit Rate: 90.3k
  Encoding: Unsigned PCM  
  Channels: 1 @ 8-bit    
Samplerate: 11025Hz      
Replaygain: off         
  Duration: 00:00:00.17  

In:100%  00:00:00.17 [00:00:00.00] Out:1.85k [!=====|=====!]        Clip:0    
Done.

real    0m2.912s
user    0m0.004s
sys         0m0.008s

答案1

我认为这是正常的声音系统延迟(主要是缓冲)以及程序流的产物(缓冲区、同步 I/O、轮询)。正在播放的环形缓冲区可能比仅持续 00:00:00.17 秒的微不足道的样本大得多。

该延迟与样本的持续时间成正比吗?即,较长的样本是否具有较小的延迟?我希望使用更大的样本(例如一两秒)来减少此类延迟。

声音可能是非常棘手的东西,尤其是当你深入研究细节时。如果我上面所说的是真的(关于较长的样本大小),我会说这对于您使用的任何声音子系统来说都是正常的。

我自己使用pulseaudio来处理低延迟的东西(比如游戏中的枪),但你描述的问题与低延迟并不真正相关;这更多的是软件等待硬件告诉它何时播放完整个缓冲区的问题,该缓冲区比它包含的样本大。

如果我有什么地方说错了,请指出来。谢谢 :)

相关内容