在J2ME中将缓冲区旋转到播放器的替代方法?

zil*_*n01 6 java streaming mmapi java-me

由于许多J2ME手机的(非常烦人)限制,音频文件在完全下载之前无法播放.因此,为了播放实时流,我不得不一次下载块,并构建ByteArrayInputStreams,然后我将其提供给玩家.

这很有效,除了每次流结束时需要大约1/4秒的烦人间隙并且需要新的间隙.有没有办法解决这个问题,或上面的问题?

Rob*_*oli 0

EDIT2:或者你可以看看这似乎正是你想要的:http://java.sun.com/javame/reference/apis/jsr135/javax/microedition/media/protocol/DataSource.html

我将创建两个 Player 类,并确保在开始播放它们之前我已收到足够的块。然后我将开始通过播放器一播放第一个块,并将第二个块加载到播放器二中。然后我将使用 TimeBase 类来跟踪已经过去了多少时间,当我知道第一个块将结束时(您应该知道每个块必须播放多长时间),然后我将开始通过第二个播放器播放第二个块,将第三个块加载到第一个块中,依此类推,直到没有更多的块可以播放。

这里的关键是正确使用 TimeBase 类来知道何时进行转换。我认为这应该消除块之间恼人的 1/4 秒间隙赌注。我希望这能起作用,如果能的话请告诉我,因为听起来真的很有趣。

编辑:Player.prefetch() 在这里也可以用于减少延迟。