【发布时间】:2012-06-18 14:16:40
【问题描述】:
我正在开发一个示例应用程序,它可以播放广播 mp3 流(为 S40 平台、CLDC 1.1、MIDP 2.0 开发)。我正在使用两个播放器切换以继续播放。
我使用以下逻辑进行流式传输。
Buffer enough chunks
Start Player1
Wait Player1 to finish
Start Player2
Wait Player2 to finish
repeat... 2
问题是,在玩家之间切换时,听众会感觉到 1 秒的沉默(间隙)。
我想知道是否可以无间隙地从服务器流式传输音频(在切换播放器时)?
这是我的启动播放器代码:
Player p = Manager.createPlayer(is, type);
p.addPlayerListener(playerListener);
p.realize();
p.prefetch();
Player2 在 Player1 完成之前预取 - 我为玩家创建了一个 FIFO 队列,当下载一个块时,我创建输入流 -> Player -> Realize() -> Prefetch() -> Push into队列。
【问题讨论】:
-
你使用 Player.prefetch() 吗?此方法“获取稀缺和专有资源并处理尽可能多的数据以减少启动延迟...”
-
是的,我正在使用 Player.prefetch(),这是我启动播放器的代码。玩家 p = Manager.createPlayer(is, type); p.addPlayerListener(playerListener); p.realize(); p.prefetch();
-
player2 是否在 player1 完成之前预取?
-
是的,我为播放器创建了一个 FIFO 队列,当下载一个块时,我创建了输入流 -> Player -> Realize() -> Prefetch() -> Push into the Queue。
-
所以,当 player1 的 playerListener.playerUpdate 事件等于 END_OF_MEDIA 时调用 player2.start(),对吧?