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);
上面的代码创建了一个新的rtp会话对象,接下来用下面的函数对session进行参数和属性的设置。
rtp_session_set_scheduling_mode(); rtp_session_set_blocking_mode(); rtp_session_set_remote_addr();rtp_session_set _payload_type();
上面的函数依次对rtp会话对象的调度管理、阻塞模式、发送目的地址和负载类型进行设置。限于篇幅,略去了调用参数。
发送数据调用库函数:
rtp_session_send_wlth_ts();
在发送数据完成后,销毁rtp会话对象,然后释放oRTP库的资源。
rtp_session_destroy(session);
ortp_exit();
在网络传输模块中需要注意的是,由于RTP协议对数据包的大小是有限制的,所以如果传输的视频帧过大,需要进行分包传输处理。
4 结语
本文在基于S3C6410微处理器的开发平台上,实现了一种基于MPEG-4编码的视频监控系统。利用S3C6410内部集成的MFC模块进行视频编码,实现了很高的编码效率。最后,通过RTP协议进行网络数据传输。采用模块化的设计之后,使得系统的网络数据传输部分与具体的有线或者无线传输方式无关。文章在描述各部分实现流程的基础上,详细地说明了关键部分的代码实现。实验测试中,数据编码效率很高。采用了MPEG-4编码方式,在正常网络情况下,传输视频质量较好,系统运行稳定。实验证实了系统的可行性较高。
关于我们 | 广告服务 | 会员服务 | 媒体报道 | 营销方案 | 成功案例 | 招聘服务 | 加入我们 | 网站地图 | 在线帮助 | 联系我们 |
京ICP证080169号京ICP备09003304号-2京公网安备11010502034458号电子公告服务专项备案
网络文化经营许可证 [2019] 5229-579号广播电视节目制作经营许可证 (京) 字第13229号出版物经营许可证新出发京批字第直200384号人力资源服务许可证1101052014340号
Copyright © 2022 Bjx.com.cn All Rights Reserved. 北京火山动力网络技术有限公司 版权所有