当前位置:首页 > 安防技术 > 视频监控

数字IP网络音频公共广播系统

  数字IP网络公共广播系统,数字IP网络音频广播系统概述
  
  由于音频信号可以在网络上采用标准互联网包的形式传递,基于其数字化的基本特征,动态范围、信噪比、失真系数、频率响应等技术指标均大大高于模拟方式,改善了音频信号的传输质量,实现音频信号的多路实时分发和传输,大大简化了系统结构,降低了系统成本。因此,对广播系统进行数字化、网络化改造,是公共广播发展的趋势。 深圳市西邦源科技有限公司,销售联系人刘'S :13530597380,直线:0755-33673270;QQ-503906453;网站:http://www.xbpa.net
  
  西邦品牌公共广播是基于IP网络技术和Mp3压缩技术设计实现一个数字音频广播系统。本系统采用以太网网络技术,基于C的局域网广播系统,以C/S为模式,基于UDP(用户数据报协议)的传输方式,以管道为进程间的通信方式实现的广播,并结合当今最流行的音频压缩技术,实现多种公共广播节目的网络实时传送和远程互动。
  
  【深圳西邦源科技有限公司简介】
  
  深圳西邦源科技有限公司以下简称【西邦】,是一家专业从事音视频产品、智能广播、寻址广播、公共广播器材的研发、生产、销售为一体的科技开发型公司。专门从事智能广播、寻址广播、公共广播、背景音乐、多媒体教学、音响灯光、VOD视频点播系统等电子信息系统和弱电配套系统提供整体技术设计方案。
  
  我们主要产品有:各种MP3数字音乐智能播放机、一线通调频寻址广播、智能广播系统、消防广播系统、合并式功率放大器、纯后级功率放大器、前置放大器、仿真草坪音箱、全天候室外防水音柱、壁挂音箱、吸顶音箱、IP数字智能寻址广播系统、酒店宾馆IP数字VOD视频点播系统、校园视频节目录播系统等。
  
  公司拥有拥有一批精通国内、国际领先技术的研发人员和技术服务人员,在全国各地都有完善的代理分销商和技术服务机构,为客户提供了最为优质的服务。将随着产业的发展,建立了全国统一直销联保体系,真正排解了用户的后顾之忧。
  
  公司全面实施企业知识化管理,营造优秀企业文化,形成良好的人才培训环境。公司将继续秉承"客户满意、技术创新、创造价值、追求卓越"的价值观,倡导"客户至上,质量第一"的精神,竭诚为客户提供最合适的解决方案、产品与服务。
  
  目前公司已为内蒙、吉林、黑龙江、辽宁、新疆、陕西、贵州、山西、山东、河南、河北、江苏、安徽、甘肃、云南、湖南、湖北、福建、海南、广东、北京、天津、上海、重庆、四川、青海、西藏等二十几个省市,近千所学校成功实现了校园智能广播、数字广播和多媒体教学应用。产品以价格合理、功能实用、性能稳定、服务及时周到深受广大用户好评。
  
  三【数字IP网络广播系统原理描述】
  
  【广播的概念】
  
  广播指的是用户被动接收流。在广播过程中,客户端接收流,但不能控制流。例如,用户不能暂停、快进或后退该流。广播方式中资料包的单独一个拷贝将发送给网络上的所有用户。
  
  广播可以理解为一个人通过广播喇叭对在场的全体说话,这样做的好处是通话效率高,信息一下子就可以传递到全体,广播在网络中的应用较多,如客户机通过DHCP自动获得IP地址的过程就是通过广播来实现的。但是同单播和多播相比,广播几乎占用了子网内网络的所有带宽。
  
  C/S又称Client/Server或客户/服务器模式。客户(Client)是指运行用户请求程序,并将这些请求传送到服务器的软件成分。服务器(Server)有两个基本含义:(1)一种在网络环境中提供共享服务的硬件;(2)为其它软件成分提供普通化功能服务的软件成分,即它是用来管理数据资源、并进行数据库处理的计算机。
  
  【C/S结构的优点】
  
  C/S结构的优点是能充分发挥客户端PC的处理能力,很多工作可以在客户端处理后再提交给服务器。对应的优点就是客户端响应速度快。
  
  2.2一般工作原理及特性
  
  客户/服务器之间的通讯是通过严格定义的网络通信协议、应用程序接口、和远程过程调用实现的。这种模式将功能很强的数据库管理系统、工具和应用软件等信息资源散布在多个客户机和服务器上,将应用逻辑分割成客户机和服务器两部分。当需要执行一个应用时,客户机服务器模式将这个单一的应用分解为可在网络上协调操作的独立组块,并将这些独立组块分派到客户机和服务器上。客户机一般负责与用户交互,承担绝大部分显示和逻辑处理工作,服务器则负责存储和管理信息、资源来响应客户机的请求。当用户在客户机上运行应用程序需要某种资源服务时,客户机进程向服务器进程发出请求,服务器根据用户请求完成处理后,再把处理结果或有关数据传回客户机,由客户机进程完成后继处理。
  
  【C/S系统结构】
  
  客户机进程和服务器进程之间的相互作用是协作式的,事务是交易式的。其中客户机进程是主动的,先发出请求给服务器。它全部用于和用户的会话,以会话的终止为终止。一个客户机可能与一个或多个服务器相互作用来完成工作,然而,至少一个服务器进程是一直必要的。通过管理与用户的所有交互作用,客户机把服务器和网络对用户隐藏起来,这就造成了一种幻觉,整个应用只是在局部的执行而没有使用其他的进程、机器和网络。而服务器进程是被动的,由来自客户机的请求的到来所触发。通常服务器进程一直存在运行,以给客户机提供服务。服务器是功能特定的:它执行一组预定的、功能相关的事务的处理。
  
  【TCP/UDP协议】
  
  根据OSI网络标准定义,网络由物理层,数据链路层,网络层,传输层,会话层,表示层和应用层7层组成。而在实际应用中,网络的结构可简化为链路层,网络层,传输层和应用层用户接口,其结构如图3所示。
  
  【网络TCP/UDP层结构】
  
  在TCP/IP协议组中,IP协议是网络层协议。TCP协议是一种面向连接的协议。它能够提供可靠的,全双工的网络通信服务,具有确认数据流控制,多路复用和数据同步等功能,很适合高质量数据的传输,是目前应用最为广泛的网络传输协议之一。由于TCP/IP协议功能的强大,实现的复杂,网络开销很大,给数据的传输带来很大的时延,对实时音频传输来说这个时延大大超过了人耳所能容忍的程度。因此TCP协议不适合传输实时音频数据或实时视频数据和突发性的大量数据。
  
  UDP协议是英文UserDatagramProtocol的缩写,即用户数据报协议,主要用来支持那些需要在计算机之间传输数据的网络应用。包括网络视频会议系统在内的众多的客户/服务器模式的网络应用都需要使用UDP协议。
  
  UDP协议是最简单的,面向交易型的无连接协议,一次交易中往往只有一来一回两次报文交换,从而减少了因建立连接和撤除连接所需要的巨大开销。每个分组都携带完整的目的地地址,在各分组系统中独立传送。它不保证分组的先后顺序,不进行分组出错的恢复与重传,因此不保证传输的可靠性,不保证服务质量(Qos)。但是相对于TCP协议,UDP协议减少了确认、同步等操作,节省了很大的网络开销,它能够提供高传输效率的数据报服务,能够实现数据的实时性传输,在数据的实时传输中应用广泛。因此在网络音频广播系统的研究中,在没有更合适的实时性高质量传输协议的情况下,应用UDP协议的实时性是较为合理的解决方案。
  
  【UDP音频数据发送的实现】
  
  UDP传输时网络数据包的传送质量(传送延时,拥塞,丢包)是动态变化的,尤其是拥塞和丢包,而且对数据的实时拥塞操作并不容易。在基于UDP协议的实时应用中,通常在客户端设定一个缓冲器来减少网络的延时。接收到的数据包先压入缓冲器,当缓冲器中达到预定数量的包后,开始解码播放。这样可以减少延时变化的影响,这种缓冲器称为PlayoutBuffer(简称PB),它的大小应该是随着网络的变化而变化的。
  
  本系统数据的UDP传输采用LinuxC语言实现,运用LinuxSockets实现UDP协议的数据传输。LinuxSockets规范定义了如何使用API与Internet协议族(IPS,通常是指TCP/IP或UDP/IP)的连接,支持流套接字(Socket)和数据报套接字。流套接字提供了双向的、有序的、无重复并且无记录边界的数据流服务,即实现了TCP协议的数据传输,在FTP及远程登陆(Telnet)等领域运用广泛。数据报套接宁支持双向的数据流,但并不保证是可靠、有序,确认和无重复的,它实现的是UDP协议的数据传输。应用程序调用LinuxSockets的API实现通信。LinuxSockets完全封装了UDP协议,只要调用Sockets的相应函数就能建立一个套接字,并与对应的套接字通信,实现UDP数据的实时传输。套接字的工作流程如图4所示。
  
  【UDP协议套接字实现】
  
  当数据包无序地到达接收方时,开辟一个PB缓冲区,根据包中的序列号重新排序数据。数据包的序列号每发送一个自动加1,初始值为不可预料值,序列号除了可以重组包序外还可用于检查包丢失,在接收端根据已经收到的信息重构丢失的信息可以很好地解决丢包的问题。系统采用UDP/IP方案实现对UDP数据包的传输质量控制,在UDP数据包中添加时间戳和序列号等控制信息,实现网络传输的可靠性。在UDP包中添加控制信息,必然要以牺牲网络传输效率为代价,造成网络延时,甚至造成拥塞和丢包。因此必须考虑拥塞控制和丢包恢复算法。
  
  【管道通信】
  
  进程间通信―管道
  
  一个大型的应用软件往往需要众多进程协作,进程间通信(IPC)的重要性显而易见。Linux系统下的进程通信机制基本上是从UNIX平台上的进程通信机制移植而来的,主要的进程间通信机制就是管道。所谓管道,是指能够连接一个写进程和一个读进程的、并允许它们以生产者一消费者方式进行通信的一个共享文件,又称为pipe文件。由写进程从管道的写入端(匀柄1)将数据写入管道,而读进程则从管道的读出端(句柄0)读出数据。如图5所示。
  
  【管道的类型】
  
  管道分为无名管道和有名管道两种。无名管道是一个临时文件,可用于具有父子关系进程间的通信。利用pipe()建立起来的无名文件(无路径名)。只用该系统调用所返回的文件描述符来标识该文件,故只有调用pipe()的进程及其子进程才能识别此文件描述符,才能利用该文件(管道)进行通信。当这些进程不再使用此管道时,内核收回其索引结点。有名管道是一个可以在文件系统中长期存在的、具有路径名的文件,用于无父子关系的进程之间通信。无父子关系的进程可将信息发送到某个命名管道中,并通过管道名读取信息。用系统调用mknod()建立。它克服无名管道使用上的局限性,可让更多的进程也能利用管道进行通信。因而其它进程可以知道它的存在,并能利用路径名来访问该文件。对有名管道的访问方式与访问其他文件一样,需先用open()打丌。二种管道的读写方式是相同的,本文应用的是无名管道通信机制只讲无名管道。
  
  【管道的特点】
  
  (1)管道是半双工的,数据只能单向流动,需要相互通信时,就要建立两个管道。(2)只能用于父子进程或者兄弟进程之间(具有亲缘关系的进程,有名管道则突破了这一限制)。(3)单独构成一种独立的文件系统,并且只存在于内存中。(4)数据的读出和写入都是单向的。一个进程向管道中写入的数据被管道另一端的进程读出。写入的数据每次都添加在管道缓冲区的末尾,并且每次都是从缓冲区的头部读出数据。
  
  【数字IP网络广播系统设计思路】
  
  作为网络数字音频广播服务控制中心系统,其结构是服务器/客户端结构。服务器端可以打开指定的文件,通过定时器不断发送信息,同时可以自己显示正在发送和已发送的信息。客户端则可以选择接收和停止接收,同时播放接收到的内容。本设计按照系统的具体功能要求,首先应用Socket编程创建客户端和服务器端,每个接收端就会相应的创建一个线程,它们之间通过这个连接来实现数据通信;然后在发送端和接收端设置一个器,用于发出的消息。并根据消息做出不同的动作。如图7中所示的那样。
  
  音源服务器的作用为读取音频文件或者实时采集声音,按照特定的速率发送码流。如果是实时采集,则不需要加入时间信息,如果从文件读取,则需要根据合适的时间信息发送个稳定的流。
  
  主控服务器系统的作用为接收音源服务器的数据并存储音频数据,以及通过Socket传送到指定客户端网络音频装置;接收客户端的请求之后将音频数据发到客户端。
  
  客户端的作用是向Server端发起连接请求或者处在听接收状态,接收主控服务器系统发过来的音频数据并播放之。
  
  音源、主控服务器,这两个模块的功能也可以由一个Server来统一完成;而客户端则要具备网络接收接口.能够实时接收音频流并播放。
  
  【IP网络音频广播功能的实现原理】
  
  (1)用户在客户端使用client访问server,并发出检索命令,要求播放特定的MP3文件。
  
  (2)服务器收到命令后,向后台数据库发出播放请求。
  
  (3)数据库收到请求后,从MP3文件库中检索出指定的MP3,启动并初始化客户端的播放模块,把MP3流文件传送至客户端。
  
  (4)客户端播放模块开始播放MP3流。
  
  【西邦IP网络广播系统客户端设计原理】
  
  客户端程序的主要功能是接收服务器端发来的数据,并且处理这些数据,这些数据有可能是错误的,这需要客户端做出异常处理,然后,向服务器发送命令,使服务器重新发送或者中断。
  
  首先,客户端要初始化网络部分,创建一个套接字,然后利用这个套接字绑定一个网络,然后就是接受数据了,让程序在一个循环里等待着数据的到来,然后把接收来的数据递给一个线程,然后在这个线程里处理,在线程里判断接收来的数据,如果是音乐文件,那就创建一个进程,在这个进程里执行播放。如果是错误的就给服务器发送错误报告。这就是客户端的程序。
  
  intrecv_channel(intsd,intchannelid,structsockaddr_in*phisaddr,socklen_t*phisaddrlen)
  
  {
  
  intret,len;
  
  structmp3cast_data_st*recvmenu_st;
  
  recvmenu_st=malloc(64*1024);
  
  if(recvmenu_st==NULL){
  
  perror("malloc()failed.");
  
  exit(1);
  
  }
  
  while(1){
  
  len=recvfrom(sd,recvmenu_st,64*1024,0,(void*)phisaddr,phisaddrlen);
  
  if(ret<0){
  
  if(errno==EINTR){
  
  continue;
  
  }
  
  perror("recvfrom()");
  
  exit(1);
  
  }
  
  if(ntohs(recvmenu_st->channel_id)==channelid&&len>0){
  
  ret=upipe_write(cpipe,recvmenu_st->data,len-4);
  
  printf("writeupipe%d/n",ret);
  
  if(ret<0)continue;
  
  }
  
  }
  
  free(recvmenu_st);
  
  return0;
  
  }
  
  6.2服务器端的程序
  
  服务器端的程序主要功能是发送MP3文件,和接受客户端发来的请求,
  
  intcreate_socket(void)
  
  {
  
  intsd0;
  
  structip_mreqnmreq;
  
  sd0=socket(PF_INET,SOCK_DGRAM,0);
  
  if(sd<0){
  
  perror("socket()");
  
  return-1;
  
  }
  
  inet_pton(AF_INET,DEFAULT_MGROUP,&mreq.imr_multiaddr);
  
  inet_pton(AF_INET,"0.0.0.0",&mreq.imr_address);
  
  mreq.imr_ifindex=if_nametoindex("eth0");
  
  if(setsockopt(sd0,IPPROTO_IP,IP_MULTICAST_IF,&mreq,sizeof(mreq))<0){
  
  perror("setsockopt(...,IP_MULTICAST_IF,...)");
  
  return-1;
  
  }
  
  hisaddr.sin_family=AF_INET;
  
  hisaddr.sin_port=htons(DEFAULT_PORT);
  
  inet_pton(AF_INET,DEFAULT_MGROUP,&hisaddr.sin_addr);
  
  returnsd0;
  
  }
  
  6.3测试与效果
  
  在电脑上模拟实验环境。开两个终端,分别运行客户端和服务器端,客户端能正常的播放服务器端的MP3文件。服务器端会循环打印一些信息表示正常运行,客户端会显示服务器端发来的菜单列表,当客户端选择某一频道后客户端会把从服务器端收到的相应音频文件播放回来。





来源:     编辑:     热度:  
更多.
工具资料
安防技术
热点资讯

更多.最新内容

更多.热门关注