0

在 libspotify 的 jukebox.c 示例中,我计算music_delivery回调中当前轨道的所有帧。end_of_track每次播放同一首曲目时,帧数都不同。end_of_track歌曲结束几秒钟后调用。每次播放的时间跨度都不同。

如何确定歌曲是否真的结束了?我是否必须以秒为单位计算歌曲的持续时间并将其乘以采样率以在歌曲结束时小心?

为什么交付的帧数超过了轨道所需的帧数?而为什么end_of_track不叫真正的结束呢?或者我错过了什么?

4

1 回答 1

0

end_of_track当 libspotify 完成为该轨道传送音频帧时调用。这不是关于播放的信息——我见过的每个播放实现都在 libspotify 和声音驱动程序之间保留一个内部缓冲区。

根据您计算的位置,这将解释您所看到的差异。由于音频代码在 libspotify 之外,您需要自己跟踪声音驱动程序的实际运行情况并停止播放,跳到下一个曲目或您需要执行的任何相应操作。end_of_track基本上是为了让您知道您可以关闭从交付回调到音频代码或类似内容的任何输出流。

于 2014-01-02T17:56:16.593 回答