中国电信IPTV标准研究之机顶盒

news/2024/10/30 13:25:18/

研究中国电信的IPTV标准是为了“仿造”一个符合此标准的最小化前端系统,这样就可以利用符合中国电信IPTV标准的廉价盒子打造低成本的IPTV方案了。

昨天拿到了中国电信IPTV标准的盒子,中兴B600 V4A。拿这个盒子的目的是为了研究一下符合中国电信IPTV标准的前端,主要是视频服务器,认证服务器,EPG服务器。听起来有点奇怪,拿终端来研究前 端,主要是因为不可能有一套前端系统摆在这里让我们研究,而协议是服务器和终端交互的,我就通过力图模拟一个让机顶盒能跑起来的前端开始研究。

先研究盒子,打开看看是什么芯片,STi5205,专门用于IPTV盒子的SoC,支持AVS,264等标清解码,支持USB,SATA等接口,CPU是SH的,主频266。芯片上连散热片都不需要。

然后是打开电源,进入到配置界面,按了半天遥控器,原来是按白色的设置键。需要输入密码,猜了半天,没有命中,上网查,说是上海有6321密码,试一下。。。进去了。

首先对机顶盒进行配置,地址什么的就不用多费唇舌了,重点是把主用认证服务器配置好,指向你要伪装的认证服务器的url,比如我的是:http://192.168.0.172:8080/auth。

接下来就是认证服务器需要做哪些事情了。机顶盒通过HTTP协议与认证服务器进行交互,因此首先需要做的就是安装一个web应用服务器,web应用服务器 可以选择的范围很大,我用的是web.py,因为它小巧易用。搭建好了web应用服务器,根据本文给出的抓包,进行web应用的编程即可。

认证服务器要做的主要是两个步骤,这里需要注意的就是必须在第二步的应答页面中正确的设置频道信息和业务信息,否则机顶盒会超时弹出一个号码为1302的错误窗口,使得点播和直播都不能正常显示。下面是认证的步骤:

  1. 机顶盒采用HTTPGET发送认证请求。
  2. 服务器响应机顶盒的认证请求,应答的时候给出挑战字;
  3. 机顶盒然后发送认证信息。
  4. 认证服务器“假装”认证通过,应答的时候给出频道信息和业务信息,并以javascript的方式实现频道信息和业务信息的设置。

以下是整个过程的抓包信息:


STB -> Server 认证请求
GET /auth?UserID=99993003&Action=Login HTTP/1.1
User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; ztebw V1.0)
Host: 192.168.0.172:8080
Accept: **
Accept-Encoding: identity
Referer: http://192.168.0.172:8080/auth?UserID=99993003&Action=Login
Cookie: JSESSIONID=GtqFMKRN1V24Q9njJLfjy3C1kCNN5YbYXNbhLHKQhDvlpJSL9znb!-92297067
Content-Type: application/x-www-form-urlencoded
Content-Length: 280

UserID=11&Authenticator=8301043A66F165BF84D8DEAAEB12A05B4706F8ADD72739A610D7060400AFDE5CA0A3944F0E582CEB2B5DC280F9D0C3B8B783C576CBC9E2128E1EA00FF50DBFA6E4139BA8B4043536D464DFFD3179FF87B3DCA8DE2F398B3F88EDF0940B002BB8E1544989404279758F9A4B6DD85131216BE6543E9EF37BF1FD2DA99E3A4D4059

Server -> STB 认证通过,设置频道信息和业务信息:
HTTP/1.1 200 OK
Content-Type: text/html; charset=UTF-8
Content-Length: 3178
Date: Wed, 17 Nov 2010 03:25:02 GMT
Server: CherryPy/3.1.2 WSGI Server

<html>
<head>
<title>auth</title>
<script language="javascript">
var channels=new Array();
channels[0]='ChannelID="00000002000000050000000000003163",ChannelName="CCTV-1",UserChannelID="90",ChannelURL="igmp://239.1.1.1:12345",TimeShift="0",ChannelSDP="",ChannelLogoStruct="",ChannelLogoURL="null",PositionX="0",PositionY="0",BeginTime="0",Interval="0",Lasting="0",ChannelType="1",ChannelPurchased="1"';

