摘 要:本文设计并实现的终端系统工作在mClinux操作系统下,通过应用UPnP中的SSDP服务发现协议,实现在局域网中IPTV终端的自动发现, 并使用IP组播技术将TV视频信号及本地的AV视频信号。通过数字化处理和MEPG-2编码压缩后封装为RTP包发送到组播地址,供局域网内的合法用户观看。

关键词:IPTV;UPnP;IP组播技术; MPEG-2

引言

IPTV是一项系统技术, 可使音/视频内容节目或信号以IP 包的方式在不同物理网络中被安全、有效和保质地传送或分发给不同用户。

基于UPnP中的简单服务发现协议(SSDP,Simple Service Discovery Protocol)和IP组播技术,本文提出并实现了一种新的IPTV终端系统。该系统不仅能将CATV(有线电视网)模拟信号和本地AV模拟信号转换为数字信号,并通过MPEG-2编码,再使用RTP/RTCP协议组播到家庭网络,而且提供了实时串流视频、本地视频定时存储播放和VoD(Video On Demand)服务。

UPnP协议栈中的SSDP协议

UPnP(Universal Plug and Play――通用即插即用)是针对局域网络范围内对等(peer-to-peer)互联而设计的一种应用层技术标准,旨在为家庭、小型企业、公共场所提供基于IP技术、易于使用的网络服务自动发现机制。

SSDP用于服务发现,控制点借此可定位其感兴趣的资源在网络中的位置,设备可借此告之它们的可用性。SSDP客户(控制点)可往本地保留的多播地址的SSDP端口(239.255.255.250:1900)发送发现(Discovery)消息来寻找SSDP服务;SSDP服务(设备)也可以同样的方式发送SSDP指示来宣告它的存在。

本文IPTV终端的UPnP发现过程,即控制点(运行在mClinux上的服务器程序)搜索网络上的UPnP设备(运行在PC上的客户端程序),同时,UPnP设备也要宣告自己的存在。当用户在PC上打开一个新的客户端程序时,它会通过标准的本地多播地址发送多播发现消息宣告一个新的用户存在。控制点监听该多播地址,获取用户的可用信息。同样,当控制点被添加到网络时,它会多播一条发现消息来搜索是否已有客户端存在。

IPTV终端系统设计

系统软件架构及

子系统模块设计

IPTV终端系统软件架构分为服务器和客户端两部分,如图1所示。

图2 IPTV终端系统软件架构图

服务器软件部分包括:

RTP/RTCP模块:该模块包含RTP/RTCP协议栈,负责将视频信息打包成RTP组播或单播到局域网中。

串流模块:客户端用户选择本地音/视频文件或VoD服务器里存有的音/视频文件,将其发送到VLC播放器中处理并转发到服务器的串流模块,由此模块在局域网内组播,供在线合法用户观看。

定时音/视频存储、播放模块:管理员选择本地音/视频文件,将其发送到VLC播放器中处理并转发到服务器的定时音/视频存储、播放模块,由此模块异步写入Flash中存储。管理员可以设定要播放存储视频的时间、播放次数、连续播放时间间隔、播放长度和结束时间等。

用户合法性管理模块:该模块在用户登录时检查普通用户或系统管理员的合法性,并实时管理所有在线用户信息,定时显示所有在线用户的IP地址。

UPnP服务发现模块:该模块负责使用UPnP中简单服务发现协议监听局域网内客户端程序的运行,并在客户端程序发出SSDP Notify消息时响应。

服务控制模块:由管理员更改服务器IP地址,用户更改音量、频道、画质等模块组成。

硬件驱动模块:该模块由服务器上的硬件驱动程序组成。

客户端软件部分包括:

UPnP服务发现模块:客户端应用程序运行时,在局域网内发送UPnP SSDP宣告消息。

用户登录模块:当收到服务器的UPnP响应消息时,运行此模块,检查用户合法性。

VoD上传模块:通过VLC播放器和服务器上的串流模块,将音/视频上传到本地VoD服务器。

遥控器程序:系统UI部分,提供友好的系统管理员和普通用户操作界面。

VLC播放器:一种强大的跨平台媒体播放软件,支持多种音/视频格式(MPEG-1、MPEG-2、 MPEG-4、DivX、MP3、ogg...)、流媒体协议和串流组播。

系统硬件体系结构设计与实现

本方案是以华邦ARM W90N740芯片为主控制器的硬件平台,在W90N740的外围添加网络模块、串口接口模块、调谐器模块、音/视频解码及数字化处理模块、MPEG-2音/视频压缩模块和USB模块等。系统硬件体系结构如图2所示。

图2 系统硬件体系结构框图

1、CPU部分

