在ios平台上实现全功能视频处理 | 盛大微酷 赵志猛

95

Click here to load reader

Upload: imshining-devcamp

Post on 11-Jul-2015

5.878 views

Category:

Technology


9 download

TRANSCRIPT

Page 1: 在iOS平台上实现全功能视频处理 | 盛大微酷 赵志猛

iOS上开发视音频处理

微酷首席架构师 赵志猛

iOS DevCamp

Produced by CSDN

Website: http://devcamp.csdn.net

Weibo: http://weibo.com/cmdnclub

Thursday, August 2, 12

Page 2: 在iOS平台上实现全功能视频处理 | 盛大微酷 赵志猛

2000-2006

2006-2011

2011.5.

关于我

Thursday, August 2, 12

Page 3: 在iOS平台上实现全功能视频处理 | 盛大微酷 赵志猛

内容

什么是视音频处理

移动端的视音频处理

IRISTM引擎

微酷

Thursday, August 2, 12

Page 4: 在iOS平台上实现全功能视频处理 | 盛大微酷 赵志猛

什么是视音频处理

视音频处理就是增强视音频内容的可观赏性

转码

剪辑

滤镜和特效

视频叠层

音轨处理

Thursday, August 2, 12

Page 5: 在iOS平台上实现全功能视频处理 | 盛大微酷 赵志猛

视频转码

Thursday, August 2, 12

Page 6: 在iOS平台上实现全功能视频处理 | 盛大微酷 赵志猛

视频转码

文件格式

RMVB、AVI、WMV、MPG、DIVX、XVID、MOV、FLV/F4V、MP4、3GP ……

Thursday, August 2, 12

Page 7: 在iOS平台上实现全功能视频处理 | 盛大微酷 赵志猛

视频转码

文件格式

RMVB、AVI、WMV、MPG、DIVX、XVID、MOV、FLV/F4V、MP4、3GP ……

帧率

30fps、25fps、24fps、15fps、10fps ……

Thursday, August 2, 12

Page 8: 在iOS平台上实现全功能视频处理 | 盛大微酷 赵志猛

视频转码

分辨率和码率

SD 4:3、HD 16:9、IMAX 2.2:1 ……

CIF 352x288、480x360、VGA 640x480、1280x720、1920x1080、4096x3072 ……

互联网:流畅、标清、高清、超清

Thursday, August 2, 12

Page 9: 在iOS平台上实现全功能视频处理 | 盛大微酷 赵志猛

产品 视频码率@分辨率3.5~5Mbps@3072p, 3~4.3Mbps@1080p, 2~2.9Mbps@720p, 0.8~1Mbps@480p,

0.5Mbps@360p

1Mbps@622p, 500Kbps@378p, 300Kbps@288p

2Mbps@720p, 500Kbps@360p, 300Kbps@256p

1500Kbps@576p, 600Kbps@480p, 300Kbps@320p, 180Kbps@240p

上行1.4Mbps,分发800Kbps@360p

上行2.8Mbps,分发2.8Mbps或800Kbps@480p

上行512Kbps,分发512Kbps@360p

Thursday, August 2, 12

Page 10: 在iOS平台上实现全功能视频处理 | 盛大微酷 赵志猛

视频转码

编码算法

MPEG-2

DivX

MPEG-4 Part 10 H.264/AVC

VP8

AVS

Thursday, August 2, 12

Page 11: 在iOS平台上实现全功能视频处理 | 盛大微酷 赵志猛

音频转码

采样率

8K

44.1K、48K、96K

量化

8-bit、16-bit、24-bit、32-bit

·

人类听力范围:20Hz~20KHz

Thursday, August 2, 12

Page 12: 在iOS平台上实现全功能视频处理 | 盛大微酷 赵志猛

音频转码

声道

Mono、Stereo、5.1

码率

20Kbps~128Kbps、192Kbps

编码算法

PCM、WMA、MP3、AAC、AMR ……

Thursday, August 2, 12

Page 13: 在iOS平台上实现全功能视频处理 | 盛大微酷 赵志猛

剪辑

剪裁

拼接

Thursday, August 2, 12

Page 14: 在iOS平台上实现全功能视频处理 | 盛大微酷 赵志猛

滤镜和特效

颜色处理

图像处理

模板特效

变形特效

视频变速

Thursday, August 2, 12