channels[1]='ChannelID="00000002000000050000000000003164",ChannelName="CCTV-x",UserChannelID="91",ChannelURL="rtsp://192.168.0.251/264.ts",TimeShift="0",ChannelSDP="",ChannelLogoStruct="",ChannelLogoURL="null",PositionX="0",PositionY="0",BeginTime="0",Interval="0",Lasting="0",ChannelType="1",ChannelPurchased="1"';
var serviceEntrys= new Array();

serviceEntrys[0] = URL="http://192.168.0.172:8080/iptvepg/serviceEntry.jsp?Action=1",HotKey="275",Desc=""
var EPGDomain="http://192.168.0.172:8080/iptvepg";
var UserToken = "99993003***b6aee9575084652610ed5";
var UserID = "99993003";
var UserGroup = "10001";
var EpgGroupNMB = "8";

function setEpgConfig() {
Authentication.CTCSetConfig("UserToken", UserToken);
document.IptvAuthenticationForm.debug.value = Authentication.CTCGetConfig("UserToken");
Authentication.CTCSetConfig("EpgGroupNMB", EpgGroupNMB);
Authentication.CTCSetConfig("TvmsResInterval", "60");
Authentication.CTCSetConfig("TvmsResService", "http://192.168.0.172:8080/rest_group/zte/result.jsp");
Authentication.CTCSetConfig("TvmsVerifyCode", "8005");
Authentication.CTCSetConfig("EPGDomain", "http://192.168.0.172:8080/iptvepg");
Authentication.CTCSetConfig("NTPDomain", "192.168.0.172");
Authentication.CTCSetConfig("ManagementDomain", "http://192.168.0.172");
document.IptvAuthenticationForm.debug.value = Authentication.CTCGetConfig("ManagementDomain");
Authentication.CTCSetConfig("UpgradeDomain", "http://192.168.0.172:8080/iptvnm/stb/update.action");
}

function ConfigChannel(){
Authentication.CTCSetConfig("ChannelCount",""+channels.length);
for(var i=0;i<channels.length;i++){
    Authentication.CTCSetConfig("Channel",channels[i]);
}
}

function setServiceEntry(){
for(var i=0;i<serviceEntrys.length;i++){
Authentication.CTCSetConfig("ServiceEntry",serviceEntrys[i]);
}
}

function afterAuthEpg()
{
setEpgConfig();
ConfigChannel();
setServiceEntry();
var jumpAddr = EPGDomain+"?";
jumpAddr += ("UserToken="+UserToken+"&");
jumpAddr += ("UserID="+UserID+"&");
jumpAddr += ("UserGroupNMB="+UserGroup+"&");
jumpAddr += ("EPGGroupNMB="+EpgGroupNMB);
//window.location.href = jumpAddr;
var mp = new MediaPlayer();
var playerInstanceID = mp.getNativePlayerInstanceID();
//mp.setVideoDisplayMode(1);
document.IptvAuthenticationForm.debug.value = channels.length;
  mp.joinChannel(90);
}

function EPGDomainVisit(EPGDomainAddr)
{
window.location.href = EPGDomainAddr;
}

function UpgradeDomainVisit(UpgradeDomainAddr)
{
window.location.href = UpgradeDomainAddr;
}
</script>
</head>
<body bgcolor="transparent" οnlοad=afterAuthEpg()>
<form action="ConfigUserInfoAction.do" name="IptvAuthenticationForm" method="post">
<input value="xxx" name="debug" size="40">
</form>
</body>
</html>


