Js网络视频播放器之VideoJsckplayer(直播拉流rtmp、hls)

news/2024/4/19 3:27:58/

一、轻量级的开源播放器VideoJs&&Ckplayer

1、videoJS

对于HTML5支持非常棒,可以自动在flash和Html5播放器之间进行切换,videoJS可以兼容到IE8,它提供的界面非常简洁,需要对界面进行二次开发。

获取videoJs


2、ckPlayer

这个播放器是国产播放器,功能有很多,只简单介绍两个功能,(1)提供手动切换html5和flash功能(2)提供了关灯开灯功能。完全可以满足国内开发的需求(3)它内置了大量的广告位,比如片头广告,暂停广告,片尾广告,缓冲广告,切点广告,滚动文字广告,以及满足权限关闭广告的功能....秒懂国内看视频就是广告比较多。

获取ckplayer

二、videoJS播放器嵌入页面及api介绍

1、创建videoJS播放器实例

(1)调用swf文件

[html] view plain copy
 print?在CODE上查看代码片派生到我的代码片
  1. <script type="text/javascript">videojs.options.flash.swf = "player/video-js.swf";</script>  

(2)配置初始化参数

[html] view plain copy
 print?在CODE上查看代码片派生到我的代码片
  1. <!-- data-setup{}可以控制播放器的一些功能;autoplay:true/false,是否自动播放;preload:auto\none\meta,自动加载\不加载\加载元数据 -->  
  2.     <video id="videoPlayer" class="video-js vjs-default-skin vjs-big-play-centered"   
  3.     controls preload="auto" poster="img/eguidlogo.png" width="640" height="360"   
  4.     data-setup='{ "html5" : { "nativeTextTracks" : false } }'>  
  5.         <source src='rtmp://192.168.30.21/live/' type='rtmp/flv'  />  
  6.     </video>  

如果播放的是普通视频,需要修改<source src='视频地址'   type='video/mp4或者video/flv'/>

type里面放 ‘ video/视频格式 ’ 即可

(3)创建播放器实例

[html] view plain copy
 print?在CODE上查看代码片派生到我的代码片
  1. //播放器实例  
  2. var player = videojs('videoPlayer');  

补充:videojs会根据浏览器自动切换flash和html5播放模式

2、videoJS常用api:

[html] view plain copy
 print?在CODE上查看代码片派生到我的代码片
  1. /*  
  2. * 根据videoJS官方文档编写的播放器常用操作    
  3. */  
  4.   
  5.     //获取当前类型  
  6.     function getCurrentType(idnex) {  
  7.         return idnex.currentType();  
  8.     }  
  9.     //获取当前播放地址  
  10.     function getCurrentAddr(index) {  
  11.         return index.currentSrc();  
  12.     }  
  13.     //获取当前播放时间  
  14.     function getCurrentTime(index) {  
  15.         return index.currentTime();  
  16.     }  
  17.     //获取当前网络状态  
  18.     function networkState(index) {  
  19.         return index.networkState();  
  20.     }  
  21.     //修改播放地址  
  22.     function setsrc(index, url, type) {  
  23.         index.src({  
  24.             type : type,  
  25.             src : url  
  26.         });  
  27.     }  
  28.     //重载播放器  
  29.     function reset(index) {  
  30.         index.reset();  
  31.         index.load();  
  32.     }  
  33.     //播放  
  34.     function play(index) {  
  35.         index.play();  
  36.     }  
  37.     //暂停  
  38.     function pause(index) {  
  39.         index.pause();  
  40.     }  

3、videoJS菜单界面二次开发

简单实现清晰度控制和创建清晰度菜单

