高分请教silverlight使用MediaElement播放字节流的问题,不够再加
分数不够再加
我现在自定义了一个StreamSource类,名称为MyMediaStreamSource,继承 MediaStreamSource
流是从另外设备上通过socket发过来的, byte[];
不考虑解码问题,这些都已OK.
创建MediaSource
MyMediaStreamSource mediasource = new MyMediaStreamSource(stream); //这个stream是刚开始接收到的流
mediaElement1.SetSource(mediasource);
mediaElement1.Play();
OK,这里都是正常的,能够播放最开始接收到的音频. 但是音频在不断接收,我需要不断的给mediasource中的stream填充.
当第二次数据过来时.
mediasource.AddStream(stream);// AddStream是自定义的一个方法, stream是第二次收到的数据
问题来了,这样再次加进去的stream, mediaElement根本无法识别到.
找到解决办法:
mediaElement1.Pause(); //先暂停
mediasource.AddStream(stream);//
mediaElement1.Play(); //再播放
这样虽然能解决问题,但是当接收数据速度过快时,哪怕是缓冲区设大一点,总感觉这不是个好办法.
每填充一次数据就需要暂停再播放一次, 因为我的应用对实时音频要求高,不允许太多延时,所以填充数据速度很快.
也就是说在不停的暂停,播放....
所以请教有经验的朋友,这里有什么好的替代方案.
即然是流播放,肯定需要不断的往里添加收到的数据流。但是好像没找到任何这种方法.