客户端是一段为客户提供本地服务的计算机程序,与服务器不同,主要完成用户 的一些本地需求,例如,向服务器发送请求,向服务器发送命令,接收服务器发送的 视频流等等。客户端执行时,需要与服务端互相配合运行,才能正常工作。在这个因
特网已经走进千家万户,融入我们每一分钟的生活的时代,客户端也无处不在,我们 日常浏览万维网使用的网页浏览器就是其中之一。客户端通常都不是单独运行的程 序,它们常常是建立在一些数据库或者文件的基础之上的,在这种情况下,就需要网 络中有相应的服务器和服务程序来提供相应的服务。在这样的背景下,客户机和服务 器之间需要经常通信连接,来让其正常运行,稳定的通信连接就必不可少了。
本文讨论的客户端人机交互设计分为对 RTMP 视频流的解码和播放,依据数据库 完成的登录,基于 TCP 方式完成的控制命令和文件的传输三大部分。其中基于 FFmpeg 的对 H。264 标准下的 RTMP 视频流的解析是最大的难点。
H。264 是一种比较先进的高度压缩数字视频编解码器标准[15]。解码器主要功能 部件分为解析器部分,熵解码部分,宏块解码部分-帧内宏块,宏块解码部分-帧间宏 块和环路滤波部分。在解码器内部使用大量的函数,函数间的相互调用也极为繁杂。 函数可分为普通内部函数,解析函数(用于解析 SPS、PPS 等信息),熵解码函数(读 取码流数据并且进行 CABAC 或者 CAVLC 熵解码),解码函数(通过帧间/内预测、DCT 反变换等方法解码压缩数据),环路滤波函数(进行滤波,去除方块效应),汇编函 数(做过汇编优化的函数)。
1.3 课题所做工作及论文内容安排
本课题首先搭建了简单的硬件平台,一个 Lenovo Easy Camera 作为视频输入,用 来进行简单的图像采集,一台 PC 机用于数据处理,人机交互及结果显示,一台运行 Adobe Media Sever 的 PC 作为流媒体服务器,在 Visual Studio 2013 开发环境下编 写 C++代码,开发了能够满足远程机器人实验系统要求的客户端。课题所做的主要工 作如下:
(1)借助开源库 FFmpeg,SDL,Adobe Media Sever,Adobe flash Player 完成 了对 RTMP 视频流的解码,显示,传输和接收,实现并展示出了 RTMP 视频流的传输, 完成实时监控的功能。
(2)利用对 TCP 包封装和处理函数的重新编写,通过自定义标志位的方法,完成 了对命令和数据的识别和接收,达到客户端能够发送服务器能识别的指令以及能够上 传文件到服务器的功能要求。
(3)在开发的网页中使用 ADODB 控件连接数据库,达到依据数据库完成登录等操 作,并在客户端中通过 web browser 组件将这些网页调用出来。
论文章节安排如下:第二章主要介绍 FFmpeg 对 H。264 标准下的 RTMP 视频流的解
码原理,并提及了使用 SDL 实现的视频的显示;第三章重点阐述了对 TCP 数据和处理 的自定义及其原理;第四章着重说明了 ADODB 以及 web browser 控件的原理和使用理 由;第五章相当于本课题所编写的应用程序的使用说明书。最后,总结全文。
2 解码器解码原理
2。1 H。264 标准
H。264 是新一代编码效率很高的视频压缩格式[18]。其有着:低码率,图像质量 高,容错能力强,网络适应性强的重大优点,而且是当今的主流,所以实验中选择这 一标准编码[1,2,8]。
2。2 实时消息传输协议 RTMP
RTMP 指的是实时消息传输协议,是一种关于实时通信的网络协议。该协议族基于 TCP,不仅包括 RTMP 基本协议还包含 RTMPT/RTMPS/RTMPE 等多种变种[4]。 RTMP远程机器人实验系统的设计与实现客户端人机交互设计(3):http://www.youerw.com/jisuanji/lunwen_89356.html