[html] view plain copy
 print?在CODE上查看代码片派生到我的代码片
  1. //播放器实例  
  2. var player = videojs('videoPlayer');  
  3.   
  4. //播放器初始化操作面板清晰度菜单  
  5.     function playerInitVideo() {  
  6.         $videoPanelMenu = $(".vjs-fullscreen-control");  
  7.         $videoPanelMenu.before('<div class="vjs-subtitles-button vjs-menu-button vjs-menu-button-popup vjs-control vjs-button" tabindex="0" role="menuitem" aria-live="polite" aria-expanded="false" aria-haspopup="true">'  
  8.                         + '<div class="vjs-menu" role="presentation">'  
  9.                         + '<ul class="vjs-menu-content" role="menu">'  
  10.                         + '<li class="vjs-menu-item" tabindex="-1" role="menuitemcheckbox"  onclick="changeUrl(this)">高清</li>'  
  11.                         + '<li class="vjs-menu-item vjs-selected" tabindex="-1" role="menuitemcheckbox"  onclick="changeUrl(this)">标清 </li>'  
  12.                         + '</ul></div><span class="vjs-control-text">清晰度</span></div>');  
  13.         }  
  14.     //加载页面进行播放器初始化  
  15.     player.ready(function() {  
  16.         playerInitVideo();  
  17.         //player.play();  
  18.         //setsrc(player,"rtmp://192.168.30.21/live/test3","rtmp/flv");  
  19.     });  
  20.       
  21.     //通过id获取DOM  
  22.     function get(index) {  
  23.         return document.getElementById(index);  
  24.     }  
  25.     //修改播放地址并播放  
  26.     function writeAddressAndPlay(index,url,type) {  
  27.         //播放器操作  
  28.         setsrc(index, url, type?type:"rtmp/flv");  
  29.         play(index);  
  30.     }  
  31.     //高清标清切换就是应用名加减HD  
  32.     function changeUrl(video) {  
  33.         var index = $(video).text();  
  34.         //获取当前播放的url  
  35.         var CurrentUrl = getCurrentAddr(player);  
  36.         $(".vjs-menu-item").removeClass("vjs-selected");  
  37.             $(video).addClass("vjs-selected");  
  38.         if (index == "高清") {  
  39.             if (CurrentUrl.indexOf("HD") == -1) {  
  40.                 CurrentUrl = CurrentUrl + "HD";  
  41.             } else {  
  42.                 return;  
  43.             }  
  44.         } else {  
  45.             if (CurrentUrl.indexOf("HD") != -1) {  
  46.                 CurrentUrl = CurrentUrl.replace("HD", "");  
  47.             } else {  
  48.                 return;  
  49.             }  
  50.         }  
  51.         //修改地址并播放  
  52.         writeAddressAndPlay(player, CurrentUrl);  
  53.     }  
  54.       
这只是一种方案,如果有更好的方案,可以采用其他方法。

我这里的两个实时流采用nginx流媒体服务器推送的两个实时流的方式(一个普清,一个高清),在命名方式上采用类似增减HD的方式控制,到这里就可以自由控制清晰度了


三、ckPlayer播放器嵌入页面

1、创建播放器实例

