在WPF中,实现方式如下:
由厂家提供设备的SDK开发包,通过C#封装为类库以P/Invoke的方式调用,以播放通道实时视频为例。
NET_DVR_RealPlay(int lUserID, ref NET_DVR_CLIENTINFO lpClientInfo);
第一个参数为登录句柄,第二个参数是一个结构体,包括了设备的一些信息。
public struct NET_DVR_CLIENTINFO
{
public IntPtr hPlayWnd;
public int lChannel;
public int lLinkMode;
public string sMultiCastIP;
}
其中最主要的就是hPlayWnd窗口句柄,lChannel设备通道号。
调用这样一个函数就可以在指定的窗口上播放视频了。
不知道如果以Silverlight来作为客户端应该怎么实现同样的功能呢!?
附注:SDK中有回调能够得到流数据,但是是以厂家的编码格式,如果用厂家的播放库解码后是YUV数据,已经实现通过WCF转发YUV流数据到Silverlight端用MediaElement播放,但是问题是YUV数据量传输太大,而如要想在WCF服务端对数据进行再次编码再传输服务器压力又会很大,此种方式行不通。
不知道大家有没有更好的思路和想法呢!?欢迎多多指教
就没人说说想法么!?
Rolex watch www.chinamakereplica.com
关注中。。。