在libspotify的jukebox.c示例中,我计算music_delivery
回调中当前轨道的所有帧。当调用end_of_track
时,每次播放相同音轨时帧数都不同。所以在歌曲结束几秒后调用end_of_track
。每次播放的时间跨度都不同。
如何判断这首歌是否真的结束了?我是否必须在几秒钟内拍摄歌曲的持续时间并将其与采样率相乘以在歌曲结束时注意?
为什么交付的帧数超过了赛道所需的数量?为什么end_of_track
没有被称为真正的结局?或者我错过了什么?
答案 0 :(得分:0)
end_of_track
。这是关于播放的 not 信息 - 我见过的每个播放实现都在libspotify和声音驱动程序之间保留一个内部缓冲区。
根据您的计算地点,这将考虑您所看到的差异。由于音频代码不在libspotify中,因此您需要自己跟踪实际进入声音驱动程序的内容并停止播放,跳到下一首曲目或相应的任何操作。 end_of_track
基本上是为了让您知道您可以关闭从交付回调到音频代码或其他内容的任何输出流。