[html] view plain copy
 print?在CODE上查看代码片派生到我的代码片
  1.     <script type="text/javascript">  
  2.     //如果你不需要某项设置,可以直接删除,注意var flashvars的最后一个值后面不能有逗号  
  3.     function loadedHandler(){  
  4.         if(CKobject.getObjectById('ckplayer_a1').getType()){//说明使用html5播放器  
  5.             alert('播放器已加载,调用的是HTML5播放模块');  
  6.         }  
  7.         else{  
  8.             alert('播放器已加载,调用的是Flash播放模块');  
  9.         }  
  10.     }  
  11.     var _nn=0;  
  12.     function ckplayer_status(str){  
  13.         _nn+=1;  
  14.         if(_nn>100){  
  15.             _nn=0;  
  16.             document.getElementById('statusvalue').value='';  
  17.         }  
  18.         document.getElementById('statusvalue').value=str+'\n'+document.getElementById('statusvalue').value;  
  19.     }  
  20.       
  21.         var flashvars={  
  22.         f:'http://img.ksbbs.com/asset/Mon_1605/0ec8cc80112a2d6.mp4',//视频地址  
  23.         a:'',//调用时的参数,只有当s>0的时候有效  
  24.         s:'0',//调用方式,0=普通方法(f=视频地址),1=网址形式,2=xml形式,3=swf形式(s>0时f=网址,配合a来完成对地址的组装)  
  25.         c:'1',//是否读取文本配置,0不是,1是  
  26.         x:'',//调用配置文件路径,只有在c=1时使用。默认为空调用的是ckplayer.xml  
  27.         i:'',//初始图片地址  
  28.         d:'',//暂停时播放的广告,swf/图片,多个用竖线隔开,图片要加链接地址,没有的时候留空就行  
  29.         u:'',//暂停时如果是图片的话,加个链接地址  
  30.         l:'',//前置广告,swf/图片/视频,多个用竖线隔开,图片和视频要加链接地址  
  31.         r:'',//前置广告的链接地址,多个用竖线隔开,没有的留空  
  32.         t:'0|0',//视频开始前播放swf/图片时的时间,多个用竖线隔开  
  33.         y:'',//这里是使用网址形式调用广告地址时使用,前提是要设置l的值为空  
  34.         z:'',//缓冲广告,只能放一个,swf格式  
  35.         e:'2',//视频结束后的动作,0是调用js函数,1是循环播放,2是暂停播放并且不调用广告,3是调用视频推荐列表的插件,4是清除视频流并调用js功能和1差不多,5是暂停播放并且调用暂停广告  
  36.         v:'80',//默认音量,0-100之间  
  37.         p:'1',//视频默认0是暂停,1是播放,2是不加载视频  
  38.         h:'0',//播放http视频流时采用何种拖动方法,=0不使用任意拖动,=1是使用按关键帧,=2是按时间点,=3是自动判断按什么(如果视频格式是.mp4就按关键帧,.flv就按关键时间),=4也是自动判断(只要包含字符mp4就按mp4来,只要包含字符flv就按flv来)  
  39.         q:'',//视频流拖动时参考函数,默认是start  
  40.         m:'',//让该参数为一个链接地址时,单击播放器将跳转到该地址  
  41.         o:'',//当p=2时,可以设置视频的时间,单位,秒  
  42.         w:'',//当p=2时,可以设置视频的总字节数  
  43.         g:'',//视频直接g秒开始播放  
  44.         j:'',//跳过片尾功能,j>0则从播放多少时间后跳到结束,<0则总总时间-该值的绝对值时跳到结束  
  45.         k:'',//提示点时间,如 30|60鼠标经过进度栏30秒,60秒会提示n指定的相应的文字  
  46.         n:'',//提示点文字,跟k配合使用,如 提示点1|提示点2  
  47.         wh:'',//宽高比,可以自己定义视频的宽高或宽高比如:wh:'4:3',或wh:'1080:720'  
  48.         lv:'0',//是否是直播流,=1则锁定进度栏  
  49.         loaded:'loadedHandler',//当播放器加载完成后发送该js函数loaded  
  50.         //调用播放器的所有参数列表结束  
  51.         //以下为自定义的播放器参数用来在插件里引用的  
  52.         my_url:encodeURIComponent(window.location.href)//本页面地址  
  53.         //调用自定义播放器参数结束  
  54.         };  
  55.     var params={bgcolor:'#FFF',allowFullScreen:true,allowScriptAccess:'always'};//这里定义播放器的其它参数如背景色(跟flashvars中的b不同),是否支持全屏,是否支持交互  
  56.     var video=['http://192.168.30.21/test1HD.video.mp4'];  
  57.     CKobject.embed('ckplayer/ckplayer/ckplayer.swf','player1','ckplayer_1','720px','360px',false,flashvars,video,params);  
  58. </script>  

2、常用配置功能

     参考ckplayer官网功能配置

      



3、常用API