CPU(W90N740)、ROM(512KB)、Flash(8MB)、SDRAM(32MB)、SRAM(32K32b)和CPLD构成了最基本的处理系统。ROM存放BOOT程序,每次RESET后,CPU从这里运行,该部分程序主要作硬件初始化,为运行mClinux作准备。Flash存放mClinux和用户程序。SDRAM是程序运行时存放mClinux和用户程序的地方。SRAM是PCI桥成为本地总线主机时,写入数据的地方,由于PLX9080不能操作SDRAM,所以,要用一个SRAM来做数据缓存。CPLD主要完成PCI总线的仲裁、地址译码、RESET信号的产生、中断信号的汇总、SRAM的片选,以及一些信号的电平或时序转换。在CPU与 SRAM的数据总线和地址总线之间有一个开关,用于解决当CPU访问PCI设备和PCI设备访问SRAM同时发生时引起的死锁。当这种情况发生时,开关将断开CPU的数据总线和地址总线,同时输出WAIT信号,让CPU处于等待中,而让PCI设备先访问SRAM,完成后,再恢复CPU对PCI设备的访问。

2、PLX9080部分

PLX9080将PCI总线和本地总线连接起来,它主要提供本地地址到PCI地址的双向转换,本地控制到PCI控制的双向转换。PLX9080收到CPU的命令后,首先向CPLD的PCI仲裁器申请,获得许可后,开始进行PCI读写。PCI设备(比如SAA7134)也是通过PLX9080将数据写入本地存储器,当外部设备向PLX9080发起PCI写操作后,PLX9080将向CPU申请本地总线的使用权,CPU释放总线的控制权,PLX9080就将PCI的地址翻译成本地地址,将数据写入SRAM中。

3、SAA7134HL部分

SAA7134HL主要将SIF和CVBS信号进行解码、取样,然后数字化,组合成ITU-R BT.656格式的视频数据和I2S格式的音频数据送给MPEG-2压缩,同时接收MPEG-2压缩器已经压缩好的传输流数据,进行缓冲后,将数据通过PLX9080写入SRAM中,完成后向CPU发出中断,请求CPU进行处理。SAA7134HL还包含了一个I2C MASTER总线控制器,可以完成对调谐器和SAA6752HS的控制。

4、SAA6752HS部分

SAA6752HS主要对SAA7134HL送来的视频和音频数据按照MPEG-2标准进行压缩,完成压缩后将数据回送给SAA7134HL进行传送。

硬件功能说明如下:

*调谐器:该部分是将从天线或同轴电缆接收进来的TV射频信号进行解调,输出视频信号和音频信号。

*视频、音频解码和数字化:该部分将复合的视频信号(CVBS)解码,取出其中的Y、U、V分量信号,然后对这些信号取样作A/D转换,再把这些数据组合成满足ITU-R BT.656的数据,输出给MPEG-2压缩部分。同时,也对音频信号取样作A/D转换,再把这些数据组合成I2S格式的数据输出给MPEG-2压缩部分。

*MPEG-2压缩部分:这部分将满足ITU-R BT.656规定的视频数据和I2S格式的音频数据按照MPEG-2标准进行压缩,生成MPEG-2传输流输出到PCI传输部分。

*PCI传输部分:该部分将MPEG-2传输流的数据经过缓冲后,将其经过PCI总线写入到系统的内存中,然后发中断给处理器,通知其有数据要处理。

*PCI桥:PCI桥是将处理器的本地总线和PCI总线连接起来的部件,主要完成对PCI 总线和本地总线的申请,以及PCI总线地址与本地总线地址之间的转换、PCI总线地址与本地总线之间的控制时序的转换。

*处理器及其外围部件:该部分主要由CPU和能让其运行起来的基本外围器件组成。包括地址译码、SDRAM、Flash、ROM器件。

*接口部分:与外部进行通信的接口,由两个以太网端口和一个RS-232,以及一个USB口组成。

测试运行情况

服务器平台配置:CPU (W90N740)、ROM(512KB)、Flash(8MB)、SDRAM(32MB)、SRAM(32K32b),及mClinux操作系统。

客户端平台配置: 奔腾 CPU(2.4GHz)、内存(256MB)、Windows XP 操作系统。

在测试中, 普通用户使用IPTV终端在局域网内接收并流畅播放CATV电视、本地AV,观看实时串流或定时存储的音/视频,通过终端系统正常进行VoD点播。系统管理员可以设置服务器IP地址、接收TV频道的范围、允许同时存在普通用户的最大个数、用户密码、实时串流、定时存储及上传到服务器的音/视频文件路径等功能。

在播放的同时,用户可以通过遥控器程序设置播放色彩,画质,音量,频道及AV->TV->VoD->AV循环切换。

系统运行性能指标:

(1)丢包率

丢包率=(理论发包数-实际收包数)/理论发包数

本系统在运行时可以根据上述公式动态计算传输丢包率,并在任何用户丢包率大于10%时自动断开用户与服务器的连接。

(2)时延

系统运行时,用户可以在线流畅地观看TV/AV/VoD视频流。

如图3所示,当用户数量从1个增加到10个时,时延将随之从2ms增加到4.2ms。

图3 用户数量与时延关系图

结语

随着网络的迅速发展,将本终端系统应用于无线环境中,可提供支持广域网访问的服务,支持MPEG-4视频编码是下一步工作所要做的。

参考文献:

1. UPnP Forum, http://www.UPnP.org

2.Walko, J. I Love My IPTV. IEE Communications Engineer, pp. 16-19, Dec. 2005

3. Jerry C., Whitaker. Interactive TV Demystified. Mc-Graw Hill,2001

