none
silverlight播放视频流 RRS feed

  • 问题

  • 初次接触silverlight,想请教一下,在silverlight中:

    1、数据库中存有很多视频文件(注:不是视频文件的地址,而是二进制数据),在silverlight中如何播放这些数据?有没有相关的资料或例子可以借鉴?

    2、有一台摄像头,可由A电脑连接,silverlight如何连接到A电脑去播放摄像头的实时视频呢?
    2009年11月5日 7:54

全部回复

  • yin327你好!
    1.目前silverlight的MediaElement支持流的解码,不过你要看看sl目前所支持的编,目前的sl3支持高清的h264编码.你可以通过MediaElement.SetSource去指定sl支持的流媒体。
    2. 目前的sl3还不支持直接的摄像头硬件支持,你可以通地流直播软件实现sl看到指定的网络摄像头。其中一的种做法就是你可以通过安装一个Expression Encoder3,然后启用实时编码,视频设备选中你的摄像头,然后可以通过访问你的这台电脑(如:mms://XXXXX:8080)即可以看到这个摄像头的实时影像。接着你可以通过设定silverlight中的MediaElement的souce为以上的mms地址即可在sl中看到实时的摄像头影像。

    希望你的回答对有所帮助。
    如果你认为我解答了你的问题,请把我的回复设为答案。谢谢


    jaocb lai
    2009年11月9日 6:36
    版主
  • 感谢黎东海的解答。
    对于问题1,我试过设定mediaelement.setsource,但是mediaelement显示画面为绿色,也不播放,断点查看MediaElement的状态为closed,不知道为什么。我是通过socket传送的byte[]数据。顺便问一个问题,通过socket传送数据,怎么知道什么时候是接收完数据了呢?以前没接触过这个,一头雾水。看有人说在传输的时候设定什么head,或者是把文件大小之类的信息,连同数据本身一起传递,但不知道怎么入手。
    问题2,mms协议这个东西要怎么设置,才能播放视频呢,以前没碰过视频播放这一块。

    2009年11月9日 7:13
  • 1.转为byte[]再setsource到mediaElement我还没有试过成功的,我估计那是和编码有关的,所以不能直接播放,这个我不敢确定,只是我个人的猜测!
    2.转为mms不是用设置任何东西的,只要你mms源在线即可以先mediaElement播放,并且支持缓存。
    3.socket什么时候传完这个问题我估计你可以遇到粘包的情况,
    做法一般有两种,
    a)使用分隔符,也就是说你定义一个符号去做结速符。当服务器端收到这个符号后将确认为消息接收完毕,这样就说明一条消息完整接收完了。
    b)使用自定义的消息,自己定义一个类,其中有一些标记,例如:消息长度,消息开始位置,消息体,等一系列属性。然后服务端不断把接收到的消息合成,当条件完全达消息结构的定义的时候就把消息提取出来。

    如果您觉得对您有帮助,请在“是否有帮助”点“是”;如果你觉得回复很满意,请“标记为已解答”
    2009年11月21日 11:55
    版主
  • 我在接收方接收到是的byte[],再将数组转化成流,再setsource(流)
    请问,怎么才能在向流里写的同时,播放器也能即时播放?
    我这方案不行的话,还有什么别的好方案吗?
    感谢所有好的建议!

    2009年12月1日 7:41
  • 这个我现在还没的掌握到确切可能的方法,最近由于sl4的出现我开始着手在sl4实现语音视频聊天功能的研究,广播是通过一个叫RAW的编码作为网络传输和回放。希望对你有所帮助。
    如果您觉得对您有帮助,请在“是否有帮助”点“是”;如果你觉得回复很满意,请“标记为已解答” http://FunSL.com
    2009年12月5日 14:27
    版主