[html] view plain copy
 print?在CODE上查看代码片派生到我的代码片
  1.     function videoLoadJs(s){  
  2.         alert("执行了播放");  
  3.     }  
  4.     function playerstop(){  
  5.         //只有当调用视频播放器时设置e=0或4时会有效果  
  6.         alert('播放完成');    
  7.     }  
  8.     var _nn=0;//用来计算实时监听的条数的,超过100条记录就要删除,不然会消耗内存  
  9.       
  10.     function getstart(){  
  11.         var a=CKobject.getObjectById('ckplayer_1').getStatus();  
  12.         var ss='';  
  13.         for (var k in a){  
  14.             ss+=k+":"+a[k]+'\n';  
  15.         }  
  16.         alert(ss);  
  17.     }  
  18.   
  19.     function changePrompt(){  
  20.         CKobject.getObjectById('ckplayer_1').promptUnload();//卸载掉目前的  
  21.         CKobject.getObjectById('ckplayer_1').changeFlashvars('{k->10|20|30}{n->重设提示点一|重设提示点二|重设提示点三}');  
  22.         CKobject.getObjectById('ckplayer_1').promptLoad();//重新加载  
  23.     }  
  24.     function addflash(){  
  25.         if(CKobject.Flash()['f']){  
  26.             CKobject._K_('player1').innerHTML='';  
  27.             CKobject.embedSWF('ckplayer/ckplayer/ckplayer.swf','player1','ckplayer_1','600','400',flashvars,params);  
  28.         }  
  29.         else{  
  30.             alert('该环境中没有安装flash插件,无法切换');  
  31.         }  
  32.     }  
  33.     function addhtml5(){  
  34.         if(CKobject.isHTML5()){  
  35.             support=['all'];  
  36.             CKobject._K_('player1').innerHTML='';  
  37.             CKobject.embedHTML5('player1','ckplayer_1',600,400,video,flashvars,support);  
  38.         }  
  39.         else{  
  40.             alert('该环境不支持html5,无法切换');  
  41.         }  
  42.     }  
  43.     function addListener(){  
  44.         if(CKobject.getObjectById('ckplayer_1').getType()){//说明使用html5播放器  
  45.             CKobject.getObjectById('ckplayer_1').addListener('play',playHandler);  
  46.         }  
  47.         else{  
  48.             CKobject.getObjectById('ckplayer_1').addListener('play','playHandler');  
  49.         }  
  50.     }  
  51.     function playHandler(){  
  52.         alert('因为注册了监听播放,所以弹出此内容,删除监听将不再弹出');  
  53.     }  
  54.     function removeListener(){//删除监听事件  
  55.         if(CKobject.getObjectById('ckplayer_1').getType()){//说明使用html5播放器  
  56.             CKobject.getObjectById('ckplayer_1').removeListener('play',playHandler);  
  57.         }  
  58.         else{  
  59.             CKobject.getObjectById('ckplayer_1').removeListener('play','playHandler');  
  60.         }  
  61.     }  
  62. </script>  
  63. <input type="button" name="button23" value="切换到flash播放器" onClick="addflash();" />  
  64.   <input type="button" name="button24" value="切换到html5播放器" onClick="addhtml5();" />  
  65. </p>  
  66. <p>以下的操作对flash播放器和html5播放器都有效</p>  
  67. <p>  
  68. <input type="button" name="button5" value="播放" onClick="CKobject.getObjectById('ckplayer_1').videoPlay();" />  
  69.   <input type="button" name="button6" value="暂停" onClick="CKobject.getObjectById('ckplayer_1').videoPause();" />  
  70.   <input type="button" name="button7" value="播放/暂停" onClick="CKobject.getObjectById('ckplayer_a1').playOrPause();" />  
  71.   <input type="button" name="button8" value="快进" onClick="CKobject.getObjectById('ckplayer_1').fastNext();" />  
  72.   <input type="button" name="button9" value="快退" onClick="CKobject.getObjectById('ckplayer_1').fastBack();" />  
  73.   <input type="button" name="button15" value="暂停监听" onClick="CKobject.getObjectById('ckplayer_1').changeStatus(0);" />  
  74.   <input type="button" name="button16" value="加ID的监听" onClick="CKobject.getObjectById('ckplayer_1').changeStatus(3);" />  
  75.   <input type="button" name="button21" value="获取播放器当前相关属性" onClick="getstart();" />  
  76.   <input type="button" name="button13" value="注册监听播放事件" onClick="addListener();" />  
  77.   <input type="button" name="button14" value="删除监听播放事件" onClick="removeListener();" />  
  78. </p>  
  79. <p>  
  80.   播放新参数地址:  
  81.   <input name="newaddress" type="text" id="newaddress" value="" size="60" maxlength="300" />  
  82.   <input type="button" name="button" id="button" value="跳转" onClick="CKobject.getObjectById('ckplayer_1').newAddress(document.getElementById('newaddress').value);" /><br>  
  83. </p>  
  84. <p id="aboutme"></p>  
  85. <script type="text/javascript">  
  86. var aboutme='';  
  87. aboutme+='平台(浏览器)内核:'+CKobject.Platform()+'<br />';  
  88. aboutme+='浏览器:'+CKobject.browser()['B']+'<br />';  
  89. aboutme+='浏览器版本:'+CKobject.browser()['V']+'<br />';  
  90. aboutme+='是否安装了flash插件:'+CKobject.Flash()['f']+'<br />';  
  91. if(CKobject.Flash()['f']){  
  92.     aboutme+='flash插件版本:'+CKobject.Flash()['v']+'<br />';  
  93. }  
  94. aboutme+='是否支持HTML5:'+CKobject.isHTML5()+'<br />';  
  95. CKobject._K_('aboutme').innerHTML=aboutme;  