Page 15: 在iOS平台上实现全功能视频处理 | 盛大微酷 赵志猛

颜色处理之颜色空间

RGB vs YUV

Thursday, August 2, 12

Page 16: 在iOS平台上实现全功能视频处理 | 盛大微酷 赵志猛

颜色处理之LOMO

LOMO公司,俄罗斯圣彼得堡

列宁格勒光学机械联盟

Lomographische AG公司,奥地利

过渡饱和、失衡曝光、模糊等

Thursday, August 2, 12

Page 17: 在iOS平台上实现全功能视频处理 | 盛大微酷 赵志猛

颜色处理之LOMO

LOMO公司,俄罗斯圣彼得堡

列宁格勒光学机械联盟

Lomographische AG公司,奥地利

过渡饱和、失衡曝光、模糊等

Thursday, August 2, 12

Page 18: 在iOS平台上实现全功能视频处理 | 盛大微酷 赵志猛

颜色处理之黑白

Thursday, August 2, 12

Page 19: 在iOS平台上实现全功能视频处理 | 盛大微酷 赵志猛

图像处理之马赛克

平均值法

随机采样法

各种让信号缺失的方法……

Thursday, August 2, 12

Page 20: 在iOS平台上实现全功能视频处理 | 盛大微酷 赵志猛

图像处理之马赛克

平均值法

随机采样法

各种让信号缺失的方法……

Thursday, August 2, 12

Page 21: 在iOS平台上实现全功能视频处理 | 盛大微酷 赵志猛

图像处理之马赛克

平均值法

随机采样法

各种让信号缺失的方法……

去马赛克可能吗?

Thursday, August 2, 12

Page 22: 在iOS平台上实现全功能视频处理 | 盛大微酷 赵志猛

图像处理之马赛克

平均值法

随机采样法

各种让信号缺失的方法……

死心吧去马赛克可能吗?

Thursday, August 2, 12

Page 23: 在iOS平台上实现全功能视频处理 | 盛大微酷 赵志猛

SOBEL算子边缘提取

图像处理之素描

Thursday, August 2, 12

Page 24: 在iOS平台上实现全功能视频处理 | 盛大微酷 赵志猛

SOBEL算子边缘提取

图像处理之素描

Thursday, August 2, 12

Page 25: 在iOS平台上实现全功能视频处理 | 盛大微酷 赵志猛

图像处理之色键

RGB空间 f(r, g, b) -> alpha

蓝屏或绿屏

YUV空间 f(y, u, v) -> alpha

完整色域的处理

Alpha Blending

Thursday, August 2, 12

Page 26: 在iOS平台上实现全功能视频处理 | 盛大微酷 赵志猛

图像处理之MotionBlur

Thursday, August 2, 12

Page 27: 在iOS平台上实现全功能视频处理 | 盛大微酷 赵志猛

图像处理之MotionBlur

Thursday, August 2, 12

Page 28: 在iOS平台上实现全功能视频处理 | 盛大微酷 赵志猛

模板特效之爆炸

Thursday, August 2, 12

Page 29: 在iOS平台上实现全功能视频处理 | 盛大微酷 赵志猛

模板特效之爆炸

Thursday, August 2, 12

Page 30: 在iOS平台上实现全功能视频处理 | 盛大微酷 赵志猛

模板特效之相框

Thursday, August 2, 12

Page 31: 在iOS平台上实现全功能视频处理 | 盛大微酷 赵志猛

变形特效之扭曲

Thursday, August 2, 12

Page 32: 在iOS平台上实现全功能视频处理 | 盛大微酷 赵志猛

变形特效之大眼

Thursday, August 2, 12

Page 33: 在iOS平台上实现全功能视频处理 | 盛大微酷 赵志猛

变形特效之鱼眼

Thursday, August 2, 12

Page 34: 在iOS平台上实现全功能视频处理 | 盛大微酷 赵志猛

视频变速之快慢放

改变视频播放的时长

10s

5s

15s

源视频:

快放:

慢放:

Thursday, August 2, 12

Page 35: 在iOS平台上实现全功能视频处理 | 盛大微酷 赵志猛

视频变速之快慢放

Thursday, August 2, 12

Page 36: 在iOS平台上实现全功能视频处理 | 盛大微酷 赵志猛

视频变速之快慢放

Thursday, August 2, 12

