视频网络传输机制的设计(续)

原创 2006年06月09日 11:05:00

       线程对系统内存的开支比进程要少,在视频Server端,采用两个线程在后台分别完成采集处理和网络传输的工作,两个线程的协调工作靠struct videodev *dev,所以在程序设计中,必须把这个数据结构设为全局变量。

      首先看一下上述数据结构中对两个线程工作协调相关的参数:

       unsigned char* pFramebuffer:mmap返回的数据指针,指向采集进来的原始数据;

       unsigned char* ptframe[4]:指向四个buffer缓冲数组,存放已压缩完成的数据;

       int lock[4]:对四个ptframe的标示,0表示可以写入视频压缩数据,1表示可以发送到网络,两者互斥。

       接下来描述一下整个代码运行的过程:

       1. 初始化:1.1 分配ptframe的大小,其大小为:sizeof(struct frame_t)+width*height*3;其中struct frame_t 描述了压缩数据的各个特征参数,如w*h,size,format等;  1.2 将2个frame的数据采集保存在数据结构videombuf中,这两个frame的指针分别为pFramebuffer和pFramebuffer+offset,offset为一个frame的大小;1.3 对4个lock置0;

       2. 采集开始:具体见上一篇文章,启动采集线程,做一个big loop,简单说:如果没有网络发送的线程在跑,采集线程不停的把pFramebuffer和pFramebuffer+offset指向的数据压缩后依次存放到ptframe+sizeof (struct frame_t)的位置,大小为frame压缩后的大小;注意数据压缩并存放到ptframe+sizeof (struct frame_t)时必须上线程互斥锁;

        3. 网络传输的线程:线程打开之前sock套接口都已经打开,传到线程函数的参数为accept后产生的新的socket描述符(假设传输协议为标准TCP/IP协议),传输过程相对比较简单,从prframe[0]开始查看,查看ptframe[0]是否写完,ok则将lock[0]置1;根据struct frame_t的size参数,发送ptframe[0]+sizeof (struct frame_t)数据到网络,发送完成后解锁,然后继续下一个ptframe[],and so on...............

To be continue for RTP/RTCP...................

Android 短视频采集之视频断点拍摄、回删功能的实现方法总结

本文介绍了实现类似美拍、秒拍的段短视频断点录制功能的两种方案,并给出了其优劣比较。...
  • u011495684
  • u011495684
  • 2017年12月27日 11:59
  • 88

jw player 6 断点续播 seek()

在做项目的时候  需要 记住用户的播放历史
  • sessionsong
  • sessionsong
  • 2014年08月09日 17:30
  • 3151

rtp c++ 网络视频传输

linux 下基于jrtplib库的实时传送实现一、RTP 是进行实时流媒体传输的标准协议和关键技术实 时传输协议(Real-time Transport Protocol,PRT)是在 Intern...
  • perfectpdl
  • perfectpdl
  • 2010年10月13日 23:26
  • 3260

简单视频网络传输客户端

简单视频网络传输客户端 #include #include #include #include #include #include #include #inc...
  • lqrensn
  • lqrensn
  • 2012年10月18日 12:33
  • 418

游戏机制笔记——设计游戏机制(一)

一、概况 业内人士往往用术语“游戏机制”而不是“游戏规则”。游戏规则是对玩家隐藏的。机制涵盖了影响游戏运作的一切要素。游戏机制必须足够详尽,并明确说明所有必须细节。以便程序员能够清晰明确的将它们转化...
  • u012447563
  • u012447563
  • 2015年10月27日 11:03
  • 906

android实时视频网络传输方案总结

转:http://blog.csdn.net/nomousewch/article/category/823687 转:http://www.cnblogs.com/skyseraph/archiv...
  • hjwang1
  • hjwang1
  • 2013年09月06日 16:18
  • 2190

MapReduce(一)

分布式并行编程框架特点:    MapReduce将复杂的、运行于大规模集群上的并行计算过程高度地抽象到了两个函数:Map和Reduce•编程容易,不需要掌握分布式并行编程细节,也可以很容易把自己的程...
  • lhc2207221755
  • lhc2207221755
  • 2016年12月19日 22:33
  • 757

支持流媒体传输的网络协议

(1)实时传输协议RTP。    RTP(Real-timeTransportProtocol)是用于Internet 上针对多媒体数据流的一种传输协议。RTP被定义为在一对一或一对多的传 输情...
  • xjbclz
  • xjbclz
  • 2016年07月07日 21:06
  • 522

H264编解码算法在网络视频传输中的应用

http://www.docin.com/p-80029120.html?docfrom=rrela
  • wishfly
  • wishfly
  • 2017年02月17日 10:41
  • 991

通信工具的音视频的网络传输实现

当下比较流行的即时通信工具,比如MSN,QQ等都实现了视音频的功能,通过视频,音频,我们可以更好的和朋友通过网络进行沟通,本文通过DirectShow技术模拟QQ实现了视频和音频的采集,传输,基本实现...
  • formiss
  • formiss
  • 2011年09月05日 15:42
  • 2224
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:视频网络传输机制的设计(续)
举报原因:
原因补充:

(最多只允许输入30个字)