四、测试

videoJs初次拉取rtmp流播放时会出现,必须改变显示区域才能显示视频的bug,目前尚不清楚为什么,同样在推流端网络较差,推流断断续续的时候,video偶尔也会出现这种黑屏问题,尚不清楚原因,videojs无法手动设置buffer大小(缓冲时间)详见https://github.com/videojs/video.js/issues/1725,相比ckplayer效果比较好,直播我推荐使用ckplayer。

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

相关文章

车载android播放器,KX万能播放器

应用信息 全能播放器&#xff0c;支持所有流行的视频和音频格式&#xff0c;无需任何转换。 它的智能核心技术自动检测视频和音频格式&#xff0c;使得它更容易&#xff0c;让您享受更流畅&#xff0c;更优质的视频和音乐。 “视频&#xff01;音乐”在您手机的日常使用中将变得…

linux下网络播放器,月亮播放器:Linux无广告看片神器

在 LinuxMint/Ubuntu 系列系统中&#xff0c;使用如下 PPA 安装月亮播放器&#xff1a; sudo add-apt-repository ppa:cos-lyk/moonsoft sudo apt update sudo apt install moonplayer 安装完毕&#xff0c;月亮播放器就在你的主菜单之“影音”类别中等你了。启动月亮播放器&am…

android kmplayer,KMPlayer Pro — 安卓本地影音全能播放器

本文最后更新于2020-12-30 16:34:24,某些文章具有时效性,若有错误或已失效,请在下方留言或联系老夜。 MXPlayer早前老夜就分享过了并且一直在整理更新版本,随着在线视频播放的快捷与便利下载视频至本地播放的人群越来越少,但仍大有人在,首先在线播放的画质多多少少都有些…

android ipad 播放器,iPad 2高清视频播放器(AVPlayerHD)

因为iPad不支持的格式看不到视频,或转换格式工作很不方便吗?通过AVPlayer,大多数视频不需要另外的转换格式过程,就可以直接从iPad里看。使用USB简单复制一下视频和字幕即可。不需要担心网络连接就随时随地看视频。 功能&#xff1a; 支持多种格式视频文件流畅播放。支持 XVID/…

Linux 基于ffplay的简易视频播放器(网络+本地)

新手刚开始学习ffmpeg。 参考网上的ffmpeg资料和雷神的博客&#xff0c;简易做了个播放器&#xff0c;边学边做。 暂时未做音频&#xff0c;所以播放时有沙沙声。 视频的播放速度也有问题&#xff0c;需要再调整&#xff0c;后续再处理速度和音频的问题&#xff01; 额&#xf…

好用的android高清播放器,720p谁更流畅?安卓五款视频播放器对比

【IT168 应用】如今手机的流行趋势是屏幕越来越大,从3.5寸到3.7寸再到现在不少主流的安卓手机所采用的4.3寸屏幕,用手机来看电影已经是一项在我们日常生活中使用频率非常高的功能。而手机处理器性能的进化也让我们可以轻松的播放大多数网络上下载的电影资源。不过对于咱们安卓…

浏览器相关开发事项

文章目录 存储浏览器持久化存储&#xff08;F12->应用->存储&#xff09;浏览器缓存&#xff08;F12->内存&#xff09;浏览器存储管理单位&#xff08;域名/IP为单位&#xff09;区别localStorage VS 浏览器缓存localStorage VS cookies 存储 浏览器持久化存储&…

Linux---systemctl

1. systemctl命令 Linux系统很多软件&#xff08;内置或第三方&#xff09;均支持使用systemctl命令控制&#xff1a;启动、停止、开机自启。 能够被systemctl管理的软件&#xff0c;一般也称之为&#xff1a;服务 语法&#xff1a;systemctl start | stop | status | enabl…

Nginx服务基础、访问控制、虚拟主机

Nginx服务基础、访问控制、虚拟主机 关于Nginx一、编译安装Nginx服务1、关闭防火墙&#xff0c;将安装nginx所需软件包传到/opt目录下2、安装依赖包3、创建运行用户、组4、编译安装Nginx5、检查、启动、重启、停止 nginx服务6、添加 Nginx 系统服务 二、认识Nginx服务的主配置文…

实测:GPT 3.5 与GPT 4.0 回答问题能力对比