Page 37: 在iOS平台上实现全功能视频处理 | 盛大微酷 赵志猛

视频叠层

视频轨的概念

多轨合成

Video A

Video BVideo C

Thursday, August 2, 12

Page 38: 在iOS平台上实现全功能视频处理 | 盛大微酷 赵志猛

视频叠层之画中画

Thursday, August 2, 12

Page 39: 在iOS平台上实现全功能视频处理 | 盛大微酷 赵志猛

视频叠层之AlphaBlending

快速Blend

cr_C = cr_A * alpha_A + cr_B * (1 - alpha_A)

正片叠底

alpha_C = alpha_A + alpha_B - alpha_A * alpha_B

cr_C = (cr_A * alpha_A + cr_B * alpha_B * (1 - alpha_A)) / alpha_C

Thursday, August 2, 12

Page 40: 在iOS平台上实现全功能视频处理 | 盛大微酷 赵志猛

音轨处理

替换

混音

变速变调

自动增益

降噪

Thursday, August 2, 12

Page 41: 在iOS平台上实现全功能视频处理 | 盛大微酷 赵志猛

移动端的视音频处理

Thursday, August 2, 12

Page 42: 在iOS平台上实现全功能视频处理 | 盛大微酷 赵志猛

移动端的视音频处理

目标

实时拍摄、文件导入剪辑、实时渲染和预览360p、15fps、主观画质不能明显失真、要省流量全平台可播放:MP4 + AAC + AVC

Thursday, August 2, 12

Page 43: 在iOS平台上实现全功能视频处理 | 盛大微酷 赵志猛

移动端的视音频处理

目标

实时拍摄、文件导入剪辑、实时渲染和预览360p、15fps、主观画质不能明显失真、要省流量全平台可播放:MP4 + AAC + AVC

问题和挑战

不同的操作系统不同的硬件平台

Thursday, August 2, 12

Page 44: 在iOS平台上实现全功能视频处理 | 盛大微酷 赵志猛

性能

Thursday, August 2, 12

Page 45: 在iOS平台上实现全功能视频处理 | 盛大微酷 赵志猛

性能

15fps:每帧66ms内要完成拍摄/解码、特效、实时预览、编码、文件IO所有工作

Thursday, August 2, 12

Page 46: 在iOS平台上实现全功能视频处理 | 盛大微酷 赵志猛

性能

15fps:每帧66ms内要完成拍摄/解码、特效、实时预览、编码、文件IO所有工作

拍摄

解码特效 编码

1 2 31 2 3

缓冲队列 缓冲队列

Thursday, August 2, 12

Page 47: 在iOS平台上实现全功能视频处理 | 盛大微酷 赵志猛

性能

15fps:每帧66ms内要完成拍摄/解码、特效、实时预览、编码、文件IO所有工作

编解码⼀一定要用硬件,ffmpeg的实时性不给力

拍摄

解码特效 编码

1 2 31 2 3

缓冲队列 缓冲队列

Thursday, August 2, 12

Page 48: 在iOS平台上实现全功能视频处理 | 盛大微酷 赵志猛

性能

Thursday, August 2, 12

Page 49: 在iOS平台上实现全功能视频处理 | 盛大微酷 赵志猛

性能

特效渲染⼀一定要用GPU,Neon或类似SIMD指令是不够给力的

Thursday, August 2, 12

Page 50: 在iOS平台上实现全功能视频处理 | 盛大微酷 赵志猛

性能

特效渲染⼀一定要用GPU,Neon或类似SIMD指令是不够给力的

要尽可能 大化pipeline的并行性能,编解码硬件、CPU、GPU三者都是可以并行的

Thursday, August 2, 12

Page 51: 在iOS平台上实现全功能视频处理 | 盛大微酷 赵志猛

性能

特效渲染⼀一定要用GPU,Neon或类似SIMD指令是不够给力的

要尽可能 大化pipeline的并行性能,编解码硬件、CPU、GPU三者都是可以并行的

资源要复用,要做VideoFramePool、AudioFramePool、ShaderPool、VideoTexturePool、EffectPool等等

Thursday, August 2, 12

Page 52: 在iOS平台上实现全功能视频处理 | 盛大微酷 赵志猛

动态帧率

Thursday, August 2, 12

Page 53: 在iOS平台上实现全功能视频处理 | 盛大微酷 赵志猛