linux监听9080,基于UPnP发现与组播技术的IPTV终端实现相关推荐

  1. Oracle Oracle数据库常用命令、Linux监听配置、oracle linux下开放1521端口

    一.Linux下Oracle数据库常用命令 oracle用户下执行: $ sqlplus system/manager @ file.sql 执行sql脚本文件 $ sqlplus system/ma ...

  2. linux监听端口命令

    在linux系统下,我们可以通过相关的命令监听端口的状态.下面由学习啦小编为大家整理了linux监听端口命令的相关知识,希望对大家有所帮助. 一.linux监听端口命令--nc命令详解 语法 nc [ ...

  3. linux查询数据库oracle端口,Oracle数据库常用命令、Linux监听配置、oracle linux下开放1521端口...

    Oracle数据库常用命令.Linux监听配置.oracle linux下开放1521端口 时间:2020-02-14 来源: 一.Linux下Oracle数据库常用命令 oracle用户下执行: $ ...

  4. linux监听一个端口命令,linux监听端口命令

    在linux系统下,我们可以通过相关的命令监听端口的状态.下面由学习啦小编为大家整理了linux监听端口命令的相关知识,希望对大家有所帮助. 一.linux监听端口命令--nc命令详解 语法 nc [ ...

  5. 开启1521端口监听_Oracle数据库常用命令、Linux监听配置、Oracle linux下开放1521端口...

    一.Linux下Oracle数据库常用命令 Oracle用户下执行: $ sqlplus system/manager @ file.sql 执行sql脚本文件 $ sqlplus system/ma ...

  6. pygame中的监听事件以及精灵和精灵组

    pygame监听事件以及精灵和精灵组 文章目录 pygame监听事件以及精灵和精灵组 1.游戏循环中监听事件 1.事件(event) 2.监听 3.代码实现 二.理解精灵和精灵组 1.精灵 2.精灵组 ...

  7. 虚拟ip是什么意思_轻松了解基于Ip,Mac,组播的Valn是什么意思,通信基础第17篇...

    通信知识第17篇:在上一篇中介绍了一文轻松了解Mac引入Valn,老化机制,转发流程通信基础概念16 本节内容主要深入理解valn相关概念,接下来的章节会对二层通信知识点进行系统讲解. VLAN相关基 ...

  8. Linux监听进程是否存在,并加入定时任务

    前言 我们在linux主机上可能需要一直运行某一服务,如果关机后或者误杀,使得服务停止,从而影响日常的任务.比如一BI项目数据库的抽取,使用Taskctl调度,在每天固定时间进行数据的抽取,如果主机上 ...

  9. linux 监听数据包,linux下网络监听与发送数据包的方法(即libpcap、libnet两种类库的使用方法)...

    linux下可以用libpcap函数库实现监听数据包,使用libnet 函数库发送数据包 安装: 在命令行下apt-get install 就可以了 libpcap的使用: /*author hjj ...

最新文章

  1. java编写代码用什么_如何学习用Java编写代码:为什么要学习以及从哪里开始
  2. react native 之自定义顶部导航栏,实现标题居中可控
  3. 简单判断用户重复登录,记录一下
  4. Hive更改表名FAILED: Execution Error, return code 1 from org.apache.hadoop.hive.ql.exec.DDLTask. Una ble
  5. 从你的全世界路过-论演员的自我修养
  6. 售价3998元!iQOO 3拉力橙明日全款预售:3月29日首销
  7. 如何复制或导出托管磁盘
  8. echarts制作航线轨迹原来是这样的
  9. 昆山java自行车,剁手清单:剁手的路上总会有几个“毒友”加持
  10. vue幸运大转盘实现
  11. 2020北京国际金融安全论坛(二)
  12. iOS 21种设计模式之工厂模式
  13. 深入剖析虚拟内存工作原理
  14. MyISAM 与 InnoDB
  15. wsl2+ubuntu20安装ros2遇到update问题
  16. IOS 图标背景是黑色
  17. 申请鸿蒙内测一直没有审核,大家看看自己的鸿蒙内测申请还在不在?
  18. 潜心十年,修炼成编程高手
  19. Ubuntu 12.04-12.10 Linux 3D桌面完全教程,显卡驱动安装方法,compiz特效介绍,常见问题解答
  20. 秒云容器云平台:一站式云原生PaaS平台

热门文章

  1. 新年总结:2018年,是我妈最快乐的一年
  2. springboot集成rabbitMQ安装+代码
  3. Python标准库threading模块Condition原理浅析
  4. python函数用法详解2(变量的作用域(全局变量、局部变量)、共享全局变量、函数返回值、函数的参数(位置参数、关键字参数、默认参数、不定长参数)、拆包、交换变量值、引用、可变和不可变类型)
  5. 无连接的用户数据报协议UDP
  6. python网络爬虫之yield关键字的使用!
  7. OpenCV标准霍夫直线检测详解
  8. 讨论:对于神经网络,不需要弄明白原理,只需要应用,是这样吗?
  9. 遥感图像+CNN,预测区域人口收入水平
  10. codeup:问题 D: 最短路径