基于wince6.0的流媒体播放《二》

2011-06-20

在基于wince6.0的流媒体播放《一》中链接jrtplib.lib并编译通过了,接下来正式进入编程阶段。

从流媒体服务器的功能需求看,服务器需要打开流媒体文件,并通过rtp协议将数据发送到客户端,由于RTP/RTCP协议已经被封装成jrtplib.lib,我们只需要调用jrtplib的接口就可以了。

 

打开流媒体文件不需要多说,重点是通过rtp协议发送数据,jrtplib本身是有sample的,虽然这个sample对于流媒体播放没有任何帮助,但起码他演示了如何通过jrtplib发送rtp数据。

在网上有很多关于jrtplib的sample的介绍说明(话说也就sample的说明了,其它真正跟流媒体播放相关的资料几乎没有。。)

如:关于开源的RTP——jrtplib的使用(2)

rtp数据收发就不再多说了,网上很多

主要是如何用rtp控制并播放流媒体数据。

 

要实现流媒体播放,首先需要实现收发数据的控制,我们可以自定义一个数据结构来进行控制

enum _MSGTYPE{
 QUEST_DATA,
 QUEST_LENGTH,
 REPLY_DATA,
 REPLY_LENGTH
};
enum _MSGSUBTYPE {
 FRAMESTART,
 FRAME,
 FRAMEEND,
 OTHER
};

typedef struct _CTRLMSG
{
 _MSGTYPE msgType;
 _MSGSUBTYPE msgSubType;
 LONGLONG lPos;
 DWORD  dwBytesToRead;
 DWORD  dwLength;
}CTRLMSG,*PCTRLMSG;

 

在流媒体数据之前加上CTRLMSG来控制流媒体的收发。

由client主动读取流媒体数据,Type控制指令,Pos控制读取(播放)的点,dwBytesToRead控制要读取的长度,dwLength控制要发送的数据长度。

这样就实现了流媒体数据的发送,client接收到数据后就可以根据需要自由处理。

你可能感兴趣的:(基于wince6.0的流媒体播放《二》)