双11狂欢大促

盲盒赢 定制羽绒服

开启惊喜盲盒,抽取你的专属好礼

— 惊喜奖品抢先看 —

高分请教silverlight使用MediaElement播放字节流的问题,不够再加

sundotLei sundotLei 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
分数不够再加

我现在自定义了一个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(); //再播放

这样虽然能解决问题,但是当接收数据速度过快时,哪怕是缓冲区设大一点,总感觉这不是个好办法.

每填充一次数据就需要暂停再播放一次, 因为我的应用对实时音频要求高,不允许太多延时,所以填充数据速度很快.

也就是说在不停的暂停,播放....

所以请教有经验的朋友,这里有什么好的替代方案.

即然是流播放,肯定需要不断的往里添加收到的数据流。但是好像没找到任何这种方法.





...全文
评论 8
收藏 已收藏
分享
返回顶部
sundotLei
WPF/Silverlight 8,757 成员 12,031 内容