首页 >> 视频通信 >> 技术 >> 正文
 
基于S3C6410的视频监控系统的设计与实现[图]
http://www.cww.net.cn   2012年2月9日 15:53    

3.2 视频编码程序

视频编码部分直接采用S3C6410的MFC视频编解码模块进行视频的编码。由于采用硬件编码,编码效率非常高。同时在程序的设计方面,不用涉及具体的硬件细节,只需要通过S3C6410提供的驱动模块进行。编码部分的流程图如图4所示。

下面列出视频编码部分的关键代码。

hOpen=open(MFC_DEV_NAME,O_RDWR | O_NDELAY);

上一行代码打开MFC设备。由预定义的宏MFC_DEV_NAME指定MFC设备文件路径。

模块的初始化部分需要指定编码帧的长宽,编码帧的速率等参数。初始化的这些信息并没有直接应用于设备,而是存储于一个编码参数的结构体类型参数pCTX中,然后用下面的代码进行参数设置,也即将参数应用于实际的设备。

ioctl(pCTX->hOpen,cmd_init,&mfc_args);

编码部分用下一行代码实现。

ioetl(pCTX->hOpen,cmd_exe,&mfc_args);

在编码完成后,可以通过函数获取编码后视频帧的内存地址。函数原型为:

void*SsbSipMPEG4EncodeGetOutBuf(vold*openHandle,long*size)。

最后关闭设备文件。

close(pCTX->hOpen);

同样,对于一些流程控制部分的代码,限于篇幅,没有进行详细的描述。

3.3 网络传输程序

网络部分采用RTP实时传输协议进行视频数据的传输。RTP(Real-time Transport Protocol)是用于网络多媒体数据流的一种传输协议。为了使系统的实现更简单和稳定,采用已有的RTP库进行程序的开发。本系统选用开源的C语言库oRTP进行开发。

oRTP库是对RTP协议的一种实现,完全采用C语言编写。oRTP库使用简单易用的接口,实现了RTP协议,可以工作于Linux,Windows等多个平台。

系统网络传输模块的流程比较简单。模块首先初始化oRTP库,然后传输数据,在传输完成后释放oRTP库资源。由于模块流程较简单,在此就不列出系统的流程图,仅针对具体的实现进行说明。下面列出网络传输模块的关键代码。在传输数据之前,要对oRTP库进行一些基本的初始化操作。首先对时间戳进行初始化,采用下面的一行代码实现。

m_nUser-Timestamp=0;

然后,调用oRTP库提供的初始化接口函数:

ortp_init();

ortp_scheduler_init();

在完成基本的初始化后,创建一个新的rtp会话对象,并且设置会话对象的一些参数和属性。

session=rtp_session_new(RTP_SESSION_SENDONLY);

[1]  [2]  [3]  [4]  
来源:现代电子技术   作 者:胡世敏编 辑:高娟    联系电话:010-67110006-853
分享到新浪微博 分享到搜狐微博 分享到腾讯微博 分享到网易微博 分享到139说客 分享到校内人人网 分享到开心网 分享到QQ空间 分享到豆瓣 分享到QQ书签       收藏   打印  论坛   推荐给朋友
文章评论查看评论()
昵称:  验证码:
 
相关新闻
即时新闻
通信技术
最新方案
企业黄页
会议活动