CN101505365B - 一种基于网络电视机顶盒的实时视频监控系统的实现方法 - Google Patents

一种基于网络电视机顶盒的实时视频监控系统的实现方法 Download PDF

Info

Publication number
CN101505365B
CN101505365B CN2009100246570A CN200910024657A CN101505365B CN 101505365 B CN101505365 B CN 101505365B CN 2009100246570 A CN2009100246570 A CN 2009100246570A CN 200910024657 A CN200910024657 A CN 200910024657A CN 101505365 B CN101505365 B CN 101505365B
Authority
CN
China
Prior art keywords
video
mpeg
frame
function
real
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
CN2009100246570A
Other languages
English (en)
Other versions
CN101505365A (zh
Inventor
王汝传
黄益贵
韩志杰
徐小龙
李玲娟
吴敏
支萌萌
李致远
徐鹤
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Nanjing Post and Telecommunication University
Nanjing University of Posts and Telecommunications
Original Assignee
Nanjing Post and Telecommunication University
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Nanjing Post and Telecommunication University filed Critical Nanjing Post and Telecommunication University
Priority to CN2009100246570A priority Critical patent/CN101505365B/zh
Publication of CN101505365A publication Critical patent/CN101505365A/zh
Application granted granted Critical
Publication of CN101505365B publication Critical patent/CN101505365B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Two-Way Televisions, Distribution Of Moving Picture Or The Like (AREA)
  • Closed-Circuit Television Systems (AREA)

Abstract

一种基于网络电视机顶盒的实时视频监控系统的实现方法是一种在网络电视(IPTV)机顶盒上实现实时视频监控功能的方法,基于双核开发平台TMS320DM6446(达芬奇数字平台)上开发的IPTV对等计算机顶盒所提供的增值扩展功能,本发明提供一种在基于DM6446平台开发的IPTV机顶盒上实现家用实时视频监控系统的一种基于网络电视机顶盒的实时视频监控系统的实现方法,解决其视频捕获设备驱动的读写操作,DSP MPEG-4编码接口的调用,RTP(Real-timeTransport Protocol)数据包的传输与控制,MPEG-4解码的实现,基于SDL的多媒体界面显示。该方案具有新颖性、灵活性、易扩展性、易操作性和低成本性等优点。

Description

一种基于网络电视机顶盒的实时视频监控系统的实现方法
技术领域
本发明是一种在网络电视(IPTV)机顶盒上实现实时视频监控功能的方法,基于双核开发平台TMS320DM6446(达芬奇数字平台)上开发的IPTV对等计算机顶盒所提供的增值扩展功能,属于视频监控应用领域。
背景技术
本监控系统服务器端所依赖的硬件平台是TI公司提供的面向视频开发领域的达芬奇数字平台(DaVinci)TMS320DM6446,该平台是拥有ARM(Advanced RISC Machines)和DSP(DigitalSingnal Processor)双CPU(Central Processing Unit)内核的高端嵌入式开发平台,主频高达720MHZ。该平台上拥有丰富的硬件接口如USB(Universal Serial Bus)、网卡、IDE硬盘接口(Integrated Drive Electronics)等等。
IPTV(Interactive Personality TV)即交互式网络电视,是一种利用宽带有线电视网,集互联网、多媒体、通讯等多种技术于一体,向家庭用户提供包括数字电视在内的多种交互式服务的崭新技术。可以选择享受IPTV服务的方案有1)计算机,2)IPTV机顶盒+普通电视机。本系统提供基于网络机顶盒+普通电视机的IPTV服务。IPTV既不同于传统的模拟式有线电视,也不同于经典的数字电视。因为,传统的和经典的数字电视都具有频分制、定时、单向广播等特点;尽管经典的数字电视相对于模拟电视有许多技术革新,但只是信号形式的改变,而没有触及媒体内容的传播方式。
由上可知,IPTV机顶盒主要用于在普通电视机上享受IPTV服务,将计算机网络中的音视频流以及其它增值服务引入到只有模拟电视机的家庭,除了将数字信号转换为模拟信号的传统机顶盒功能外,更为主要的是基于MontaVista Linux操作系统的机顶盒可以支持各种ARM和DSP CPU运算能力可及的服务,如电子商务,股票交易,视频聊天以及本专利所阐述的实时视频监控等功能。我们在该平台上实现的IPTV机顶盒,采用了集中目录式的P2P(Peer-to-Peer)对等计算技术,这种技术可以有效的减轻服务器端的计算压力,提高媒体流传输的速度,同时让机顶盒空闲的运算资源得到充分的利用。
本系统采用MPEG-4(Moving Picture Expert Group)作为视频的编解码方案。MPEG-4与MPEG-1和MPEG-2相比,更加注重多媒体系统的交互性和灵活性,支持4800bps-64000bps的低速率传输,利用很窄的带宽,通过帧重建技术,压缩和传输数据,以求以最少的数据获得最佳的图像质量。采用Object Based方式压缩,压缩倍数为450倍(静态图像可达800倍),分辨率输入可从320X240到1280X1024。主用用于在国际互联网络上或移动通信设备(例如移动电话)上实时传输音/视频信号。MPEG-4标准将众多的多媒体应用集成于一个完整的框架内,旨在为多媒体通信及应用环境提供标准的算法及工具,从而建立起一种能被多媒体传输、存储、检索等应用领域普遍采用的统一数据格式。
MPEG-4的编码理念是:MPEG-4标准同以前标准的最显著的差别在于它是采用基于对象的编码理念,即在编码时将一幅景物分成若干在时间和空间上相互联系的视频音频对象,分别编码后,再经过复用传输到接收端,然后再对不同的对象分别解码,从而组合成所需要的视频和音频。这样既方便我们对不同的对象采用不同的编码方法和表示方法,又有利于不同数据类型间的融合,并且这样也可以方便的实现对于各种对象的操作及编辑。例如,我们可以将一个卡通人物放在真实的场景中,或者将真人置于一个虚拟的演播室里,还可以在互联网上方便的实现交互,根据自己的需要有选择的组合各种视频音频以及图形文本对象。
MPEG-4系统的一般框架是:对自然或合成的视听内容的表示;对视听内容数据流的管理,如多点、同步、缓冲管理等;对灵活性的支持和对系统不同部分的配置。
MPEG-4的关键技术主要包括:1)视频对象提取技术、2)VOP(Video Object Plane,视频对象平面)视频编码技术、3)视频编码可分级性技术、4)运动估计与运动补偿技术。
当前网络上传输音视频等多媒体信息主要有两种方案,一种是基于TCP(TransmissionControl Protocol)或UDP(User Datagram Protocol)的下载,另一种是流式传输。传统的下载由于网络带宽的限制,音视频文件所需要的存储容量大,导致下载时间很长,流式传输则把音视频等信息由服务器向客户端计算机连续、实时传输,用户不必等到整个文件全部下载完毕,而只需要经过少量的缓冲时间即可以播放,当音视频等多媒体文件在客户端播放的时候,文件的剩余部分将在后台从服务器端继续下载。流式传输不仅减少了播放音视频所需要的等待时间,而且可以减少客户端所需要的缓冲大小。流式媒体在播放前并不需要在本地生成文件,只需要在开始的时候在内存缓冲部分内容,然后边传输边播放。实现流式传输有两种方案:顺序流式传输和实时流式传输。顺序流式传输是顺序下载,在下载文件的同时用户可观看在线媒体,在给定时刻,用户只能观看已经下载的那部分,而不能跳到还未下载的前头部分,顺序流式传输不能够像实时流式传输那样在传输期间根据用户的连接的速度做调整;实时流式传输是指保证媒体信号带宽与网络连接匹配,使媒体可被实时观看到。实时流式传输总是实时传输,特别适合现场事件。所以在本监控系统中选用实时流式传输技术作为从机顶盒(服务器端)到客户端传输流媒体数据的方案。
综上所示,整个视频监控系统主要包括在机顶盒服务器端调用V4L2(Video for Linux)视频设备驱动读取摄像头捕获的原始视频数据,在与机顶盒直接相连的普通电视机上显示出来,或者经过DSP的MPEG-4视频编码器生成MPEG-4帧,然后将MPEG-4帧打包成RTP数据包发送至客户端,在客户端通过RTP协议接收到实时视频流数据包,还原成MPEG-4帧,经过MPEG-4解码器,采用SDL(Simple DirectMedia Layer)显示出来。其系统框图如图1所示。
发明内容
技术问题:本发明的目的是提供一种在基于DM6446平台开发的IPTV机顶盒上实现家用实时视频监控系统的一种基于网络电视机顶盒的实时视频监控系统的实现方法,解决其视频捕获设备驱动的读写操作,DSP MPEG-4编码接口的调用,RTP(Real-time Transport Protocol)数据包的传输与控制,MPEG-4解码的实现,基于SDL的多媒体界面显示。该方案具有新颖性、灵活性、易扩展性、易操作性和低成本性等优点。
技术方案:本发明的方法引入V4L2库,用于linux下视频捕获设备的驱动;引入DSP MPEG-4API(Application Programming Interface),用于机顶盒端DSP编解码MPEG-4视频帧;引入JRTP库,用于RTP数据流的传输与控制;引入XviD库,用于用户端MPEG-4视频帧的解码;引入SDL库,用于Linux的下多媒体界面显示。
基于网络电视机顶盒的实时视频监控系统的实现方法为:
步骤1).进行需求分析,对实时视频监控系统需要完成的功能进行分析,并生成需求分析文档,
步骤2).按照步骤1的分析文档设计功能模块,对各功能模块进行详细设计,生成各个模块之间的逻辑关系和功能说明文档,
步骤3).按照步骤2的功能说明文档,设计与实现服务器端各个功能模块,包括用户验证模块、V4L2(视频捕获设备驱动)的读写模块、在与机顶盒相连接的电视上显示原始捕获数据的模块,调用数字信号处理器DSP的视频流的编码格式MPEG-4视频编码器对原始捕获数据编码压缩,生成MPEG-4视频帧,将MPEG-4视频帧发送给实时流传输协议RTP发送线程,
步骤4).按照步骤2的功能说明文档,设计与实现实时流传输协议RTP打包发送线程,对视频编码压缩线程发送过来的MPEG-4视频帧大小判断,对大于1400字节的MPEG-4视频帧拆分打包成RTP包,对小于等于1400字节的MPEG-4视频帧直接打包成RTP包,然后调用JRTP库的RTPPacket类(RTP包类)的SendPacket函数(发送包函数)将RTP包通过网络发送出去,
步骤5).按照步骤2的功能说明文档,设计与实现客户端的RTP包接收进程,在客户端,RTP包接收进程从RTPSession类(RTP会话类)派生的自定义类STBRTPSession(机顶盒RTP会话类)实现RTPSession的虚函数OnPollThreadStep()(RTP包接收轮询线程),在该函数中依次循环调用函数GetNextPacket()(接收下一个数据包函数)接收RTP数据包,对收到的RTP包的时间戳判断,如果收到的RTP包具有相同的时间戳,则合并RTP包的负载数据,还原成拆分之前的MPEG-4视频帧,将MPEG-4视频帧放入命名管道,
步骤6).按照步骤2的功能说明文档,设计与实现客户端的视频帧解码与播放进程,在该进程中创建两个线程,一个线程负责从命名管道中取出MPEG-4视频帧,传递给mpeg4的编解码库即XviD库的xvid_decore函数即mpeg4的解码主函数,解码MPEG-4视频帧,另一个线程负责从xvid_decore函数中取出MPEG-4视频帧解码后的图像,然后调用SDL多媒体界面显示绘制函数将其显示出来,循环进行MPEG-4的解码和SDL的界面显示绘制就可以流畅的播放接收到的实时视频监控数据流。
有益效果:本发明提出了一种基于网络电视机顶盒的实时监控系统的实现方案,通过对实时监控系统的功能与需求进行详细的划分,采用模块化设计,提出并实现了本套监控系统。技术的关键点是不仅满足了在机顶盒上实现实时视频监控功能的各项功能需求,还具有清晰度可调、安全可靠、延迟小、丢包率低、投资少等特性。下面我们给出具体说明:
完善的功能:通过对实时视频监控系统的功能与需求的划分,我们将其划分成三部分:视频监控服务器部分、网络传输部分、视频接收与显示部分,这样对每部分再进行详细划分,按照模块定义编写代码,同时由于本套系统是基于IPTV机顶盒,所以我们充分利用了IPTV机顶盒已经拥有的软硬件资源,比如达芬奇数字平台的的MPEG-4编解码库、MontaVista Linux操作系统等,我们还利用了许多优秀的开源库帮助我们减少代码的编写,比如V4L2、JRTPLIB、XviD、SDL等。这样用户在客户端输入用户名、密码、IP地址向服务器发起会话、服务器通过用户的合法验证后,将从V4L2驱动程序取得的视频数据送到机顶盒的DSP MPEG-4编码器,编码后的MPEG-4视频帧,通过RTP打包发送到客户端,客户端调用MPEG-4解码程序解码后利用SDL绘制到显示界面上。
模块化设计:整个实时视频监控系统按照功能需求分成数个模块,模块之间分工明确,耦合性低,可复用性高,便于系统的升级和重新配置,如用户验证模块、视频编码模块、视频传输模块、视频接收模块、视频解码模块、视频显示模块等。
良好的系统扩展性:由于系统模块之间采用的是一种松藕合的层次化设计,系统模块之间的通信机制完全采用层次化的结构,因此可以方便的添加新的功能,也可以很容易的升级现有的功能,如客户端可以在PC机的Linux、Windows、Unix等平台实现、也可以在支持网络数据接收的高性能PDA、3G手机等平台实现,所以该系统拥有良好的可扩展性。
高度的可靠性和稳定性:通过对实时视频监控系统的单元测试,集成测试以及整个机顶盒实时监控系统的系统测试表明该套系统运行状况良好,占用系统资源少,拥有良好的容错机制以及灾难恢复能力,能够根据网络状况动态调整编码帧的清晰度,适应不同级别网络速度。具有延迟小、丢包率低等优点。
投资小:由于本监控系统基于已有的IPTV机顶盒,用户只需要额外添加一个摄像头便可以轻松拥有远程监控家居环境、防火防盗等功能。具有较高的市场推广潜质和商业应用价值。
附图说明
图1是视频监控系统的系统框图。
图2是机顶盒实时视频监控系统的体系结构示意图。
图3是实时视频监控机顶盒服务器端的线程交互图。
图4是RTP打包与拆包的流程图。
图5是MPEG-4视频帧接收与显示的框图。
具体实施方式
一、体系结构
网络机顶盒实时视频监控系统的体系结构如图2所示,从该图中我们可以看到,在机顶盒监控服务器端,构建基于MontaVista Linux嵌入式操作系统上的软件体系架构,在底层采用V4L2驱动摄像头捕获原始视频数据,Video for Linux是Linux中的标准视频设备驱动接口,现在已经是V4L2了,V4L2除了支持更多的视频采集设备之外,还增加了音频采集设备、FM收音设备、视频输出设备等,V4L2定义了一套用于处理Linux上多媒体设备的标准的应用程序编程接口,通过这些接口,可以执行打开,读写,关闭等操作,具有“linux下一切设备皆是文件”的共性,方便使用者调用。我们采用mmap(Map device memory into Application addressspace)的方式将内核的设备内存地址空间映射到用户的地址空间,这样进程就可以像访问普通的内存空间一样对设备进行访问,不必再调用read(),write()等函数访问设备,在实际开发中,由于TI公司已经封装好这些接口,我们只需要调用videobuf_mmap_mapper()函数来间接调用mmap()函数。使用这种方式系统的效率比较高,因为系统直接读写设备内存中的数据,而不需要进行任何数据的拷贝。
我们对从设备缓冲中读取的原始视频数据可以进行两方面的操作,一方面是显示在与机顶盒相连的普通电视机上。只要把原始视频数据拷贝到Linux显示设备framebuffer中就可以显示出来。帧缓冲(framebuffer)是Linux为显示设备提供的一个接口,把显存抽象后的一种设备,他允许上层应用程序在图形模式下直接对显示缓冲区进行读写操作。这种操作是抽象的,统一的。用户不必关心物理显存的位置、换页机制等等具体细节。这些都是由Framebuffer设备驱动来完成的。另一方面是调用开发板上提供的DSP MPEG-4编码接口将原始视频数据压缩编码成MPEG-4数据帧,TI公司在DaVinci数字平台上将DSP的编解码功能封装成Codec Engine(编解码引擎),Codec Engine是一系列用于表示和运行xDAIS(eXpress DSP AlgroithmInterface Standard for Digital Media)算法的应用编程接口,支持Video、Image、Speech、Audio四类编解码算法。取四个单词的首字母VISA表示xDM编解码器算法接口标准。CodecEngine有两类APIs,一类叫Core Engine APIs(核心引擎应用编程接口),用于实现Codec Engine的打开和关闭以及对CPU和内存使用情况的统计等。Codec Engine另一类APIs就是前面所述的VISA APIs,这类API用于具体的视频、图像、语音、音频的编解码算法。
为了将编码后的MPEG-4数据帧实时发送到客户端,我们采取前面所述的实时流式传输方案,我们知道,采用TCP传输具有高可靠性,但是由于三步握手带来的延迟和过多交互数据使其不适合发送大量的实时视频数据,而UDP传输虽然具有速度快,交互数据少等优点,但是UDP本身不对传输提供任何可靠保证,导致UDP数据包在传输过程中可能发送丢失,亦可能发生数据包的无序到达,使之也不适合传输大量的实时视频数据,在这样情况下,专为发送大量实时音视频等多媒体数据的RTP协议应运而生,RTP充分体现了应用层分帧这一现代通信协议的设计思想,允许其用户了解、调整甚至制定连续媒体的打包方案,该协议被广泛用于VoIP(Voiceover Internet Protocol)、视频等实时媒体的传送。RTP协议包括RTP和RTCP(RTP控制协议)。在本系统中,我们采用JRTP库作为RTP传输协议的实现方案,最新的JRTP是开源的完全遵循RFC3550标准设计的面向对象的RTP库,采用C++语言编写而成,支持RFC3551等标准文档所定义的音视频实时流传输。
在客户端将收到的RTP包解包,提取出负载的MPEG-4视频帧,放入接收缓冲中,然后调用MPEG-4解码器解码视频帧,我们采用开源的XviD库作为MPEG-4解码器,XviD库是最新的MPEG-4编解码库,支持多种编解码格式,除了最原始单重估定码流压缩(1-pass CBR)与解压缩之外,XviD还提供了包括:单重质量模式动态码流压缩与解压缩、单重量化(Quantization)模式动态码流压缩与解压缩、和包括外部控制和内部控制的两种双重(2-pass)动态码流压缩与解压缩模式。为了将解码后的MPEG-4数据显示出来,我们采用了一个在Linux下开源的多媒体图形界面库libSDL。SDL是一套跨平台的多媒体底层存取库,它主要目的是为跨平台提供一个统一的编程接口,为应用程序开发特别是代码移植提供便利。SDL是由C语言写成的,以库的形式提供给使用者,并且提供大量其他语言的编程接口,主要用于游戏、游戏开发工具、模拟器、样本演示、多媒体应用等。
二、方法流程
该部分详细说明发明内容各个部分的设计与实现:
(1)服务器端的设计与实现
通过对基于网络电视机顶盒的实时监控系统各个部分的详细划分,在服务器端我们主要创建四个线程来完成相关工作,如图3所示,我们可以看到这四个线程分别为1)Capture线程,2)Video线程,3)LocalDisplay线程,4)SendPacket线程。在阐述四个线程的交互作用之前,我们先阐述一个重要的函数ioctl(),ioctl是设备驱动程序中对设备的I/O通道进行管理的函数。所谓对I/O通道进行管理,就是对设备的一些特性进行控制,例如串口的传输波特率、马达的转速等等。它的函数原型如下:
int ioctl(int fd,ind cmd,…);
其中fd就是用户程序打开设备时使用open函数返回的文件标示符,cmd就是用户程序对设备的控制命令,后面的省略号是一些补充参数。ioctl函数是文件结构中的一个属性分量,就是说如果驱动程序提供了对ioctl的支持,用户便可以在程序中使用ioctl函数控制设备的I/O通道。我们的V4L2提供对ioctl的良好支持,所以我们主要通过ioctl函数对设备驱动发送控制命令。
下面我们阐述四个线程的交互过程:Capture线程使用ioctl函数发送一个VIDIOC_DQBUF命令给设备驱动,从VPSS前端设备驱动获取raw captured buffer(原始捕获数据缓冲)队列,其中VPSS是达芬奇数字平台的一个执行多相滤波的硬件,用于实现视频缩放。为了在编码的同时显示视频帧的预览,我们调用达芬奇数字平台开发包的API函数FifoUtil_put()给LocalDisplay线程传递一个指向captured buffer的指针,然后Capture线程从video线程取得一个空的raw buffer。用已经移除重叠部分后的数据填充它,这个buffer随后被发送到Video线程用于编码。Video线程使用FifoUtil_get()从SendPacket线程取得I/O buffer,并将编码后的视频数据写回I/O buffer。当LocalDisplay线程使用VPSS resizer模块和Rszcopy_execute()函数拷贝captured raw buffer到FBDev帧缓冲设备中显示时,Video线程正使用VIDENC_process()调用DSP core对相同的captured buffer进行编码。当DSP的video编码器完成编码,captured buffer随后被写入I/O buffer,I/Obuffer被FifoUtil_put()发送到SendPacket线程。SendPakcet线程将I/O buffer打包成RTP数据包通过网络发送出去。
(2)网络传输的设计与实现
在网络传输中使用RTP协议可以设定MPEG-4的码流速率,清晰度也可在一定的范围内作相应的变化,这样便于用户根据自己对录像时间、传输带宽和清晰度的不同要求进行不同的设置,大大提高了系统使用时的适应性和灵活性。也可采用动态帧测技术,动态时快录,静态时慢录,从而减少平均数据量,节省存储空间。而且当在传输有误码或丢包现象时,MPEG-4受到的影响很小,并且能迅速恢复。
由于在网络带宽比较小的时候,数据丢帧现象比较严重,这对图像质量有很大的影响。我们采用拆帧再发送的方法,来降低丢帧率。当接收端接收到数据后,把属于同一视频帧的数据组合起来。由于目前常用的以太网的MTU(最大传输单元)为1500字节,因此设置RTP包的有效负载上限为1400字节,我们知道RTP协议报头大小为固定的12字节,所以RTP包大小为12字节-1412字节,这样就保证了RTP包在网络中传输尽可能的不被拆开。
在图4中我们可以很容易地看清RTP发送和接收的流程,在服务器端,SendPacket线程对buffer中的MPEG-4帧的大小先进行判断,如果大于1400字节则需要先拆分成小于等于1400字节的多个数据包再打包,如果不大于1400字节则直接打包,然后使用RTPSession类的方法SendPacket函数将RTP包通过网络发送出去;在用户端,从RTPSession类派生的自定义类STBRTPSession实现RTPSession的虚函数OnPollThreadStep(),在该函数中依次循环调用函数GetNextPacket()来接收RTP数据包,然后使用ProcessRTPPacket(const
RTPSourceData &srcdat,const RTPPacket &rtppack)函数处理接收到的每一个RTP包,在ProcessRTPPacket()函数中,根据时间戳从所接收的数据包中提取MPEG-4视频帧,将具有相同时间戳的RTP数据包中的负载数据提取出来合并还原成打包之前的MPEG-4视频帧,然后写入FIFO(First In,First Out)中,接收成功后,调用函数GotoNextSourceWithData()开始接收下一个RTP包。
(3)客户端的设计与实现
如图5所示,我们开发Linux平台下的客户端需要加载MPEG-4的解码库XviD,多媒体界面显示所需要的SDL库,还需要用到FIFO来完成不相关进程间的通信。FIFO通常又称为命名管道,是一种特殊类型的文件,在文件系统中以文件名的形式存在,从而允许不相关的进程访问同一个FIFO,在Linux中调用mkfifo()函数创建一个命名管道,设置为阻塞工作模式,保证写进程在管道满时阻塞,读进程在管道空时阻塞。这样在客户端,RTPClient进程专职负责RTP包的接收与处理,将网络状况等控制信息通过RTCP反馈到STB Monitering Server,并将处理好的MPEG-4视频帧放入FIFO中。
DisplayClient进程创建两个线程,一个线程负责读取FIFO中的MPEG-4视频帧。为了消除网络延迟等原因造成的视频图像抖动,先进行一定数量的视频帧缓冲,即是将一定数量的MPEG-4视频帧先拷贝到一预定义大小的buffer中,待填满后,再将buffer发送给XviD的MPEG-4解码函数xvid_decore(),xvid_decore()循环取出buffer中存放的每一帧数据,对收到的MPEG-4视频帧进行解码。XviD的所有解码工作都是由xvid_decore实现的,xvid_decore函数定义如下:
int xvid_decore(void*handle,int opt,void*param1,void*param2);
其中opt为解码所要做的操作,opt有以下三种操作:(1)XVID_DEC_CREATE:创建一个新的解码器,则param1为XVID_DEC_PARAM,handle为新编码的句柄;(2)XVID_DEC_DECODE:解码一帧,则param1为XVID_ENC_FRAME;(3)XVID_DEC_DESTROY:关掉解码器,不返回任何句柄。
对于另一个线程SDLDisplay,从xvid_decore中提取出MPEG-4视频帧解码后图像的参数,获取图像的宽度XDIM和高度YDIM,填充到SDL的函数SDL_CreateYUVOverlay(int width,intheight,Uint32 format,SDL_Surface*display),同时设置图像的编码格式,在这里我们使用XviD库中定义的SDL_YV12_OVERLAY宏,该宏表示图像采取的是YV12的编码格式。我们使用out_buffer指向解码后的buffer。为了在显示界面上绘制出该图像,需要获取图像的YUV参量的位置,如下所示:
outy=out_buffer;
outu=out_buffer+XDIM*YDIM;
outv=out_buffer+XDIM*YDIM*5/4;
其中outy、outu、outv分别指向YV12图像中Y、U、V参量的读取位置。提取出图像的YUV数据后,就可以在屏幕上按照像素点逐点描绘出来。这样便完成单视频帧的显示。循环做解码MPEG-4帧和图像绘制显示就可以流畅的播放接收到的实时视频监控数据流。
图1是视频监控系统的系统框图。从图中我们可以看到:1)摄像头,用于视频数据的捕获;2)模拟电视机,用于在本地显示未经编码压缩的原始视频数据;3)网络,用于传输RTP数据包;4)计算机、PDA、3G手机等,用于接收RTP包,提取MPEG-4视频帧,解码并显示出来。
图2是机顶盒实时视频监控系统的体系结构。在图中我们可以看到本体系结构分成二部分:第一部分是机顶盒服务器端的层次划分,包括:1)V4L2视频硬件驱动,用于读写摄像头捕获的视频数据;2)MontaVisat Linux操作系统,提供系统支持;3)本地显示,用于在与机顶盒相连接的普通电视机上显示捕获的原始视频数据;4)DSP视频编码器,用于将原始的视频数据编码压缩成MPEG-4视频帧;5)RTP打包,用于将MPEG-4视频帧打包发送。第二部分是客户端的层次划分,包括:1)RTP解包,用于接收RTP包,提取出MPEG-4视频帧;2)XviD解码,用于解码MPEG-4视频帧;3)SDL,用于将解码后的MPEG-4视频帧显示出来;4)Linux操作系统,提供系统支持。
图3是实时视频监控机顶盒服务器端的线程交互图。我们详细的规划并设计了机顶盒端为完成MPEG-4视频帧的传输所需要的主要线程,并在图中详细地阐述了各个线程之间的交互过程。
图4是RTP打包与拆包的流程图。从图中我们可以看到在发送端,对大于1400字节的MPEG-4视频帧拆分打包发送。在接收端对于相同时间戳的RTP包合并接收。
图5是MPEG-4视频帧接收与显示的框图。从图中可以看到RTPClient进程负责接收RTP包,提取出MPEG-4视频帧,放入命名管道FIFO中。DisplayClient进程创建两个线程,一个线程负责从命名管道FIFO提取并进行MPEG-4视频帧的解码,另一个线程负责使用SDL对解码后的视频帧进行显示。
在机顶盒端先启动视频监控的服务器,这个进程作为一个守护进程循环等待网络请求事件的到来,当客户端通过网络将用户名和密码发送给服务器,通过了合法用户认证后,服务器将捕获的MPEG-4视频帧发送到客户端,具体实现方式如下:
1实时视频数据的捕获与发送
服务器进程先创建四个线程:Capture线程、LocalDisplay线程、Video线程、SendPacket线程。使用Capture线程完成从视频硬件的驱动V4L2中提取捕获的原始视频数据,将数据发送一份给LocalDisplay线程,用于在电视机上直接显示捕获的原始视频数据;发送另一份拷贝给Video线程,用于调用DSP的MPEG-4视频编码器,对捕获的原始视频数据编码压缩,生成MPEG-4视频帧,然后将编码后的MPEG-4视频帧发给SendPacket线程,SendPacket线程负责将编码后的视频帧通过网络发送出去。
2实时流的传输与接收
服务器的SendPacket线程首先对MPEG-4视频帧的大小进行判断,对超过1400字节的视频帧拆分打包成RTP包,对不超过1400字节的视频帧直接打包成RTP包,然后调用JRTP库中RTPSession类的SendPacket()函数将RTP包通过网络发送出去,在用户端,RTP包接收进程RTPClient使用OnPollThreadStep()函数循环接收RTP包,对接收到的RTP包的时间戳进行分析,合并相同时间戳的RTP的负载,还原原来拆分的MPEG-4视频帧,将视频帧填充到FIFO命名管道中。RTPClient还需要响应服务器端的RTCP请求,将网络的状况,丢包率等信息实时的反馈到服务器端,用于动态调控服务器端RTP包的发送。
3MPEG-4的解码与显示
DisplayClient进程创建两个线程,一个线程负责从命名管道FIFO中读取MPEG-4帧,发送给MPEG-4解码库的xvid_decore()函数,解码收到的MPEG-4视频帧。另一个线程负责将MPEG-4视频帧解码后的图像调用SDL多媒体界面绘制库函数绘制到显示界面上,完成单帧的显示。循环做解码MPEG-4帧和图像绘制显示就可以流畅的播放接收到的实时视频监控数据流。

