WEB开发网
开发学院软件开发VC 利用VC++实现局域网实时视频传输 阅读

利用VC++实现局域网实时视频传输

 2010-07-06 20:43:44 来源:WEB开发网   
核心提示:2、视频帧的发送实时视频传输为了实时,要不断地将压缩好的数据发送到接受端,利用VC++实现局域网实时视频传输(2),所以在发送端创建一个线程,专门用来发送数据,等待下一次调用回调函数,这种策略称之为“停等”策略,同时主线程仍然不停的采集数据并进行压缩,发送线程的工作流程如图3所示

2、视频帧的发送

实时视频传输为了实时,要不断地将压缩好的数据发送到接受端。所以在发送端创建一个线程,专门用来发送数据。同时主线程仍然不停的采集数据并进行压缩。发送线程的工作流程如图3所示。

图3 发送线程工作流程

不妨假设创建的线程名为sendThread,核心代码实现如下:

while(1)
{
 isOK=true; //准备就绪
 SuspendThread(sendThread); //挂起线程
 isOK=false; //线程正在发送数据
 int length=frameLength; //待发数据长度
 if(length<50000) {//判断数据是否正常
  int n=0;
  int sendCount=0;
  while(length>0) {
   n=send(sock,(char*)imageBuf+sendCount,length,0); //发送数据,
   //imageBuf是指针,指向待发数据帧
   if(n==SOCKET_ERROR) //网络出现异常,则退出线程
    break;
   length-=n;
   sendCount+=n;
  }
 }
}

线程中发送的数据帧是按照上一节中的方法组建好的数据帧。这种方法能够保证正在发送的当前帧能够完整地到达接收端。

注意此线程中刚开始或者每当发送完一帧以后,线程就转到挂起状态,等待外界唤醒。这个任务由回调函数完成,在回调函数中,判定如果发送线程准备就绪(处于挂起状态),则进行图像压缩,然后唤醒线程发送压缩完的数据,否则直接跳出,等待下一次调用回调函数,这种策略称之为“停等”策略,在后面有详细介绍。

上一页  1 2 3 4  下一页

Tags:利用 VC 实现

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接