嵌入式浏览器研究

简介: 1.引言    随着3C融合时代的到来,越来越多的消费类电子产品中有浏览器应用的需求,目前,数字电视机顶盒、IPTV机顶盒、数字电视一体机和手机等等产品中很多都已支持浏览器应用。    由于消费类电子产品本身的CPU处理能力低、内存容量受限。

1.引言

    随着3C融合时代的到来,越来越多的消费类电子产品中有浏览器应用的需求,目前,数字电视机顶盒、IPTV机顶盒、数字电视一体机和手机等等产品中很多都已支持浏览器应用。

    由于消费类电子产品本身的CPU处理能力低、内存容量受限。低功耗等一些特性,使得在PC上非常流行的IE浏览器、Netscape浏览器、 Firefox浏览器等无法直接应用在消费类电子产品中,因此出现了专门针对消费类电子产品的嵌入式浏览器。

   目前,嵌入式浏览器分为两大类,一类是用在手机中,基于无线信道、支持WAP协议的嵌入式浏览器,也称作WAP浏览器,另一类就是本文我们要重点介绍的、用于数字电视类终端中的嵌入式Web浏览器。

2.消费类电子产品对浏览器的要求

       消费类电子产品对成本非常敏感,而且,显示屏幕、操作方式与PC机都有很大的不同,这就造成了嵌入式浏览器必须满足这些特定的要求,这也是嵌入式浏览器的主要开发难点,这些要求包括:

   l        CPU的开销要低。消费类电子产品CPU 能力弱,功耗低,种类繁多,大多数RISC 架构,有些是基于专门的 DSP 核心,这些处理器的运算能力远远比不上 PC 的CPU,所以,要求浏览器一定要能在100MHz一下的主频上可以运行。

   l        内存占用要小。目前市场上常见的数字电视机顶盒配置是4M Flash,16M内存,一般来说,要求嵌入式浏览器运行期间占用内存在6M下,代码小于1M。IPTV 机顶盒的配置会相对比数字电视机顶盒高,使嵌入式浏览器发挥空间更大。

   l        消费类电子产品是以电视作为显示设备,必须考虑电视显示的特点:标准的电视显示范围为720*576,但是很多模拟电视实际显示不了这么大的范围,一般推荐的范围为640*480,这是浏览器在排版的时候必须要考虑的。另外,目前绝大部分电视还是采用阴极射线管,隔行扫描的方式来显示的,这导致线条,图像,文字在电视机上很容易出现闪烁,目前很多机顶盒芯片已经考虑硬件抗闪烁功能,但这还不够,嵌入式浏览器必须考虑支持软件抗闪烁。 

 l        消 费类电子产品一般是通过遥控器来操作的,遥控器不可能跟键盘一样复杂。遥控器上的按钮一般包括:上下左右方向键、确认键、返回键、数字键和其他功能键。对 于使用嵌入式浏览器来说,主要通过方向键、确认键和返回键来完成。基于这个特点,要求网页中焦点不能过多,另外焦点之间的跳动必须合理。当网页超出电视显 示范围的时候,用户可以通过方向键移动,但左右移动不推荐,这要求浏览器必须把网页排版在合理的宽度内,用户可以上下方向移动察看网页内容。

3.嵌入式浏览器的技术需求

3.1应支持的网络通信协议

   首先嵌入式浏览器对多种网络的支持是一个必不可少的要求。这样才能充分利用已有的数据资源,建立业务。嵌入式浏览器要能应用在数字电视终端中,则该浏览器必须支持相应的数字电视数据广播协议。我国的有线数字电视标准是以欧洲DVB 标准为基础,在数据广播中采用以DSMCC 中基于对象的数据轮播(OC)作为数据传输标准,因此数字电视中的嵌入式浏览器技术方案应考虑符合这一标准。

    第二,在IPTV应用中,嵌入式浏览器要做到对HTTP 协议的完整支持,可以实现与Internet 的互联。当然,部分浏览器也提供了对FTP 协议支持,使机顶盒对网络的文件传输、下载更加方便快捷。对于敏感数据需要采用SSL协议,建议支持SSL2.0/3.0