动态帧率

移动设备拍摄⼀一定会出动态帧率

iOS5以前只能设置 大帧率

iOS5以后可以同时控制 大 小帧率

Thursday, August 2, 12

Page 54: 在iOS平台上实现全功能视频处理 | 盛大微酷 赵志猛

动态帧率

移动设备拍摄⼀一定会出动态帧率

iOS5以前只能设置 大帧率

iOS5以后可以同时控制 大 小帧率

处理时的丢帧机制也会导致动态帧率

如果处理流水线在某个环节卡住,就需要丢帧

Thursday, August 2, 12

Page 55: 在iOS平台上实现全功能视频处理 | 盛大微酷 赵志猛

动态帧率

移动设备拍摄⼀一定会出动态帧率

iOS5以前只能设置 大帧率

iOS5以后可以同时控制 大 小帧率

处理时的丢帧机制也会导致动态帧率

如果处理流水线在某个环节卡住,就需要丢帧

解码时无法根据数学公式准确计算 后⼀一的位置或时间,需要做预测

Thursday, August 2, 12

Page 56: 在iOS平台上实现全功能视频处理 | 盛大微酷 赵志猛

像素格式

Thursday, August 2, 12

Page 57: 在iOS平台上实现全功能视频处理 | 盛大微酷 赵志猛

像素格式

YUV 4:2:0

视频编解码多基于这种格式,将Y和UV分片存储

Thursday, August 2, 12

Page 58: 在iOS平台上实现全功能视频处理 | 盛大微酷 赵志猛

像素格式

YUV 4:2:0

视频编解码多基于这种格式,将Y和UV分片存储

Y U V

Thursday, August 2, 12

Page 59: 在iOS平台上实现全功能视频处理 | 盛大微酷 赵志猛

像素格式

YUV 4:2:0

视频编解码多基于这种格式,将Y和UV分片存储

RGBA

数据连续,但数据量大,而且解码后要做⼀一次YUV到RGB的颜色转换

Thursday, August 2, 12

Page 60: 在iOS平台上实现全功能视频处理 | 盛大微酷 赵志猛

OpenGL ES

Thursday, August 2, 12

Page 61: 在iOS平台上实现全功能视频处理 | 盛大微酷 赵志猛

OpenGL ES

texture要按2^n对齐,显存利用率低

640x480 -> 1024x512,YUV⼀一帧768KB,RGBA⼀一帧2MB

Thursday, August 2, 12

Page 62: 在iOS平台上实现全功能视频处理 | 盛大微酷 赵志猛

OpenGL ES

texture要按2^n对齐,显存利用率低

640x480 -> 1024x512,YUV⼀一帧768KB,RGBA⼀一帧2MB

YUV4:2:0像素格式的texture管理方法

Luminance的Y + Luminance_alpha的UV

Thursday, August 2, 12

Page 63: 在iOS平台上实现全功能视频处理 | 盛大微酷 赵志猛

OpenGL ES

texture要按2^n对齐,显存利用率低

640x480 -> 1024x512,YUV⼀一帧768KB,RGBA⼀一帧2MB

YUV4:2:0像素格式的texture管理方法

Luminance的Y + Luminance_alpha的UV

下行不能直接用texture,要用render buffer

Thursday, August 2, 12

Page 64: 在iOS平台上实现全功能视频处理 | 盛大微酷 赵志猛

视频编码

AVC BaselineProfile

AVC MainProfile

理论上要比Baseline质量高出30%

Android部分低端机不支持

iOS的硬编码与Baseline没什么质量区别

Thursday, August 2, 12

Page 65: 在iOS平台上实现全功能视频处理 | 盛大微酷 赵志猛

音频编码

iOS4以后不再支持AMR

Android2.3以前Native只能录AMR,不能录AAC,但可以播AAC

Thursday, August 2, 12

Page 66: 在iOS平台上实现全功能视频处理 | 盛大微酷 赵志猛

剪辑

Thursday, August 2, 12

Page 67: 在iOS平台上实现全功能视频处理 | 盛大微酷 赵志猛

剪辑

逐帧剪,要做好解码控制

Thursday, August 2, 12

Page 68: 在iOS平台上实现全功能视频处理 | 盛大微酷 赵志猛

剪辑

逐帧剪,要做好解码控制

拼接点如果做过渡,比较难控制