接下来直接调用mp.joinChannel(90)就进入了直播,其中mp是初始化的一个播放器,可参照中国电信的标准,90是设置一个直播频道,其实就是采用Rainbow(http://www.doorsolutions.cn/redmine/boards/4/topics/17 )软件编码器推出的组播流。

至于点播就比较容易了,在页面中给出点播连接,直接点进去就可以了。

调试过程中遇到和需要注意的问题:

  1. 认证通过后的要点(甚至不需要认证通过)就是正确的设置频道列表和业务入口列表,否则会弹出一个提示连接服务器失败的窗口,错误号是1302,影响正常运行。
  2. 组播数据需要用rtp协议封装,否则中兴的盒子不能正常播放!!
  3. 音频编码采用ffenc_mp2,之前采用lamemp3enc的时候中兴的盒子不能正确解码音频!!!


后续需要做的工作就是熟悉中国电信标准的MediaPlayer对象的编程接口,实现产品化的直播和点播,也就是有必要的遥控器按键响应和OSD显示。


http://www.ppmy.cn/news/133208.html

相关文章

网络电视(IPTV)系统解决方案

第一章 系统概述 1.1 系统概述 誉沃网络电视台&#xff08;IPTV&#xff09;系统&#xff0c;集合了视频直播、时移直播、视频点播技术&#xff0c;用户不仅可以观看到高清电视直播节目&#xff0c;还可以在观看电视节目的同时&#xff0c;随时按暂停或后退/快进键&#xff0…

电信iptv机顶盒破解方法大全(图文教程)

电信iptv机顶盒怎么破解?大家都知道,电信iptv机顶盒经常会出现暂无可用EPG,但是如果破解了就不会出现这样的问题,下面绿茶小编为大家带来电信iptv机顶盒破解教程。 电信工作人员在台式机上建立的宽带连接,连接之后只有此电脑可以上网。

如何设置电信IPTV机顶盒为路由器联网方式

如何设置电信IPTV机顶盒为路由器联网方式 电视开机后&#xff0c;按遥控器上的【设置】键。 2、在菜单中&#xff0c;选择【进入本地设置页面】 3、使用电视遥控器输入密码&#xff1a;6321 4、选择【有线连接】&#xff0c;再【下一步】。或者使用【无线连接】 5、【接入类型】…

eoc机顶盒wifi服务器未响应,网络机顶盒中桌面配置服务器

网络机顶盒中桌面配置服务器 内容精选 换一换 本文以云服务器的操作系统“Windows Server 2008 R2 Enterprise 64bit”为例&#xff0c;提供磁盘的自动初始化操作指导。不同云服务器的操作系统的格式化操作可能不同&#xff0c;本文仅供参考&#xff0c;具体操作步骤和差异请参…

机顶盒怎样配置服务器信息,网络机顶盒 桌面配置服务器

网络机顶盒 桌面配置服务器 内容精选 换一换 云耀云服务器(Halo Elastic Cloud Server&#xff0c;HECS)是可以快速搭建简单应用的新一代云服务器&#xff0c;具备独立、完整的操作系统和网络功能。提供快速地应用部署和简易的管理能力&#xff0c;适用于网站搭建、开发环境等低…

计算机网络——FTP网络服务器

目录 一、实验目的与要求 二、实验内容与方法 三、实验步骤与过程 一、实验目的与要求 学习安装、使用FTP服务器软件和FTP客户端软件&#xff0c;掌握基本的FTP传输数据的控制方式&#xff0c;能对FTP协议数据包抓取并进行分析。 实验环境&#xff1a; 使用Windows操作系统…

机顶盒怎样配置服务器信息,网络机顶盒桌面配置服务器

网络机顶盒桌面配置服务器 内容精选 换一换 云耀云服务器(Halo Elastic Cloud Server&#xff0c;HECS)是可以快速搭建简单应用的新一代云服务器&#xff0c;具备独立、完整的操作系统和网络功能。提供快速地应用部署和简易的管理能力&#xff0c;适用于网站搭建、开发环境等低…

电视盒机顶盒搭建FTP功能,外接硬盘U盘,电脑或手机端访问

目录 功能需求:设备列表:实现过程:访问方法: (ง •_•)ง 谢谢阅读! 功能需求: 电脑或手机端,能够随时连接到,外接在机顶盒上的移动硬盘或U盘.机顶盒能够正常看电视,并且开机自动启用FTP功能. 设备列表: 机顶盒 (安装有当贝市场,至于怎么安装刷机包,我也是百度的)显示器硬…