3.2 应支持的技术规范

   嵌入式浏览器应提供对HTML的支持,这是最基本的要求,目前,一般要求支持HTML4.0及以上。

    CSS(Cascading Style Sheets层叠样式表单 由于实现了网页内容与风格分离,因此可以很好地支持在应用层开发。对CSS 的完整支持为业务的应用开发提供了极大便利,也成为了嵌入式浏览器基本的支撑技术。HTML CSS 在浏览器中的运用最直接体现在电视中的界面美观性,以EPG(电子节目指南)为例,传统EPG 形式单一,样式一旦确定则只能更新数据,无法更改背景、颜色或字体等界面风格;运用HTML CSS 技术则可以动态更新界面,使整个EPG 丰富起来,增强了收视效果,并体现了数字电视个性化发展趋势。目前在嵌入式浏览器中要求支持CSS2.0

    XML 技术对于数字电视和IPTV业务等相关领域来说比较重要,它拥有良好的扩展性、高效的数据传输能力、极佳的自我描述性。但由于业务与成本等多方面的影响,嵌入式浏览器应支持XML 的应用,建议支持XML1.0或以上、以及DOM2(Document Object Model 文档对象模型)。

    嵌入式浏览器需要实现对JavaScript 的支持。JavaScript 作为一种脚本语言本身可以提供良好的网络交互性,还可以被用来开发一些小游戏。建议支持Javascript1.1或以上。

    POP & SMTP等协议的支持,可以使浏览器实现消费电子产品收发电子邮件的功能,一般来讲这是可选实现的。 

    对图片和动画的支持也是嵌入式浏览器的一个主要方面,嵌入式浏览器一般要求提供对JPEG、GIF、BMP、PNG图片格式以及GIF动画的支持,可选支持FLASH动画。

3.3 特殊的显示技术要求

    由于嵌入式操作系统一般没有提供像windows系统一样丰富的图形用户接口,因此在完成同样的显示画面效果时,嵌入式浏览器必须采用自己独特的方式来实现图形显示功能。电视与PC显示器的本质区别决定了嵌入式浏览器的要对这些区别做必要的改善和优化。设计浏览器时需注意对窗口的裁减、字体的选择、图层叠加、反走样以及抗闪烁等显示结构方面的优化处理。由于目前对这部分技术工作并没有相关的技术规范与测试标准出台,因此目前市场上的嵌入式浏览器产品的优化处理程度、显示效果存在明显的差异。

4.主流嵌入式浏览器的比较

    在国内消费类电子产品中的嵌入式浏览器主要分为两类,一类是自主研发的专用浏览器,另一类是购买第三方的商用嵌入式浏览器。目前,商用嵌入式浏览器主要有ANT Software Limited的Fresco 浏览器、深圳茁壮公司的IPanel浏览器、OpenTV Device Mosaic浏览器、Opera的Opera浏览器EnReach 的 e-Browser浏览器。在数字电视方面,创系统在国内占有量很大,所以他们的浏览器也在很多机顶盒上集成,目前创维浏览器还主要跟他们自己的头端配合在兼容性方面有欠缺。新盛视公司在的嵌入式浏览器方面也有一定的技术积累。以下我们对这些浏览器就前面提到的技术要求作一个对照比较。


5.嵌入式浏览器开发

     除了购买商用嵌入式浏览器外,也有终端厂家自行开发嵌入式浏览器用在自己的产品中。一般地讲,嵌入式浏览器的软件架构可分为传输协议层、浏览器引擎层和显示层三个部分,如下图所示。

    传输协议层主要负责网络数据的接收,通过HTTPSSL或数字电视的数据广播协议来正确接收网络传输的数据 

    浏览器引擎层是浏览器的核心,包含了所支持的W3C技术规范的解析器或引擎,这样的架构,使得浏览器的核心模块――浏览器引擎层与平台无关,与显示无关。可以方便地移植到不同的平台上,而核心部分不需要更改。引擎层解析生成带有显示信息和控制信息的中间结果;同时也负责图像数据的解码以及解释执行网页中的JavaScript 脚本. 

   显示层:负责显示由引擎层解析过的网页,并处理用户与页面的交互。一般地,显示层都是基于某一嵌入式GUI库的,如:Qt/E、DirectFBMiniGUI等等,使用不同的平台和GUI库,这部分是要做移植工作的。

   可以看出,引擎层是嵌入式浏览器开发的难点,它涉及了多个标准规范,包含了多方面的技术,开发者从头开始设计,其难度和工作量都是很大的,因此,很多都是在开源浏览器代码基础上经过裁减、优化和移植而来的,但就是这样,其难度也是不小的,有人在通过裁减Firefox来实现自己的嵌入式浏览器,但最后说:这样做的难度与重新开发一款新的嵌入式浏览器没有什么区别,甚至还会出现更多问题!正是如此,目前嵌入式浏览器领域,真正自己开发做得好的并不多。

         为了便于大家开发浏览器,这里介绍几个开源的浏览器:

    Mozilla Firefox是一个自由的,开放源码的浏览器,适用于 Windows, Linux 和 MacOS X平台,它是目前在PC上最火的一个开源浏览器,Gecko是Firefox的浏览器引擎,开发人员可以通过对Gecko的研究和裁减,来实现自己的浏览器。

    Konqueror/embedded是符合GNU条款的自由软件。Konqueror/embedded是针对嵌入式Linux,由著名的桌面操作环境KDE下的浏览器Konqueror派生出来的。Konqueror/embedded将Konqueror中关于KHTML,SSL(Security Socket Layer:安全套接层),Javascript等内容继承下来,同时简化了Konqueror中很多类的定义,剔除了原来KDElib部分,以适应在不同的嵌入式平台下能构成功移植和运行。Konqueror/embedded完整地支持HTML4(Hypertext Markup Language:超文本链接标示语言)和CSSL(Cascading Style Sheets:层叠样式表单)部分支持CSS2、JavaScript(ECMAScript 262)、cookies、SSL、IPv6.

    另外,还有WebKitbrow***AmayaGhostzilla等等一些开源的浏览器引擎和浏览器可供大家开发时参考。


摘自http://www.eefocus.com/zihao/blog/07-03/1416_9ee9a.html
相关文章
|
5月前
|
JavaScript 前端开发
WebView2 控件(基于 Microsoft Edge (Chromium) 的嵌入式浏览器控件),获取网页加载后的标题
在使用 WebView2 控件(基于 Microsoft Edge (Chromium) 的嵌入式浏览器控件)时,要获取网页加载后的标题,可以监听 WebView2 的 NavigationCompleted 事件。这个事件被触发时,表示导航已完成,此时执行JavaScript代码可以安全地获取网页的标题。
WebView2 控件(基于 Microsoft Edge (Chromium) 的嵌入式浏览器控件),获取网页加载后的标题
|
Web App开发 JavaScript 前端开发
嵌入式浏览器研究
1.引言     随着3C融合时代的到来,越来越多的消费类电子产品中有浏览器应用的需求,目前,数字电视机顶盒、IPTV机顶盒、数字电视一体机和手机等等产品中很多都已支持浏览器应用。     由于消费类电子产品本身的CPU处理能力低、内存容量受限。
1234 0
|
15天前
|
JSON 移动开发 JavaScript
在浏览器执行js脚本的两种方式
【10月更文挑战第20天】本文介绍了在浏览器中执行HTTP请求的两种方式:`fetch`和`XMLHttpRequest`。`fetch`支持GET和POST请求,返回Promise对象,可以方便地处理异步操作。`XMLHttpRequest`则通过回调函数处理请求结果,适用于需要兼容旧浏览器的场景。文中还提供了具体的代码示例。
在浏览器执行js脚本的两种方式
|
12天前
|
机器学习/深度学习 自然语言处理 前端开发
前端神经网络入门:Brain.js - 详细介绍和对比不同的实现 - CNN、RNN、DNN、FFNN -无需准备环境打开浏览器即可测试运行-支持WebGPU加速
本文介绍了如何使用 JavaScript 神经网络库 **Brain.js** 实现不同类型的神经网络,包括前馈神经网络(FFNN)、深度神经网络(DNN)和循环神经网络(RNN)。通过简单的示例和代码,帮助前端开发者快速入门并理解神经网络的基本概念。文章还对比了各类神经网络的特点和适用场景,并简要介绍了卷积神经网络(CNN)的替代方案。
|
1月前
|
机器学习/深度学习 自然语言处理 前端开发
前端大模型入门:Transformer.js 和 Xenova-引领浏览器端的机器学习变革
除了调用API接口使用Transformer技术,你是否想过在浏览器中运行大模型?Xenova团队推出的Transformer.js,基于JavaScript,让开发者能在浏览器中本地加载和执行预训练模型,无需依赖服务器。该库利用WebAssembly和WebGPU技术,大幅提升性能,尤其适合隐私保护、离线应用和低延迟交互场景。无论是NLP任务还是实时文本生成,Transformer.js都提供了强大支持,成为构建浏览器AI应用的核心工具。
432 1
|
1月前
|
JavaScript API
深入解析JS中的visibilitychange事件:监听浏览器标签间切换的利器
深入解析JS中的visibilitychange事件:监听浏览器标签间切换的利器
94 0
|
2月前
|
JavaScript 前端开发
js之浏览器对象|28
js之浏览器对象|28
|
3月前
|
机器学习/深度学习 人工智能 前端开发
【人工智能】利用TensorFlow.js在浏览器中实现一个基本的情感分析系统
使用TensorFlow.js在浏览器中进行情感分析是一个非常实用的应用场景。TensorFlow.js 是一个用于在JavaScript环境中训练和部署机器学习模型的库,使得开发者能够在客户端直接运行复杂的机器学习任务。对于情感分析,我们可以使用预先训练好的模型来识别文本中的积极、消极或中性情感。
107 4
【人工智能】利用TensorFlow.js在浏览器中实现一个基本的情感分析系统
|
3月前
|
机器学习/深度学习 存储 前端开发
实战揭秘:如何借助TensorFlow.js的强大力量,轻松将高效能的机器学习模型无缝集成到Web浏览器中,从而打造智能化的前端应用并优化用户体验
【8月更文挑战第31天】将机器学习模型集成到Web应用中,可让用户在浏览器内体验智能化功能。TensorFlow.js作为在客户端浏览器中运行的库,提供了强大支持。本文通过问答形式详细介绍如何使用TensorFlow.js将机器学习模型带入Web浏览器,并通过具体示例代码展示最佳实践。首先,需在HTML文件中引入TensorFlow.js库;接着,可通过加载预训练模型如MobileNet实现图像分类;然后,编写代码处理图像识别并显示结果;此外,还介绍了如何训练自定义模型及优化模型性能的方法,包括模型量化、剪枝和压缩等。
51 1
|
3月前
|
编解码 JavaScript 前端开发
JS逆向浏览器脱环境专题:事件学习和编写、DOM和BOM结构、指纹验证排查、代理自吐环境通杀环境检测、脱环境框架、脱环境插件解决
JS逆向浏览器脱环境专题:事件学习和编写、DOM和BOM结构、指纹验证排查、代理自吐环境通杀环境检测、脱环境框架、脱环境插件解决
107 1