视频总长会变短

A B

Thursday, August 2, 12

Page 69: 在iOS平台上实现全功能视频处理 | 盛大微酷 赵志猛

剪辑

逐帧剪,要做好解码控制

拼接点如果做过渡,比较难控制

视频总长会变短

拼接点附近音频要CrossFade,防止硬切换的爆音

A B

Thursday, August 2, 12

Page 70: 在iOS平台上实现全功能视频处理 | 盛大微酷 赵志猛

剪辑

逐帧剪,要做好解码控制

拼接点如果做过渡,比较难控制

视频总长会变短

拼接点附近音频要CrossFade,防止硬切换的爆音

拼接不同分辨率与幅面比的视频时要做好适配

A B

Thursday, August 2, 12

Page 71: 在iOS平台上实现全功能视频处理 | 盛大微酷 赵志猛

分辨率不统⼀一

Thursday, August 2, 12

Page 72: 在iOS平台上实现全功能视频处理 | 盛大微酷 赵志猛

分辨率不统⼀一各种移动端输出各种分辨率

iOS5以前只能出HighQuality、VGA640x480、MediumQuality、LowQuality,5以后多了1280x720、1920x1080两种

Thursday, August 2, 12

Page 73: 在iOS平台上实现全功能视频处理 | 盛大微酷 赵志猛

分辨率不统⼀一各种移动端输出各种分辨率

iOS5以前只能出HighQuality、VGA640x480、MediumQuality、LowQuality,5以后多了1280x720、1920x1080两种

各种分辨率与幅面比的适配

完全拉伸,图像或变胖或变瘦按高或宽适配,面临填黑边、裁剪的问题牛掰的seam carving,算不过来

Thursday, August 2, 12

Page 74: 在iOS平台上实现全功能视频处理 | 盛大微酷 赵志猛

视频慢放

邻近帧采样会⼀一蹦⼀一蹦

相邻帧插值会有重影

运动估计加非线性插值的运算量非常大

10s

15s

输出输入帧映射示意

Thursday, August 2, 12

Page 75: 在iOS平台上实现全功能视频处理 | 盛大微酷 赵志猛

音轨处理

采集的单声道和音乐双声道的混音问题

大 小值的自动增益算法会失效

需要统计期望平均值然后做非线性增益

Thursday, August 2, 12

Page 76: 在iOS平台上实现全功能视频处理 | 盛大微酷 赵志猛

码率问题

Thursday, August 2, 12

Page 77: 在iOS平台上实现全功能视频处理 | 盛大微酷 赵志猛

码率问题

iOS拍摄的视频文件码率很高

即使是VGA640x480的分辨率,码率仍然在2~3Mbps,30秒就要耗掉10MB,赶上蓝光

Thursday, August 2, 12

Page 78: 在iOS平台上实现全功能视频处理 | 盛大微酷 赵志猛

码率问题

iOS拍摄的视频文件码率很高

即使是VGA640x480的分辨率,码率仍然在2~3Mbps,30秒就要耗掉10MB,赶上蓝光

码率的选择

对于移动3G而言:W x H x (3~6)bps

我们的实验结果:512Kbps@480x360

Thursday, August 2, 12

Page 79: 在iOS平台上实现全功能视频处理 | 盛大微酷 赵志猛

文件格式

3GP格式逐渐不被支持iOS生成的mp4文件metadata在 后,部分Android设备不能播,flash如果要播则需要完全加载完文件才行,所以 后要把metadata换到文件前面去

MOV 3GP(*) flv/f4v mp4(*)

iOS Native YES YES - YES

Android Native - YES YES YES

Flash - YES YES YES

HTML5 YES YES - YES

PlayerFormat

Thursday, August 2, 12

Page 80: 在iOS平台上实现全功能视频处理 | 盛大微酷 赵志猛

HOME键/锁屏

Thursday, August 2, 12

Page 81: 在iOS平台上实现全功能视频处理 | 盛大微酷 赵志猛

HOME键/锁屏

线程即刻会被挂起,内存资源可能会被回收

Thursday, August 2, 12

Page 82: 在iOS平台上实现全功能视频处理 | 盛大微酷 赵志猛

HOME键/锁屏

线程即刻会被挂起,内存资源可能会被回收

要立刻交还所有的硬件资源

摄像头、麦克风、GPU、编解码器

