对web网页哪些播放器可以看a片的实践过程,学习到哪些技术

 上传我的文档
 下载
 收藏
该文档贡献者很忙,什么也没留下。
 下载此文档
正在努力加载中...
Web性能测试技术的研究与实践
下载积分:1500
内容提示:Web性能测试技术的研究与实践
文档格式:PDF|
浏览次数:14|
上传日期: 04:59:22|
文档星级:
该用户还上传了这些文档
Web性能测试技术的研究与实践
官方公共微信纸飞机许愿
前端路上,一路有你。编辑你的正能量,快乐工作,努力生活~
> 移动端HTML5&video&视频播放优化实践
移动端HTML5&video&视频播放优化实践
作者: 轩枫
点击量:1879
遇到的挑战
移动端HTML5使用原生&video&标签播放视频,要做到两个基本原则,速度快和体验佳,先来分析一下这两个问题。
以一个8s短视频为例,wifi环境下提供的高清视频达到1000kbps,文件大小大约1MB;非wifi环境下提供的低码率视频是500kbps左右,文件大小大约500KB;参考QzoneTouch多普勒测速,2g网络的平均速度是14KB/s,那么下载一个低码率视频耗时35s;那么要想流畅播放视频,就需要一个加载等待的过程,这个过程要有明确的反馈,不能让用户有“坏掉了”的感觉。
多普勒测速数据参考
tran(kb/s)
视频是否可以自动播放,是否能循环播放,是否能显示下载进度,播放的时候如何隐藏控制条,暂停的时候又能显示出来呢。这些问题看上去貌似简单,但是由于PC/iOS/Android这些不同平台、不同的浏览器内核、甚至相同内核的不同版本,所实现的&video&属性、方法和事件差异较大,解决兼容性问题又给开发造成了很大困扰。
下面是播放一个短视频,在不同平台触发事件和获取属性的差异表现。
readyState
currentTime (s)
buffered (s)
duration (s)
durationchange
获取到视频长度
loadedmetadata
获取到元数据
loadeddata
ENOUGHDATA
ENOUGH_DATA
ENOUGH_DATA
canplaythrough
ENOUGH_DATA
可以流畅播放
ENOUGH_DATA
timeupdate
ENOUGH_DATA
播放进度变化
ENOUGH_DATA
ENOUGH_DATA
timeupdate
ENOUGH_DATA
继续播放中
timeupdate
ENOUGH_DATA
timeupdate
ENOUGH_DATA
timeupdate
ENOUGH_DATA
ENOUGH_DATA
播放完毕进度回到起点
ENOUGH_DATA
ENOUGH_DATA
canplaythrough
ENOUGH_DATA
timeupdate
ENOUGH_DATA
readyState
currentTime (s)
buffered (s)
duration (s)
durationchange
获取到视频长度
loadedmetadata
获取到元数据
loadeddata
ENOUGHDATA
ENOUGH_DATA
canplaythrough
ENOUGH_DATA
可以流畅播放
ENOUGH_DATA
ENOUGH_DATA
ENOUGH_DATA
timeupdate
ENOUGH_DATA
播放进度变化
timeupdate
ENOUGH_DATA
timeupdate
ENOUGH_DATA
ENOUGH_DATA
播放完毕进度回到起点
timeupdate
ENOUGH_DATA
readyState
currentTime (s)
buffered (s)
duration (s)
durationchange
ENOUGH_DATA
durationchange
ENOUGH_DATA
获取到视频长度
loadedmetadata
ENOUGH_DATA
获取到元数据
loadeddata
ENOUGHDATA
ENOUGH_DATA
canplaythrough
ENOUGH_DATA
ENOUGH_DATA
timeupdate
ENOUGH_DATA
ENOUGH_DATA
timeupdate
ENOUGH_DATA
ENOUGH_DATA
timeupdate
ENOUGH_DATA
ENOUGH_DATA
timeupdate
ENOUGH_DATA
ENOUGH_DATA
播放完毕进度回到起点
timeupdate
ENOUGH_DATA
ENOUGH_DATA
循环播放失败卡住了
ENOUGH_DATA
ENOUGH_DATA
一些常用且需要重点关注的&video&事件
******************
***********************************************
***********************************************
只是要播放视频,响应的是video.play()方法,并不代表已经开始播放
和iOS一样,仅是响应video.play()方法
durationchange
会执行一次,一定会获取到视频的duration
可能会执行多次,只有最后一次才能获取到真实的duration,前面的duration都是0;但低版本Android可能获取到的duration是0或1;(本文提到的低版本Android大部分是4.1以下)
可以认为是视频元素没有问题,可以运行,没有更多含义了,基本用不上
canplaythrough
会有明确的缓冲,表示可以流畅播放了;
没有什么用,视频仍然会卡住,数据可能还没有开始加载;
明确表示播放开始了;
依然没有用,视频可能并没有开始播放;
有明确的下载,可以获取到当前的buffer,并且全部下载完毕后不在触发;
不一定有明确的数据下载,并且全部下载完毕后依然继续触发;
timeupdate
会有明确的进度变化,可以获取到currentTime;
进度不一定变化,currentTime可能总是0,但是第一次有currentTime变化的timeupdate事件一定代表了视频开始播放了;
iOS中会有明确的错误抛出;
Android中某些浏览器会莫名其妙的抛出error;
网络状况不佳,导致视频下载中断;
在没有play之前,也可能会抛出该事件。
attributes
******************
***********************************************
***********************************************
支持,但是加载速度明显比在&img&中要慢;
不一定支持(浏览器厂商的实现标准不统一);
iPhone不支持;
可能支持;
iPhone Safari中不支持,但在webview中可能被开启;iOS开发文档明确说明蜂窝网络下不允许autoplay;
可能支持;
可能支持;
支持,但是需要开始播放了才显示
基本都支持显示或者不显示
width和height
一定给出明确的属性设置,切不能为0;
如果不设置,仅仅通过CSS样式去控制视频大小,可能会导致标签失效。
其他怪异bug和不友好表现
*********************************************************
*********************************************************
物理位置覆盖在&video&区域上的元素,click和touch等事件会失效,比如一个&a&链接如果覆盖在&video&上,那么点击后没有任何效果。
iOS8.0+中,单页面播放视频超过16个,再播放的视频全部MediaError解码异常无法播放。
iPhone的Safari会弹出一个全屏的播放器来播放视频,iPad则支持内联播放。iOS7+ 如果webview(比如微信)开启了webview.allowsInlineMediaPlayback = YES;,可以通过设置webkit-playsinline属性支持内联播放;
支持内联播放,但某些厂商会用自己的播放器劫持原生的视频播放;
下载视频时,会先发送一个2字节的请求来获取视频元数据(比如时长),然后再不断的发送分包续传(206)请求来下载视频,抓包显示请求数和请求量至少有一倍的冗余(x2),这个严重的bug在iOS8中有明显的修复,但是分包的206请求仍然会有冗余数据的下载,浪费了流量。
比iOS的处理方式好,没有第一个2字节请求,没有流量损耗;
低版本Android(&=4.0.4)中,&video&如果在有相对和决定定位的层中,可能会导致整个页面错位。
某些浏览器厂商会劫持&video&,用其“自己”的播放器来播放视频,“破坏”了产品本身的播放体验,那么只能case by case的解决了。
加载视频时没有进度提示,视觉上看不出是播放完了还是卡住了;
加载视频时,大都会显示一个自带的loading UI(菊花)。
视频初始化
如果将一个&video&直接显示在页面中,那么就会看到各种五花八门的播放器初始效果;
这显然不是一个好的视觉体验,那么通常的做法是制作一个模拟的视频播放视图,比如一个封面加一个播放按钮。
而真实的&video&视频元素要隐藏起来,如何隐藏呢?最好不要用{display: none}或者{width:0;height:0;}的方式,因为这样视频元素会处于未激活的状态,给后续的处理带来麻烦。最佳的方式是将视频设置成1×1像素大小,放在视觉边缘的位置。
&!--iOS--&
&video webkit-playsinline width="1" height="1" class="vplayinside notaplink" x-webkit-airplay controls loop="loop" src="&%=src%&"&&/video&
&!--Android--&
&video width="1" height="1" controls loop="loop" src="&%=src%&"&&/video&
&!--iOS--&&video webkit-playsinline width="1" height="1" class="vplayinside notaplink" x-webkit-airplay controls loop="loop" src="&%=src%&"&&/video&&&!--Android--&&video width="1" height="1" controls loop="loop" src="&%=src%&"&&/video&
autoplay的支持依赖内核和网络状况,比如iPhone在蜂窝网络下明确禁用了autoplay;
经过试验,在没有明确的用户操作的情况下,直接通过video.play()也是无法激活播放的;
并且在产品设计上,自动播放也不是一个舒服的用户体验,所以产品设计上尽量避免使用自动播放。
之前提到,视频最好通过1px大小隐藏起来,那么这时如何触发播放呢?
经过试验,当在明确的用户操作(touch、click)时,通过这些用户行为事件的回调函数,用video.play()是可以触发视频播放的,那么能否在用户操作后,再去同步的创建和播放视频呢?答案是肯定的,这无疑是一个视频元素初始化的最佳实践,但是有些差异需要注意。
可以在用户的touch时间中动态创建并播放视频。
可以在用户的touch时间中动态创建视频,但不能播放;要再追加一个click事件来启动播放;也就是说,给伪造的视频播放按钮同时绑定tap和click事件,在tap的时候创建,在之后300毫秒的click中去播放。
大部分高版本Android可以像iOS6+那样去处理,但是低版本的不行,必须要通过click事件去传递video.play(),为了保持兼容,最好是用帮tap和click两个事件来分别完成视频的初始化和播放。
我们还发现,有些低版本Android中,无法通过video.play()来播放视频,必须有真实的用户点击视频元素才能播放;这种情况,有一个技巧就是在tap的时候初始化并放大视频覆盖在播放视图中,让300毫秒后的真实点击行为穿透点击在视频元素上来实现播放。
如果视频需要循环播放,那么就增加loop属性,是否能循环播放就看浏览器是否支持了,因为还没有找到hack技巧来强制循环播放;
即使,在不支持循环播放的Android中,通过监听seeked事件知道了播放进度到了终点或起点暂停了,此时也无法通过video.play()来让视频重新播放。
监控下载进度
如何获取视频时长和已经下载的时长?
// 视频时长
var duration = video.duration
// 获取视频已经下载的时长
function getEnd(video) {
var end = 0
end = video.buffered.end(0) || 0
end = parseInt(end * 1000 + 1) / 1000
} catch(e) {
return end
<div class="crayon-num" data-line="crayon-563ea<div class="crayon-num crayon-striped-num" data-line="crayon-563ea<div class="crayon-num" data-line="crayon-563ea<div class="crayon-num crayon-striped-num" data-line="crayon-563ea<div class="crayon-num" data-line="crayon-563ea<div class="crayon-num crayon-striped-num" data-line="crayon-563ea<div class="crayon-num" data-line="crayon-563ea<div class="crayon-num crayon-striped-num" data-line="crayon-563ea<div class="crayon-num" data-line="crayon-563ea<div class="crayon-num crayon-striped-num" data-line="crayon-563ea<div class="crayon-num" data-line="crayon-563ea<div class="crayon-num crayon-striped-num" data-line="crayon-563ea<div class="crayon-num" data-line="crayon-563ea
// 视频时长var duration = video.duration&// 获取视频已经下载的时长function getEnd(video) {&&var end = 0&&try {&&&&end = video.buffered.end(0) || 0&&&&end = parseInt(end * 1000 + 1) / 1000&&} catch(e) {&&}&&return end}
progress事件表示视频在加载,但是它的触发频率和时机并不规律,最佳做法是通过一个定时器去实时获取end,当end &= duration时,表示已经下载完毕,再终止定时器。
var timer = setInterval(function() {
var end = getEnd(video),
duration = video.duration
if(end & duration) {
clearInterval(timer)
<div class="crayon-num" data-line="crayon-563ea<div class="crayon-num crayon-striped-num" data-line="crayon-563ea<div class="crayon-num" data-line="crayon-563ea<div class="crayon-num crayon-striped-num" data-line="crayon-563ea<div class="crayon-num" data-line="crayon-563ea<div class="crayon-num crayon-striped-num" data-line="crayon-563ea<div class="crayon-num" data-line="crayon-563ea<div class="crayon-num crayon-striped-num" data-line="crayon-563ea<div class="crayon-num" data-line="crayon-563ea<div class="crayon-num crayon-striped-num" data-line="crayon-563ea
var timer = setInterval(function() {&&var end = getEnd(video),&&&&&&&&duration = video.duration&&&if(end & duration) {&&&&return&&}&&&clearInterval(timer)}, 1000)
全部下载后再播放
假设播放短视频,如果网络不佳,会造成播放断断续续,在iOS中这种停顿还没有一个明确的等待提示,这不是一个好的体验,那么是否可以将视频全部下载完毕再播放呢?
在iOS中,可以在视频刚开始下载的时候马上暂停,此时下载还将继续,可以做一个loading的菊花告知视频正在加载,然后等到视频全部下载完再开始播放。
$(video).one('loadeddata', function() {
// 暂停,但下载还在继续
video.pause()
// 启动定时器检测视频下载进度
var timer = setInterval(function() {
var end = getEnd(video),
duration = video.duration
if(end & duration) {
var width = $(video).parent().width()
// 下载完了,开始播放吧
$(video).attr{
width: width,
height: width
video.play()
clearInterval(timer)
<div class="crayon-num" data-line="crayon-563ea<div class="crayon-num crayon-striped-num" data-line="crayon-563ea<div class="crayon-num" data-line="crayon-563ea<div class="crayon-num crayon-striped-num" data-line="crayon-563ea<div class="crayon-num" data-line="crayon-563ea<div class="crayon-num crayon-striped-num" data-line="crayon-563ea<div class="crayon-num" data-line="crayon-563ea<div class="crayon-num crayon-striped-num" data-line="crayon-563ea<div class="crayon-num" data-line="crayon-563ea<div class="crayon-num crayon-striped-num" data-line="crayon-563ea<div class="crayon-num" data-line="crayon-563ea<div class="crayon-num crayon-striped-num" data-line="crayon-563ea<div class="crayon-num" data-line="crayon-563ea<div class="crayon-num crayon-striped-num" data-line="crayon-563ea<div class="crayon-num" data-line="crayon-563ea<div class="crayon-num crayon-striped-num" data-line="crayon-563ea<div class="crayon-num" data-line="crayon-563ea<div class="crayon-num crayon-striped-num" data-line="crayon-563ea<div class="crayon-num" data-line="crayon-563ea<div class="crayon-num crayon-striped-num" data-line="crayon-563ea<div class="crayon-num" data-line="crayon-563ea<div class="crayon-num crayon-striped-num" data-line="crayon-563ea<div class="crayon-num" data-line="crayon-563ea<div class="crayon-num crayon-striped-num" data-line="crayon-563ea<div class="crayon-num" data-line="crayon-563ea
$(video).one('loadeddata', function() {&&// 暂停,但下载还在继续&&video.pause()&&&// 启动定时器检测视频下载进度&&var timer = setInterval(function() {&&&&var end = getEnd(video),&&&&&&&&duration = video.duration&&&&&if(end & duration) {&&&&&&return&&&&}&&&&&var width = $(video).parent().width()&&&&&// 下载完了,开始播放吧&&&&$(video).attr{&&&&&&width: width,&&&&&&height: width&&&&}&&&&video.play()&&&&&clearInterval(timer)&&}, 1000)})
缓冲播放——边下边播时,选择开始播放的最佳时间点
当视频越来越长或者网络慢时,等待视频全部下载完再播放也不是好的体验,最好能边下边播,缓冲到流畅状态就开始播放,那什么时候播放才是最佳时间点呢?
在iOS中,canplaythrough事件就是这个最佳时间点,它是通过动态计算缓冲量和下载速度得出的视频可以流畅播放的状态反馈。
canplaythrough event: The user agent estimates that if playback were to be started now, the media resource could be rendered at the current playback rate all the way to its end without having to stop for further buffering.
注意:下载完再播放和缓冲播放只适用于iOS。
统计播放时间和播放次数
要统计实际的播放时间,要累加timeupdate事件变化的时间,再减去中间可能暂停的时间。
$video.on('playing', function() {
// 开始播放是打点
$video.attr('data-updateTime', +new Date())
$video.on('pause', function() {
// 暂停播放时清除打点
$video.removeAttr('data-updateTime')
// 累加播放时间
$video.on('timeupdate', function(event) {
var $video = $(event.target),
updateTime = parseInt($video.attr('data-updateTime') || 0),
playingTime = parseInt($video.attr('data-playingTime') || 0),
times = parseInt($video.attr('data-times') || 0),
newtimes = 0,
video = $video.get(0),
duration = parseFloat($video.attr('data-duration') || 0),
now = +new Date()
// 播放时间
playingTime = playingTime + now - updateTime
// 播放次数
newtimes = Math.ceil(playingTime / 1000 / duration)
$video.attr('data-playingTime', playingTime)
$video.attr('data-updateTime', now)
123456789101112131415161718192021222324252627282930
$video.on('playing', function() {&&// 开始播放是打点&&$video.attr('data-updateTime', +new Date())})&$video.on('pause', function() {&&// 暂停播放时清除打点&&$video.removeAttr('data-updateTime')})&// 累加播放时间$video.on('timeupdate', function(event) {&&var $video = $(event.target),&&&&&&updateTime = parseInt($video.attr('data-updateTime') || 0),&&&&&&playingTime = parseInt($video.attr('data-playingTime') || 0),&&&&&&times = parseInt($video.attr('data-times') || 0),&&&&&&newtimes = 0,&&&&&&video = $video.get(0),&&&&&&duration = parseFloat($video.attr('data-duration') || 0),&&&&&&now = +new Date()&&&// 播放时间&&playingTime = playingTime + now - updateTime&&&// 播放次数&&newtimes = Math.ceil(playingTime / 1000 / duration)&&&$video.attr('data-playingTime', playingTime)&&$video.attr('data-updateTime', now)})
对error事件做详细的上报;
对stalled事件做统计上报,并提示用户网络慢等。
微视触屏版iOS视频测速
获取到视频时长
开始流畅播放
全部下载完毕
视频长度(s)
HTML5 Video Events and API检测工具
W3C video 标准
如何在iOS7+的webview中内联播放视频
视频事件流水查看工具
设置滚动速度
扫一扫,用手机观看!
用微信扫描还可以
分享至好友和朋友圈
SocialRecruitment社会招聘
Javascript前端开发工程师
腾讯公司 微信企业应用中心
负责web前端JS的开发工作;负责web前端系统分析、优化与架构工作。
本科以上学历;
一年以上工作经验;
精通JavaScript、HTML、CSS等前台相关技术,熟悉W3C网页标准;
熟悉至少一种后台语言的开发机制(如Java,c++等);
有一定架构能力和算法能力,有良好编码规范;
良好的学习能力、沟通能力,追求完美,有工作激情,能在较大强度下工作。
I Want You
资深前端工程师
简历请发送至http:&#47;&#47;&#47;default.html,这是酷狗网页播放器,但不知道用什么技术实现的,看它源代码是js,_百度知道
http:&#47;&#47;&#47;default.html,这是酷狗网页播放器,但不知道用什么技术实现的,看它源代码是js,
在网页中但和本地播放软件效果相同?还是其中有flash编程,但感觉这个播放器很不错,或是其他什么java还是c#什么的。对这个不大懂只用js就可以做到吗。放到网页中就不用占用本地计算机资源。求高人指点
我有更好的答案
前者是前台程序语言,如果是java或php或C#的您好,如果是用JS的话,基本上不会占用用户本地计算机资源,后者是后台程序语言,这是会占用用户本地计算机资源的
其他类似问题
为您推荐:
网页播放器的相关知识
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁您好,欢迎来到北风网!
分享:999+
零基础Web前端开发工程师高端培训配项目开发(月薪过万的最佳选择)
普通会员:¥3800元
VIP会员价:最低¥2660元
课程讲师:叮咚
课程分类:BF-TECH品牌系列
适合人群:初级
课时数量:335课时
更新程度:完毕
服务类型:D类(自学类课程)
用到技术:PS、Flash、HTML、CSS、js框架、Ajax技术
涉及项目:支付宝社区、传统企业站、行业网站、轻博客
推荐用户购买,奖励5%,可提现哦!
深入浅出Hadoop实战开发(...
318022人喜欢
基于ASP.NET MVC+L...
211071人喜欢
北风网五级VIP会员(10T视...
210555人喜欢
Google Android移...
198804人喜欢
基于J2EE+JBPM3.x/...
188034人喜欢
李炎恢PHP第二季系列课程(配...
169557人喜欢
基于.net平台remotin...
164723人喜欢
基于J2EE平台下的strut...
152585人喜欢
北风网--asp.net版本文...
149094人喜欢
基于云计算Saas平台下的C2...
146306人喜欢
课程信息课程试看课程截图课程评论
还可以合买么?我也想合买的。光视频就3k+的实在接受无能
[管理员:]课程是有服务的
还可以合买么?合买的找个伴合伙
[管理员:]联系客服咨询
想买可资金有限啊,太贵了
有没有合买的朋友啊,本人是5级VIP,求合买。
总计 8 个记录,共 2 页。
看过本课程的学员还看了
普通会员:¥480.00
普通会员:¥1000.00
普通会员:¥380.00
普通会员:¥80.00
普通会员:¥240.00
普通会员:¥480.00
普通会员:¥680.00
普通会员:¥380.00
普通会员:¥480.00
普通会员:¥480.00
普通会员:¥240.00
普通会员:¥880.00
普通会员:¥1000.00
普通会员:¥480.00
普通会员:¥240.00
普通会员:¥480.00
普通会员:¥2400.00
普通会员:¥280.00
普通会员:¥2200.00
普通会员:¥240.00
普通会员:¥1200.00
普通会员:¥480.00
普通会员:¥580.00
普通会员:¥780.00
普通会员:¥1000.00
普通会员:¥880.00
普通会员:¥220.00
普通会员:¥500.00
普通会员:¥230.00
普通会员:¥280.00
普通会员:¥280.00
普通会员:¥480.00
普通会员:¥1000.00
普通会员:¥220.00
普通会员:¥1800.00
普通会员:¥1200.00
普通会员:¥280.00
普通会员:¥380.00
普通会员:¥780.00
普通会员:¥450.00
普通会员:¥3800.00
普通会员:¥180.00
普通会员:¥580.00
普通会员:¥480.00
普通会员:¥480.00
普通会员:¥480.00
普通会员:¥300.00
普通会员:¥280.00
普通会员:¥220.00
普通会员:¥280.00
普通会员:¥300.00
普通会员:¥60.00
普通会员:¥220.00
普通会员:¥240.00
普通会员:¥400.00
普通会员:¥680.00
普通会员:¥220.00
普通会员:¥280.00
普通会员:¥280.00
普通会员:¥580.00
普通会员:¥380.00
普通会员:¥220.00
普通会员:¥320.00
普通会员:¥480.00
普通会员:¥560.00
普通会员:¥1.00
普通会员:¥240.00
普通会员:¥240.00
普通会员:¥220.00
普通会员:¥400.00
普通会员:¥280.00
普通会员:¥400.00
普通会员:¥100.00
普通会员:¥380.00
普通会员:¥300.00
普通会员:¥240.00
普通会员:¥480.00
普通会员:¥380.00
普通会员:¥680.00
普通会员:¥240.00
普通会员:¥240.00
普通会员:¥280.00
普通会员:¥480.00
普通会员:¥68.00
普通会员:¥480.00
普通会员:¥380.00
普通会员:¥260.00
普通会员:¥2060.00
普通会员:¥580.00
普通会员:¥580.00
普通会员:¥480.00
普通会员:¥480.00
普通会员:¥240.00
普通会员:¥400.00
普通会员:¥580.00
普通会员:¥280.00
普通会员:¥480.00
普通会员:¥280.00
普通会员:¥240.00
普通会员:¥240.00
普通会员:¥1400.00
普通会员:¥280.00
普通会员:¥480.00
普通会员:¥480.00
普通会员:¥380.00
普通会员:¥386.00
普通会员:¥59.00
普通会员:¥400.00
普通会员:¥600.00
普通会员:¥300.00
普通会员:¥380.00
普通会员:¥380.00
普通会员:¥580.00
普通会员:¥580.00
普通会员:¥400.00
普通会员:¥150.00
普通会员:¥480.00
普通会员:¥50.00
普通会员:¥60.00
普通会员:¥2800.00
普通会员:¥480.00
普通会员:¥480.00
普通会员:¥240.00
普通会员:¥150.00
普通会员:¥280.00
普通会员:¥240.00
普通会员:¥320.00
普通会员:¥280.00
普通会员:¥240.00
普通会员:¥380.00
普通会员:¥180.00
普通会员:¥280.00
普通会员:¥40.00
普通会员:¥35.00
普通会员:¥35.00
普通会员:¥280.00
普通会员:¥360.00
普通会员:¥45.00
普通会员:¥280.00
普通会员:¥240.00
普通会员:¥180.00
普通会员:¥220.00
普通会员:¥1600.00
普通会员:¥880.00
普通会员:¥4800.00
普通会员:¥220.00
普通会员:¥240.00
普通会员:¥400.00
普通会员:¥380.00
普通会员:¥220.00
普通会员:¥680.00
普通会员:¥300.00
普通会员:¥220.00
普通会员:¥280.00
普通会员:¥220.00
普通会员:¥240.00
普通会员:¥220.00
普通会员:¥580.00
普通会员:¥220.00
普通会员:¥240.00
普通会员:¥360.00
普通会员:¥280.00
普通会员:¥280.00
普通会员:¥380.00
普通会员:¥3800.00
普通会员:¥320.00
普通会员:¥800.00
普通会员:¥280.00
普通会员:¥280.00
普通会员:¥1000.00
普通会员:¥600.00
普通会员:¥880.00
普通会员:¥1800.00
普通会员:¥1800.00
普通会员:¥2000.00
普通会员:¥1000.00
普通会员:¥1000.00
普通会员:¥1500.00
普通会员:¥680.00
普通会员:¥1600.00
普通会员:¥1500.00
普通会员:¥1000.00
普通会员:¥780.00
普通会员:¥580.00
普通会员:¥400.00
普通会员:¥120.00
普通会员:¥400.00
普通会员:¥320.00
普通会员:¥500.00
普通会员:¥240.00
普通会员:¥280.00
普通会员:¥680.00
普通会员:¥400.00
普通会员:¥400.00
普通会员:¥280.00
普通会员:¥380.00
普通会员:¥240.00
普通会员:¥480.00
普通会员:¥1000.00
普通会员:¥580.00
普通会员:¥220.00
普通会员:¥360.00
普通会员:¥580.00
普通会员:¥680.00
普通会员:¥380.00
普通会员:¥680.00
普通会员:¥580.00
普通会员:¥880.00
普通会员:¥300.00
普通会员:¥240.00
普通会员:¥580.00
普通会员:¥380.00
普通会员:¥240.00
普通会员:¥240.00
普通会员:¥380.00
普通会员:¥240.00
普通会员:¥380.00
普通会员:¥240.00
普通会员:¥220.00
普通会员:¥220.00
普通会员:¥580.00
普通会员:¥280.00
普通会员:¥450.00
普通会员:¥480.00
普通会员:¥220.00
普通会员:¥680.00
普通会员:¥880.00
普通会员:¥400.00
普通会员:¥280.00
普通会员:¥380.00
普通会员:¥60.00
普通会员:¥240.00
普通会员:¥50.00
普通会员:¥300.00
普通会员:¥380.00
普通会员:¥280.00
普通会员:¥480.00
普通会员:¥240.00
普通会员:¥240.00
普通会员:¥380.00
普通会员:¥280.00
普通会员:¥60.00
普通会员:¥480.00
普通会员:¥240.00
普通会员:¥180.00
普通会员:¥30.00
普通会员:¥59.00
普通会员:¥1380.00
普通会员:¥360.00
普通会员:¥240.00
普通会员:¥580.00
普通会员:¥380.00
普通会员:¥70.00
普通会员:¥380.00
普通会员:¥30.00
普通会员:¥220.00
普通会员:¥280.00
普通会员:¥280.00
普通会员:¥220.00
普通会员:¥70.00
普通会员:¥880.00
普通会员:¥70.00
普通会员:¥580.00
普通会员:¥220.00
普通会员:¥85.00
普通会员:¥59.00
普通会员:¥300.00
普通会员:¥50.00
普通会员:¥380.00
普通会员:¥300.00
普通会员:¥220.00
普通会员:¥40.00
普通会员:¥40.00
普通会员:¥240.00
普通会员:¥80.00
普通会员:¥40.00
普通会员:¥60.00
普通会员:¥240.00
普通会员:¥280.00
普通会员:¥300.00
普通会员:¥380.00
普通会员:¥680.00
普通会员:¥280.00
普通会员:¥480.00
普通会员:¥55.00
普通会员:¥680.00
普通会员:¥240.00
普通会员:¥240.00
普通会员:¥580.00
普通会员:¥220.00
普通会员:¥280.00
普通会员:¥500.00
普通会员:¥360.00
普通会员:¥240.00
普通会员:¥280.00
普通会员:¥80.00
普通会员:¥60.00
普通会员:¥580.00
普通会员:¥380.00
普通会员:¥280.00
普通会员:¥240.00
普通会员:¥1800.00
普通会员:¥280.00
普通会员:¥480.00
普通会员:¥350.00
普通会员:¥220.00
普通会员:¥360.00
普通会员:¥50.00
普通会员:¥50.00
普通会员:¥220.00
普通会员:¥35.00
普通会员:¥380.00
普通会员:¥300.00
普通会员:¥400.00
普通会员:¥280.00
普通会员:¥180.00
普通会员:¥220.00
普通会员:¥4200.00
普通会员:¥240.00
普通会员:¥220.00
普通会员:¥400.00
普通会员:¥60.00
普通会员:¥580.00
普通会员:¥60.00
普通会员:¥480.00
普通会员:¥180.00
普通会员:¥280.00
普通会员:¥220.00
普通会员:¥180.00
普通会员:¥400.00
普通会员:¥240.00
普通会员:¥6.00
普通会员:¥580.00
普通会员:¥2000.00
普通会员:¥580.00
普通会员:¥3000.00
普通会员:¥650.00
普通会员:¥580.00
普通会员:¥880.00
普通会员:¥580.00
普通会员:¥1200.00
普通会员:¥600.00
普通会员:¥580.00
普通会员:¥480.00
普通会员:¥1260.00
普通会员:¥800.00
普通会员:¥580.00
普通会员:¥480.00
普通会员:¥480.00
普通会员:¥780.00
普通会员:¥780.00
普通会员:¥580.00
普通会员:¥880.00
普通会员:¥1200.00
普通会员:¥0.00
普通会员:¥1800.00
普通会员:¥880.00
普通会员:¥880.00
普通会员:¥480.00
普通会员:¥480.00
普通会员:¥880.00
普通会员:¥400.00
普通会员:¥880.00
普通会员:¥1080.00
普通会员:¥1680.00
普通会员:¥880.00
普通会员:¥1280.00
普通会员:¥880.00
普通会员:¥1280.00
普通会员:¥1200.00
普通会员:¥580.00
普通会员:¥880.00
普通会员:¥0.00
普通会员:¥1000.00
普通会员:¥380.00
普通会员:¥1680.00
普通会员:¥2000.00
普通会员:¥3800.00
普通会员:¥1000.00
普通会员:¥800.00
普通会员:¥580.00
普通会员:¥580.00
普通会员:¥480.00
普通会员:¥880.00
普通会员:¥2100.00
普通会员:¥580.00
普通会员:¥480.00
普通会员:¥980.00
普通会员:¥260.00
普通会员:¥0.00
普通会员:¥1000.00
普通会员:¥1000.00
普通会员:¥380.00
普通会员:¥480.00
普通会员:¥680.00
普通会员:¥880.00
普通会员:¥480.00
普通会员:¥880.00
普通会员:¥880.00
普通会员:¥499.00
普通会员:¥488.00
普通会员:¥899.00
普通会员:¥488.00
普通会员:¥598.00
普通会员:¥900.00
普通会员:¥3800.00
普通会员:¥698.00
普通会员:¥680.00
普通会员:¥680.00
普通会员:¥480.00
普通会员:¥980.00
普通会员:¥1080.00
普通会员:¥680.00
普通会员:¥798.00
普通会员:¥498.00
普通会员:¥698.00
普通会员:¥1800.00
普通会员:¥1800.00
普通会员:¥698.00
普通会员:¥680.00
普通会员:¥280.00
普通会员:¥880.00
普通会员:¥2500.00
普通会员:¥3200.00
普通会员:¥3800.00
普通会员:¥320.00
普通会员:¥580.00
普通会员:¥480.00
普通会员:¥398.00
普通会员:¥698.00
普通会员:¥880.00
普通会员:¥680.00
普通会员:¥480.00
普通会员:¥800.00
普通会员:¥380.00
普通会员:¥2240.00
普通会员:¥3200.00
普通会员:¥3500.00
普通会员:¥2400.00
普通会员:¥898.00
普通会员:¥3200.00
普通会员:¥880.00
普通会员:¥580.00
普通会员:¥678.00
普通会员:¥680.00
普通会员:¥2240.00
普通会员:¥698.00
普通会员:¥3800.00
普通会员:¥780.00
普通会员:¥898.00
普通会员:¥780.00
普通会员:¥580.00
普通会员:¥1080.00
普通会员:¥8000.00
普通会员:¥680.00
普通会员:¥1200.00
普通会员:¥680.00
普通会员:¥480.00
普通会员:¥1080.00
普通会员:¥3500.00
普通会员:¥980.00
普通会员:¥480.00
普通会员:¥380.00
普通会员:¥2800.00
普通会员:¥380.00
普通会员:¥480.00
普通会员:¥380.00
普通会员:¥680.00
普通会员:¥1080.00
普通会员:¥580.00
普通会员:¥480.00
普通会员:¥2500.00
普通会员:¥550.00
普通会员:¥2500.00
普通会员:¥480.00
普通会员:¥480.00
普通会员:¥880.00
普通会员:¥580.00
普通会员:¥1500.00
普通会员:¥480.00
普通会员:¥580.00
普通会员:¥680.00
普通会员:¥880.00
普通会员:¥680.00
普通会员:¥480.00
普通会员:¥480.00
普通会员:¥4800.00
普通会员:¥1080.00
普通会员:¥880.00
普通会员:¥6800.00
普通会员:¥6800.00
普通会员:¥6800.00
普通会员:¥6800.00
普通会员:¥699.00
普通会员:¥699.00
普通会员:¥6800.00
普通会员:¥1080.00
普通会员:¥6800.00
普通会员:¥6800.00
普通会员:¥658.00
普通会员:¥1280.00
普通会员:¥880.00
普通会员:¥6800.00
普通会员:¥680.00
普通会员:¥2800.00
普通会员:¥4800.00
普通会员:¥880.00
普通会员:¥880.00
普通会员:¥1880.00
普通会员:¥6800.00
普通会员:¥980.00
普通会员:¥680.00
普通会员:¥1680.00
普通会员:¥1080.00
普通会员:¥1680.00
普通会员:¥1280.00
普通会员:¥1280.00
普通会员:¥880.00
普通会员:¥1880.00
普通会员:¥3200.00
普通会员:¥2240.00
普通会员:¥880.00
普通会员:¥680.00
普通会员:¥10800.00
普通会员:¥8000.00
普通会员:¥0.00
普通会员:¥0.00
普通会员:¥380.00
普通会员:¥2250.00
普通会员:¥1280.00
普通会员:¥880.00
普通会员:¥0.00
公司:上海育创网络科技有限公司
地址:上海浦东世纪大道1500号东方大厦13、16层
电话:400-018-6216}

我要回帖

更多关于 播放器有哪些 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信