Claims (1)

1.一种基于网络电视机顶盒的实时视频监控系统的实现方法,其特征在于通过拆分与合并MPEG-4视频帧、进程间管道通信两个步骤实现视频数据流RTP包的发送与接收,该方法步骤为:
步骤1).进行需求分析,对实时视频监控系统需要完成的功能进行分析,并生成需求分析文档,
步骤2).按照步骤1)的分析文档设计功能模块,对各功能模块进行详细设计,生成各个模块之间的逻辑关系和功能说明文档,
步骤3).按照步骤2)的功能说明文档,设计与实现服务器端各个功能模块,包括用户验证模块、视频捕获设备驱动V4L2、在与机顶盒相连接的电视上显示原始捕获数据的模块,视频编码压缩线程调用视频处理模块DSP的API接口对原始捕获数据编码压缩,生成MPEG-4视频帧,将MPEG-4视频帧发送给实时流传输协议RTP发送线程,
步骤4).按照步骤2)的功能说明文档,设计与实现实时流传输协议RTP打包发送线程,对视频编码压缩线程发送过来的MPEG-4视频帧大小判断,对大于1400字节的MPEG-4视频帧拆分打包成RTP包,对小于等于1400字节的MPEG-4视频帧直接打包成RTP包,然后调用JRTP库的RTPPacket类即RTP包类的SendPacket函数即发送包函数将RTP包通过网络发送出去,
步骤5).按照步骤2)的功能说明文档,设计与实现客户端的RTP包接收进程,在客户端,RTP包接收进程从JRTP库的RTPSession类派生的自定义类STBRTPSession即机顶盒RTP会话类实现RTPSession的虚函数OnPollThreadStep,在该函数中依次循环调用函数GetNextPacket接收RTP包,对收到的RTP包的时间戳判断,如果收到的RTP包具有相同的时间戳,则合并RTP包的负载数据,还原成拆分之前的MPEG-4视频帧,将MPEG-4视频帧放入命名管道,
步骤6).按照步骤2)的功能说明文档,设计与实现客户端的视频帧解码与播放进程,在该进程中创建两个线程,一个线程负责从命名管道中取出MPEG-4视频帧,传递给mpeg4的编解码库即XviD库的xvid_decore函数即mpeg4的解码主函数,解码MPEG-4视频帧,另一个线程负责从xvid_decore函数中取出MPEG-4视频帧解码后的图像,然后调用SDL多媒体界面显示绘制函数将其显示出来,循环进行MPEG-4的解码和SDL的界面显示绘制就可以流畅的播放接收到的实时视频监控数据流。
CN2009100246570A 2009-02-25 2009-02-25 一种基于网络电视机顶盒的实时视频监控系统的实现方法 Expired - Fee Related CN101505365B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN2009100246570A CN101505365B (zh) 2009-02-25 2009-02-25 一种基于网络电视机顶盒的实时视频监控系统的实现方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN2009100246570A CN101505365B (zh) 2009-02-25 2009-02-25 一种基于网络电视机顶盒的实时视频监控系统的实现方法