Thursday, August 2, 12

Page 83: 在iOS平台上实现全功能视频处理 | 盛大微酷 赵志猛

HOME键/锁屏

线程即刻会被挂起,内存资源可能会被回收

要立刻交还所有的硬件资源

摄像头、麦克风、GPU、编解码器

如果是后期编辑在渲染,退入后台再回来,就需要从头开始渲染

Thursday, August 2, 12

Page 84: 在iOS平台上实现全功能视频处理 | 盛大微酷 赵志猛

HOME键/锁屏

线程即刻会被挂起,内存资源可能会被回收

要立刻交还所有的硬件资源

摄像头、麦克风、GPU、编解码器

如果是后期编辑在渲染,退入后台再回来,就需要从头开始渲染

程序逻辑与渲染流水控制极其麻烦

Thursday, August 2, 12

Page 85: 在iOS平台上实现全功能视频处理 | 盛大微酷 赵志猛

边播边存

MPMoviePlayer是不能边播边存的

要自己搭建本地的HttpServer做Proxy

主要是为用户省流量,提高二次观看体验

Thursday, August 2, 12

Page 86: 在iOS平台上实现全功能视频处理 | 盛大微酷 赵志猛

IRISTM引擎

Interactive Rendering Integrated System

全平台

Thursday, August 2, 12

Page 87: 在iOS平台上实现全功能视频处理 | 盛大微酷 赵志猛

Timeline Manager

Output

Preview

Encode Engine

Render Engine

Decode EngineInput

Effect Manager

Thursday, August 2, 12

Page 88: 在iOS平台上实现全功能视频处理 | 盛大微酷 赵志猛

技术 编解码 渲染 拍摄 后期制作

iOS硬件CPUGPU

硬件 GPU实时特效 实时

视频剪辑特效混音字幕

Android硬件CPUGPU

硬件解CPU编 GPU实时特效 实时 开发中

Web FlashHTML5 GPU GPU实时 实时 同iOS

Server CPU CPU CPU超实时 无 无

Thursday, August 2, 12

Page 89: 在iOS平台上实现全功能视频处理 | 盛大微酷 赵志猛

iOS模块实现框图

MMFoundation

RenderEngine EncodeEngineDecodeEngine

AudioDecoder VideoDecoder

CaptureManager

MMDataStructure

VideoFramePoolAudioFramePool

EffectManager

ShaderPool VideoTexturePool

ScreenRenderObjTimelineManager ThreadManager

Thursday, August 2, 12

Page 90: 在iOS平台上实现全功能视频处理 | 盛大微酷 赵志猛

iOS模块实现框图

MMFoundation

RenderEngine EncodeEngineDecodeEngine

AudioDecoder VideoDecoder

CaptureManager

MMDataStructure

VideoFramePoolAudioFramePool

EffectManager

ShaderPool VideoTexturePool

ScreenRenderObjTimelineManager ThreadManager

Thursday, August 2, 12

Page 91: 在iOS平台上实现全功能视频处理 | 盛大微酷 赵志猛

iOS模块实现框图

MMFoundation

RenderEngine EncodeEngineDecodeEngine

AudioDecoder VideoDecoder

CaptureManager

MMDataStructure

VideoFramePoolAudioFramePool

EffectManager

ShaderPool VideoTexturePool

ScreenRenderObjTimelineManager ThreadManager

Thursday, August 2, 12

Page 92: 在iOS平台上实现全功能视频处理 | 盛大微酷 赵志猛

微酷集成了IRIS引擎的移动微视频分享社区

特点

所见即所得的拍摄体验

512Kbps码率,接近专业标清画质

流畅的3G网络视频上传和观看体验

以话题、地点等聚合视频

基于用户兴趣的个性推荐

Thursday, August 2, 12

Page 93: 在iOS平台上实现全功能视频处理 | 盛大微酷 赵志猛

Thursday, August 2, 12

Page 94: 在iOS平台上实现全功能视频处理 | 盛大微酷 赵志猛

Thursday, August 2, 12

Page 95: 在iOS平台上实现全功能视频处理 | 盛大微酷 赵志猛

Q&A

微酷捕捉精彩 瞬间分享

主页:http://vku.sdo.com邮件:[email protected]微博:@vku微酷 http://weibo.com/vkuvku

Thursday, August 2, 12