分类: 3G技术研究板块 |
J2me流媒体技术实现(教会大家简单的流媒体过程)
第一步:
声明两个Player;
第二步:
HttpConnection开始向服务器请求该audio文件的第一部分字节,我们定这次读取的字节数为18KB;
第三步:
等第一部分数据到位后,Player A开始realize和prefetch,并开始播放;
第四步:
在Player A播放同时,(18KB的amr数据可以播放10秒钟),HttpConnection继续请求第二部分数据(假设GPRS每秒钟传输3KB,那么18KB需要传输6秒,算上前后通讯损失的时间,应该不会超过10秒钟);
第五步:
第二部分数据到位后,假设Player A还没有播放完(这需要调整你的每一部份数据字节数来使得假设成立),那么将数据喂给Player B让它realize和prefetch;
第六步:
Player A播放完后,得到事件通知,于是让Player B开始播放。
如此往复。
我自己在nokia
7610上测试了一下,我上面说的前提被证明是可行的:“你的手机必须允许同时实现player的多个实例进入prefetched状态(预读取声音流)”。真实Nokia手机确实可以如此:
两个线程中各自有一个Player,都开始做m_player.realize();和m_player.prefetch();,然后等候。
先播放线程1的Player,等她播放完后,
通过
声明两个Player;
第二步:
HttpConnection开始向服务器请求该audio文件的第一部分字节,我们定这次读取的字节数为18KB;
第三步:
等第一部分数据到位后,Player A开始realize和prefetch,并开始播放;
第四步:
在Player A播放同时,(18KB的amr数据可以播放10秒钟),HttpConnection继续请求第二部分数据(假设GPRS每秒钟传输3KB,那么18KB需要传输6秒,算上前后通讯损失的时间,应该不会超过10秒钟);
第五步:
第二部分数据到位后,假设Player A还没有播放完(这需要调整你的每一部份数据字节数来使得假设成立),那么将数据喂给Player B让它realize和prefetch;
第六步:
Player A播放完后,得到事件通知,于是让Player B开始播放。
如此往复。
两个线程中各自有一个Player,都开始做m_player.realize();和m_player.prefetch();,然后等候。
先播放线程1的Player,等她播放完后,
通过
来通知第二个线程的Player播放。
这样是可以的。
这样是可以的。