Publications (2)

Publication Number Publication Date
CN101505365A CN101505365A (zh) 2009-08-12
CN101505365B true CN101505365B (zh) 2012-05-23

Family

ID=40977413

Family Applications (1)

Application Number Title Priority Date Filing Date
CN2009100246570A Expired - Fee Related CN101505365B (zh) 2009-02-25 2009-02-25 一种基于网络电视机顶盒的实时视频监控系统的实现方法

Country Status (1)

Country Link
CN (1) CN101505365B (zh)

Families Citing this family (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8566856B2 (en) * 2009-12-01 2013-10-22 International Business Machines Corporation Video stream measurement method and system
CN101790085A (zh) * 2010-03-26 2010-07-28 南京邮电大学 一种基于达芬奇技术的家庭视频监控系统的实现方法
CN101977306B (zh) * 2010-11-01 2013-07-10 深圳市同洲电子股份有限公司 双向视频监控的方法及系统
CN102158762B (zh) * 2011-03-15 2013-03-27 深圳市酷开网络科技有限公司 一种基于sdl的电视机用户接口界面的实现方法及系统
CN102427564B (zh) * 2011-11-18 2015-01-14 百视通网络电视技术发展有限责任公司 基于iptv的时间戳实现方法及系统
CN102665120A (zh) * 2012-04-18 2012-09-12 佛山市兴知源数字技术有限公司 网络电视监视刻录一体机
CN102843550A (zh) * 2012-08-10 2012-12-26 青岛海信宽带多媒体技术有限公司 基于机顶盒的远程视频监控方法及系统
CN102857788A (zh) * 2012-08-30 2013-01-02 西可通信技术设备(河源)有限公司 视频质量诊断系统及方法
CN103856750A (zh) * 2012-11-30 2014-06-11 中国科学院沈阳自动化研究所 一种适用于海底长期观测的视频采集、存储方法及装置
CN103108216B (zh) * 2013-01-09 2016-08-03 国家广播电影电视总局广播科学研究院 广播电视业务数据处理方法及装置
CN103179195B (zh) * 2013-02-28 2016-06-29 河南有线电视网络集团有限公司 页面访问认证方法及系统
CN103491368A (zh) * 2013-09-13 2014-01-01 天脉聚源(北京)传媒科技有限公司 一种视频处理方法、装置及系统
CN103686072B (zh) * 2013-11-15 2015-09-23 北京视联动力国际信息技术有限公司 视联网视频监控方法和系统,协转服务器和视联网服务器
CN103929681B (zh) * 2014-04-09 2017-02-22 安徽超远信息技术有限公司 一种提升低速网络中rtp视频流处理效率的方法
CN105338341B (zh) * 2014-08-12 2019-06-21 杭州海康威视系统技术有限公司 还原实时视频码流的方法及装置
CN105578244A (zh) * 2016-01-13 2016-05-11 北京数码视讯科技股份有限公司 一种节目播放方法、装置和系统
CN107707921B (zh) * 2017-07-14 2020-05-19 湖北航天技术研究院总体设计所 一种动态图像处理系统
CN109756704A (zh) * 2018-11-30 2019-05-14 安徽清新互联信息科技有限公司 一种嵌入式音视频监控系统的进程间通信方法及系统
CN111818373A (zh) * 2020-07-16 2020-10-23 海信视像科技股份有限公司 图像处理方法、装置及系统
CN113709525A (zh) * 2021-08-26 2021-11-26 程艳华 一种多元通信方法及通信系统
CN117915161A (zh) * 2024-01-23 2024-04-19 北京流金岁月传媒科技股份有限公司 一种iptv异地组网系统、方法、电子设备及介质

Also Published As

Publication number Publication date
CN101505365A (zh) 2009-08-12

Similar Documents

Publication Publication Date Title
CN101505365B (zh) 一种基于网络电视机顶盒的实时视频监控系统的实现方法
CN109510990B (zh) 图像处理方法及装置、计算机可读存储介质、电子设备
US10567809B2 (en) Selective media playing method and apparatus according to live streaming and recorded streaming
Lu et al. Virtualized screen: A third element for cloud–mobile convergence
US10979785B2 (en) Media playback apparatus and method for synchronously reproducing video and audio on a web browser
CN101827242B (zh) 一种基于网络电视机顶盒的可视电话系统实现方法
US20090322784A1 (en) System and method for virtual 3d graphics acceleration and streaming multiple different video streams
CN111064973A (zh) 一种基于ipv9的直播系统
US11128903B2 (en) Systems and methods of orchestrated networked application services
CN111064972A (zh) 一种基于ipv9的视频直播控制方法
CN105262825A (zh) 基于h.265的spice云桌面传输和展现方法及系统
KR101986995B1 (ko) 웹 브라우저 상에서 비디오와 오디오를 동기화하여 재생하는 미디어 재생 장치 및 방법
CN101389020A (zh) 一种扩展流媒体播放设备解码能力的方法
CN112954376A (zh) 一种视频播放方法及显示设备
CN115243074A (zh) 视频流的处理方法及装置、存储介质、电子设备
CN113973224A (zh) 媒体信息的传输方法、计算设备及存储介质
US20230379552A1 (en) Systems and Methods of Alternative Networked Application Services
KR102232899B1 (ko) 클라우드 스트리밍 서비스 시스템, 이미지 타입에 따른 클라우드 스트리밍 서비스 방법 및 이를 위한 장치
US10547878B2 (en) Hybrid transmission protocol
US20240205469A1 (en) Apparatus and method for processing cloud streaming low latency playback
Samčović Multimedia Services in Cloud Computing Environment
Huang et al. Design and implementation of an efficient MPEG-4 interactive terminal on embedded devices
CN117119234A (zh) 显示设备及媒资起播方法
CN116781918A (zh) 一种网页实时通信的数据处理方法、装置及显示设备
CN117676241A (zh) 基于服务器三维渲染的数字化工厂大场景显示方法及系统

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
EE01 Entry into force of recordation of patent licensing contract

Application publication date: 20090812

Assignee: Jiangsu Nanyou IOT Technology Park Ltd.

Assignor: Nanjing Post & Telecommunication Univ.

Contract record no.: 2016320000220

Denomination of invention: Real-time video monitoring system implementing method based on network television set-top box

Granted publication date: 20120523

License type: Common License

Record date: 20161121

LICC Enforcement, change and cancellation of record of contracts on the licence for exploitation of a patent or utility model
EC01 Cancellation of recordation of patent licensing contract
EC01 Cancellation of recordation of patent licensing contract

Assignee: Jiangsu Nanyou IOT Technology Park Ltd.

Assignor: Nanjing Post & Telecommunication Univ.

Contract record no.: 2016320000220

Date of cancellation: 20180116

CF01 Termination of patent right due to non-payment of annual fee
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20120523

Termination date: 20180225