徐晔
【摘要】 iOS是由苹果公司于2007年公布的移动操作系统,最初是由iPhone使用,后陆续用于iPad、iPod touch上,其与苹果的另一款操作系统macOS一样,都属于Unix类型的商业操作系统。为实现在iOS平台上对某些场景的音视频在线监控,相关从业人员开始探究以iOS为基础的音视频监控软件的设计路径,而无线传输系统不但存在网络不稳定的问题,在音视频的编码与解码方面所用的时间也会不同,这将会造成音视频在数据处理方面的不同步,因此相关软件设计者采用实时传输协议,也就是RTP的形式来传输相关的音视频数据,而在信令控制协议方面则选择会话初始化协议,也就是SIP。文章就以iOS为基础的音视频监控软件系统设计分析、基于实时传输协议的音视频同步控制、音视频解码实现进行设计分析与探究。
【关键词】 iOS 音视频监控软件 设计分析
引言:
随着科技与信息化技术的发展,网络监控系统先后经过模拟、半数字与数字三个发展时代,并且已经逐步应用于各个行业。然而各行各业对现实场景监控的需求,除对图像信息有所要求外,也开始对声音信息有所需求,比如司法、教育、安防等行业。基于此,网络监控系统已经逐步实现从传统形式视频监控实现向基于移动终端的音视频监控转变,而iOS操作系统内置的音视频处理框架在声音播放、图像优化与渲染有着较大的优势,可以说以iOS为基础的音视频监控软件在音视频质量、内存消耗、CPU使用率等方面相较于其他系统都更加优秀。
一、以iOS为基础的音视频监控软件系统设计分析
1.1 iOS简述
iOS是一种应用于iPhone、iPad等苹果产品的手持设备操作系统,以Darwin为基础,机构从高到低可分为可接触层、媒体层、核心服务层、核心操作系统层。核心操作层主要提供硬件与应用程序沟通、安全问题处理服务;核心服务层主要包括核心服务库与以核心服务库为基础的相关高级功能;媒体层提供视频播放、音频播放与图像渲染等功能;可接触层主要包括屏幕上的加速感应、文件或相机存取、图片网页显示、文字输出与多点触摸事件处理等。软件主要用到可接触层的UIKit框架中Framework、UIGestureRecognizer等功能来实现手势操作与界面设计功能;媒体层中AV Fondation可用于音视频播放以及图像渲染;核心服务层主要用到Core Date Framework与CFNetWork Framework的相关功能,比如Core Date Framework中的网络沟通功能,CFNetWork Framework中的MVC管理,即模型Model、视图View、控制器Controller[1]。
1.2以iOS为基础的音视频监控软件系统框架
音视频监控软件系统主要包括客户端、服务端与设备端三部分,客户端的作用是提供功能完整、简单明了的操作界面,能够使音视频监控软件的各项功能得以实现;服務端包括流媒体与SIP信令两个服务器,流媒体服务器的作用是根据用户的操作来转发来自设备端相关音视频数据,SIP服务器用于音视频监控软件系统中各种信令信息的转发以及传输,同时还会负责管理系统中的终端;设备端作用主要是实现音视频监控软件的打包发送功能、压缩编码功能与相关数据采集功能。
以iOS为基础的音视频监控软件系统设计采用MVC模式,MVC是现阶段应用时间最长,且最为成功的一种软件设计模式,其对苹果Cocoa框架结构的定义有着决定性作用。MVC模式能够将复杂的各个协作对象组成的大型群组按照一定的形式分为多个有序、独立、互不干扰的子系统:控制器、视图、模型。MVC模式最主要的目的为解除视图与子系统的耦合,让其能够独立变化、各自工作。
通过MVC模式能够充分实现iOS平台客户端,处理各种后台数据,包括接收音视频相关所需数据、收发信令与其他各项操作,并且将这些后台数据处理操作与界面操作进行独立,通过控制其来进行两方的通信,这对于模块耦合程度的降低有着一定的促进作用。用户的所有动作与操作都可应用控制其传输到后台,让其进行对应的处理,后台的各项数据变化同时也会输送到控制器,让其通传到视图进而做出变化。由此可将以iOS为基础的音视频监控软件分成两个独立的模块进行设计工作:其一,后台数据处理模块,其下又包括音视频数据解码播放、服务器与客户端通信两个小模块;其二,操作界面设计模块,其包括iOS系统手势操作各项设计、能够同时包含多个视频画面的显示界面、设备信息列表画面以及登录界面。后台数据处理主要包括RTPX协议与FFmpeg,RTPX协议用于接收音视频数据,将其同步后输送至FFmpeg,利用解码器解码之后进行音视频播放。无线网络有时会不太稳定造成网络延迟,如此音视频解码也会同步延迟,从而导致音视频的抖动与延迟,若是不经过处理,直接通过FFmpeg解码播放,将会出现马赛克、视频跳帧与音频不同步,为解决这项问题,以iOS为基础的音视频监控软件决定使用以RTP为基础的音视频同步控制[2]。
二、以RTP为基础的音视频同步控制
RTP协议以传输层UDP协议为基础进行数据传输,是一种无连接形式的数据纯属,其实时性与稳定性能够最大程度的满足流媒体数据各方面的传输要求。按照RTP协议中的分装数据包中涵盖的同步源标识、时间戳、序列号、数据类型等字段,为数据流同步以及数据丢失检测提供全方位的支撑。
2.1媒体内同步
无线网络在传输数据信息的过程中出现网络不稳或者延迟,音视频解码过程中发生延迟等因素都将直接致使音视频数据抖动与延迟,若是不经过相关处理而经解码器直接解码播放,将会造成一系列问题,因此就音视频监控软件设计时可充分利用RTP协议中的序列号来进行消除,其方法是在获取RTP包序列号之后,再经过全面的比较来实现音视频数据包重新排序,其基本框架图如下图1所示
2.2媒体间同步
根据相关的音视频同步标准能够得出以下结论:音视频同步与设备性能有关的同时,还与使用人的听视觉特性有一定关联,当声音处于超前20ms与落后90ms时,音视频监控软件系统使用者一般是体会不到视听质量的相关变化,据相关研究显示,一般对人们没有影响的声音超前于图像范围为90ms,落后范围为不超过180ms,当以视频偏移状况在此范围之外时就需要进行及时的同步调整。此外,人的耳朵对声音的感知比眼睛对图像的感知更加灵敏,能够更快、更准确的感受到其中的变化。因此在进行音视频同步控制算法时可将音频的具体播放时间作为参考,得到音频实时播放时间戳,将其设为PT-A,而视频时间戳为PT-V,将音频播放时间戳与视频播放时间戳进行比较,用PT-A值减去PT-V值,若其相差在-185ms与90ms之间时,视频帧将会正常播放,若是其相差在90ms时,则视频帧存在滞后现象,此视频帧需丢弃,若是其差值在-185ms之内,则该视频帧存在超前现象,需在下次进行对比之后处理[3]。
三、音视频解码实现
音视频监控软件依托SIP信令向其服务器传输视频请求,服务器根据对应的请求向相关设备发送该条请求信息,同时在流媒体服务器中进行设备、iOS设备与媒体服務器的会话,iOS设备端在RTP协议作用下,接收到流媒体服务器传输过来的音视频流,其流程如下图2所示。
设备接收端根据RPT协议中的载荷类型字段值来进行视频数据与音频数据的区分。音频数据的编码主要通过G.711实现,先通过G.711将音视频数据解码,然后转化为PCM格式,其后通过iOS系统内部的OpenAL.framework框架来播放。视频数据的编码则通过H.264实现,H.264中包含的NAL单元在依托RTP进行传输时,因为受IP网络最大传输单元限制,需分片处理,因此在音视频解码前应将已经分片的NAL单元进行重组,使之成为完整化NAL单元,对NAL单元进行重组,其流程如下图3所示。
FFmpeg是一项免费的音视频流方案,其包括多项库文件,最常用的包括以下四种:libswscale、libavutil、libavformat与libavcodec。应用苹果终端能够实现FFmpeg的编译,并将其合理应用于iOS系统。在应用FFmpeg解码H.264时,首先需要将解码器初始化,并实现图像转换格式的转化,其后将已经完成组帧的H.264进行解码,最后将解码完成的YHV420P图像转化为能够在iOS系统设备上能够显示的UIIm-agg图像。最后通过iPhone收集进行软件的测试,再进行相应的完善即可[4]。
结语:综述,依据iOS系统优越性能与FFmpeg的音频解码性能能够为音视频监控软件的设计提供全方位的支撑,从而有效保障以iOS为基础的音视频监控软件的完善化设计,满足用户对其的相关要求。
参 考 文 献
[1]段学东,何九周.基于敏捷思想的iOS平台软件的设计与实现[J].计算机技术与发展,2018,22(9):53-58.
[2]孟利民,黄成君.网络监控系统中多媒体同步控制研究与实现[J].电声技术,2017,37(1):85-88.
[3]李校林,刘利权,张杰.基于RTP的H.264视频流实时打包传输的研究[J].计算机工程与科学,2017,24(5):168-171.
[4]何圆圆,何凯.基于FFmpeg的H.264视频解码器的研究与实现[J].电脑知识与技术,2018,35(8):8519-8521.