首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 媒体动画 > CAD教程 >

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

2012-03-09 
高分请教silverlight使用MediaElement播放字节流的问题,不够再加分数不够再加我现在自定义了一个StreamSou

高分请教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(); //再播放
   
  这样虽然能解决问题,但是当接收数据速度过快时,哪怕是缓冲区设大一点,总感觉这不是个好办法.
   
  每填充一次数据就需要暂停再播放一次, 因为我的应用对实时音频要求高,不允许太多延时,所以填充数据速度很快.
   
  也就是说在不停的暂停,播放....
   
  所以请教有经验的朋友,这里有什么好的替代方案.

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


 


 

[解决办法]
没做过这种,友情帮顶..
[解决办法]
这个很强大。我用flash一直没搞出来
[解决办法]
没怎么用过,不过我看了MediaStreamSource的类有几个保护的方法可以重载

ReportSwitchMediaStreamCompleted
和SwitchMediaStreamAsync你看看在这里能管用么
[解决办法]
Silverlight的MediaStreamSource是异步的,预先缓存是播放大文件必须使用的。记得在微软官方看到过相关的例程,你可以下载看看:

http://archive.msdn.microsoft.com/ManagedMediaHelpers
[解决办法]

探讨
Silverlight的MediaStreamSource是异步的,预先缓存是播放大文件必须使用的。记得在微软官方看到过相关的例程,你可以下载看看:

http://archive.msdn.microsoft.com/ManagedMediaHelpers

[解决办法]
你试试流位置行不行,就是在添加新流时,记住最后的流位置,添加后将流位置移动至上次位置+1

热点排行