lihaoyun6
262 天前
因为 macOS 默认给 AirPlay 的 buffer 设置的比较大, 这样可以保证在网络出现瞬时波动的情况下也能流畅的播放
你可以理解为水管给一个水箱灌水, 水箱上再接一个水龙头. 这个水龙头就是 HomePod, 水箱就是 buffer.
从水管开始出水到水龙头能够出水, 需要等待一小段时间(等水箱灌满到出水线), 这几秒钟就是我们说的延迟.
如果水箱比较大, 虽然延迟也会比较大, 但是万一上游水管突然停水十几秒, 下游的水龙头却不会受到影响, 因为水箱里的存水足够水龙头使用一段时间, 挺到水管来水为止
可如果水箱非常小的话, 虽然水龙头出水很灵敏(上游一来水, 下面马上就能出水), 但万一上游水管停水或者流量出现波动, 下游的水龙头也会马上停水或者波动
所以稳定性和低延迟一直是互斥的两条特性, 想要稳定性就要把 buffer 增大, 但 buffer 增大就会导致实时性下降. 所有的高音质低延迟协议其实都一直在打这场"攻坚战", 尽可能的同时提升稳定性和实时性.
综上所述, 苹果只是保守了一点, 把 AirPlay 协议的默认 buffer 设置的比较大, 且不允许用户自己调整而已. 本质上是为了保证播放稳定性做出的妥协. 而虽然 windows 上的第三方 AirPlay 软件可以把 buffer 设置的很低来换取更高的实时性, 却也是靠牺牲了潜在稳定性换来的. 取舍不同而已