目录 一、问题 1 鲁迅为什么打周树人&#xff1f; 1&#xff09;GPT 3.5 2&#xff09;GPT 4.0 2 树上有9只鸟&#xff0c;猎人开枪打死一只&#xff0c;树上还剩下多少只鸟? 1&#xff09;GPT 3.5 2&#xff09;GPT 4.0 二、总结 一、问题 我们将通过两个问题&#x…

华为OD机试真题B卷 Java 实现【记负均正】,附详细解题思路

一、题目描述 首先输入要输入的整数个数n,然后输入n个整数。输出为n个整数中负数的个数,和所有正整数的平均值,结果保留一位小数。 0即不是正整数,也不是负数,不计入计算。如果没有正数,则平均值为0。 数据范围: 1≤n ≤2000 ,输入的整数都满足∣val∣≤1000 。 二、…

mmlab简介

title: mmlab简介 date: 2023-06-01 19:50:44 tags: [mmlab,pytorch] mmlab简介 mmlab算法库是mmlab实验室在github上开源的一系列算法。由港中文的汤晓鸥教授建立的。本节主要介绍mmlab算法库相关简介 思维导图如上。主要包括目标检测&#xff0c;3d点云&#xff0c;图像分割…

惠普打印机

设置菜单中的网络设置&#xff0c;在网络设置的无线菜单中&#xff0c;打开无线直接接&#xff0c;安全选择关闭 电脑连接惠普WiFi 访问192.168.223.1把打印机加入到 路由器里 此时打印机会生成一个固定的IP 访问ip查看是否正确 然后安装驱动 添加网络打印机&#xff1a;…

惠普Spectre x360 14变形本 评测

惠普Spectre x360 14支持360肆意翻转&#xff0c;笔记本模式、帐篷模式、站立模式、平板模式任意切换&#xff0c;满足多场景使用&#xff0c;搭配磁吸式4096压感级触控笔&#xff0c;随时随地书写。 机身轻至1.37kg&#xff0c;薄至16.99mm&#xff0c;携带无负担。机身采用全…

打印机、惠普打印机扫描分辨率低,扫描出来模糊,解决办法

使用惠普打印机扫描功能&#xff0c;发现分辨率最高只能设置到300&#xff0c;扫描出来文件很模糊&#xff0c;放大后细节不够清晰。 询问客服&#xff0c;发现分辨率设置和来源设置有关系&#xff0c;需要设置来源为:平板 然后分辨率就可以设置到更高了&#xff0c;扫描出来的…

touchpad android 7.1,发布了8年的惠普TouchPad平板,已可刷入安卓9 Pie

原标题&#xff1a;发布了8年的惠普TouchPad平板&#xff0c;已可刷入安卓9 Pie IT之家4月29日消息 惠普TouchPad是惠普首部采用Palm研发的webOS操作系统的平板电脑&#xff0c;2011年7月1日于美国首先推出。然而彼时的webOS已经日薄西山&#xff0c;惠普在仅仅49天后宣布该平板…

中国电信推首款3G平板电脑;惠普成为全球头号服务器销售商(每日关注20100526)...

中国电信推首款3G平板电脑 XPad时代将至 中国电信将于5月27日联合万事通推出“本土化设计”的国内首款3G平板电脑LifePad&#xff0c;将采用Android 2.1操作系统&#xff0c;内置EVDO及Wi-Fi上网模块&#xff0c;并加载了中国电信各项3G业务。业内人士认为&#xff0c;这意味着…

惠普ELITE X2 1012 G1平板拆机记录

介绍 HP Elite x2 1012 G1是惠普在2016年推出的一款二合一笔记本。 Elite x2 1012 G1分为多种配置&#xff0c;CPU分为第六代Core M 6Y30、Core M 6Y54、Core M 6Y57和Core M6Y75。从Core M 6Y57开始&#xff0c;搭载8GB LPDDR3 1866MHz&#xff0c;其余型号搭载4GB LPDDR3 1…

惠普Slate 7 Extreme平板,¥1206

http://digi.tech.qq.com/a/20140203/001298.htm 显示器&#xff1a;7英寸 1280 x 800 分辨率IPS材质 支持DirectStylus手写技术 处理器&#xff1a;1.8Ghz四核Tegra 4 内存空间&#xff1a;1GB 存储空间&#xff1a;16GB 摄像头&#xff1a;500万像素主摄像头&#xff0c;130万…