`
mmdev
  • 浏览: 12847260 次
  • 性别: Icon_minigender_1
  • 来自: 大连
文章分类
社区版块
存档分类
最新评论

【幻灯片分享】iOS平台上开发音视频处理 | 盛大微酷 赵志猛 | iOS DevCamp

 
阅读更多

专业视频处理算法在移动开发中的优化:《iOS平台上开发音视频处理》| 盛大微酷赵志猛 | iOS DevCamp

主题简介:视频处理技术,已经在专业设备上得到了几十年的发展。但是这些处理方法和算法以往只能和那些专业视频处理设备高昂的价格,以及强劲的处理能力一起出现在大家的眼前。现在,终于有人将这些专业处理方法和算法,搬进了iOS手机之中。在iOS手机有限的运算能力和电力条件下,应该如何对专业视频处理算法进行取舍和优化。

赵志猛,IT单身男,于2006年获得北京理工大学自动控制硕士学位,专业导航、制导与控制。毕业后加入索贝数码,从事了5年视音频专业处理软件的算法研究与产品开发,2009年4月独立研发出基于CPU特殊指令集优化的视音频基础算法SDK,被公司纳为核心底层,后以主任工程师的身份成为算法研究小组负责人。2011年5月加入盛大创新院多媒体主题院,6月参与新酷6在线视频编辑系统项目,与微酷CTO杨继珩在一个月内完成了系统的设计、研发、测试及上线部署等所有工作,同年8月以联合创始人身份参与微酷的产品设计与研发。


推荐指数:4星半

推荐理由:内容非常全面,音频视频图像全囊括,实例讲述生动,演讲诙谐幽默,现场气氛活跃,QA环节与优酷/土豆工程师的“舌战”更是精彩。

不足之处:有价值的技术分享,但是还是太专业,受众群体有限。

现场评分:4.0


【讲师现场靓照】


【幻灯片在线观看】*:

<iframe src="http://www.slideshare.net/slideshow/embed_code/13838455" width="597" height="486" frameborder="0" marginwidth="0" marginheight="0" scrolling="no" style="border:1px solid #CCC;border-width:1px 1px 0;margin-bottom:5px" allowfullscreen=""> </iframe>

备注:* 因为炫姐姐对SlideShare这一平台的偏爱,尽管需要使点小技巧才能上传分享,但是炫姐姐还是坚持选择了这一功能强大却简洁好用的平台。一来对国外这些开发出优秀的工具和平台、造福于互联网和人类的团队表示致敬,二来则是对国内对于这些优秀的工具和平台的限制表示一下立场。读者如果不能正常浏览,那么需要像炫姐姐一样用点小技巧。而对于那些还是不知道炫姐姐在说什么的小白读者,可以移步到这里查询原因。


【幻灯片下载页面】:iOS DevCamp幻灯片分享:在iOS平台上实现全功能视频处理 | 盛大微酷 赵志猛 -来自CSDN下载频道(不需要积分,自由下载)


【幻灯片内容刚要】:

1. iOS上开发 视音频处理 微酷首席架构师 赵志猛 iOS DevCamp Produced by CSDN
2. 关于我 2000-2006 2006-2011 2011.5.
3. 内容 什么是视音频处理 移动端的视音频处理 IRISTM引擎 微酷
4. 什么是视音频处理 视音频处理就是增强视音频内容的可观赏性 转码 剪辑 滤镜和特效 视频叠层 音轨处理
5. 视频转码
6. 视频转码 文件格式 RMVB、AVI、WMV、MPG、DIVX、XVID、 MOV、FLV/F4V、MP4、3GP ……
7. 视频转码 文件格式 RMVB、AVI、WMV、MPG、DIVX、XVID、 MOV、FLV/F4V、MP4、3GP …… 帧率 30fps、25fps、24fps、15fps、10fps ……
8. 视频转码 分辨率和码率 SD 4:3、HD 16:9、IMAX 2.2:1 …… CIF 352x288、480x360、VGA 640x480、 1280x720、1920x1080、4096x3072 …… 互联网:流畅、标清、高清、超清
9. 产品 视频码率@分辨率 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
10. 视频转码 编码算法 MPEG-2 DivX MPEG-4 Part 10 H.264/AVC VP8 AVS
11. 音频转码 采样率 8K · 44.1K、48K、96K 量化 人类听力范围:20Hz~20KHz 8-bit、16-bit、24-bit、32-bit
12. 音频转码 声道 Mono、Stereo、5.1 码率 20Kbps~128Kbps、192Kbps 编码算法 PCM、WMA、MP3、AAC、AMR ……
13. 剪辑 剪裁 拼接
14. 滤镜和特效 颜色处理 图像处理 模板特效 变形特效 视频变
15. 颜色处理之颜色空间 RGB vs YUV
16. 颜色处理之LOMO LOMO公司,俄罗斯圣彼得堡 列宁格勒光学机械联盟 Lomographische AG公司,奥地利 过渡饱和、失衡曝光、模糊等
17. 颜色处理之LOMO LOMO公司,俄罗斯圣彼得堡 列宁格勒光学机械联盟 Lomographische AG公司,奥地利 过渡饱和、失衡曝光、模糊等
18. 颜色处理之黑白
19. 图像处理之马赛克 平均值法 随机采样法 各种让信号缺失的方法……
20. 图像处理之马赛克 平均值法 随机采样法 各种让信号缺失的方法……
21. 图像处理之马赛克 去马赛克可能吗? 平均值法 随机采样法 各种让信号缺失的方法……
22. 图像处理之马赛克 去马赛克可能吗? 吧 心 死 平均值法 随机采样法 各种让信号缺失的方法……
23. 图像处理之素描 SOBEL算子边缘提取
25. 图像处理之色键 RGB空间 f(r, g, b) -> alpha 蓝屏或绿屏 YUV空间 f(y, u, v) -> alpha 完整色域的处理 Alpha Blending
26. 图像处理之MotionBlur
28. 模板特效之爆炸
30. 模板特效之相框
31. 变形特效之扭曲
32. 变形特效之大眼
33. 变形特效之鱼眼
34. 视频变速之快慢放 改变视频播放的时长 源视频: 10s 快放: 5s 慢放: 15s
35. 视频变速之快慢放
37. 视频叠层 视频轨的概念 多轨合成 Video A Video C Video B
38. 视频叠层之画中画
39. 视频叠层之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
40. 音轨处理 替换 混音 变速变调 自动增益 降噪
41. 移动端的视音频处理
42. 移动端的视音频处理 目标 实时拍摄、文件导入剪辑、实时渲染和预览 360p、15fps、主观画质不能明显失真、要省流量 全平台可播放:MP4 + AAC + AVC
43. 移动端的视音频处理 目标 实时拍摄、文件导入剪辑、实时渲染和预览 360p、15fps、主观画质不能明显失真、要省流量 全平台可播放:MP4 + AAC + AVC 问题和挑战 不同的操作系统 不同的硬件平台
44. 性能
45. 性能 15fps:每帧66ms内要完成拍摄/解码、特效、 实时预览、编码、文件IO所有工作
46. 性能 15fps:每帧66ms内要完成拍摄/解码、特效、 实时预览、编码、文件IO所有工作 拍摄 12 12 3 特效 3 编码 解码 缓冲队列 缓冲队列
47. 性能 15fps:每帧66ms内要完成拍摄/解码、特效、 实时预览、编码、文件IO所有工作 拍摄 12 12 3 特效 3 编码 解码 缓冲队列 缓冲队列 编解码⼀一定要用硬件,ffmpeg的实时性不给力
48. 性能
49. 性能 特效渲染⼀一定要用GPU,Neon或类似SIMD指令 是不够给力的
50. 性能 特效渲染⼀一定要用GPU,Neon或类似SIMD指令 是不够给力的 要尽可能最大化pipeline的并行性能,编解码硬 件、CPU、GPU三者都是可以并行的
51. 性能 特效渲染⼀一定要用GPU,Neon或类似SIMD指令 是不够给力的 要尽可能最大化pipeline的并行性能,编解码硬 件、CPU、GPU三者都是可以并行的 资源要复用,要做VideoFramePool、 AudioFramePool、ShaderPool、 VideoTexturePool、EffectPool等等
52. 动态帧率
53. 动态帧率 移动设备拍摄⼀一定会出动态帧率 iOS5以前只能设置最大帧率 iOS5以后可以同时控制最大最小帧率
54. 动态帧率 移动设备拍摄⼀一定会出动态帧率 iOS5以前只能设置最大帧率 iOS5以后可以同时控制最大最小帧率 处理时的丢帧机制也会导致动态帧率 如果处理流水线在某个环节卡住,就需要丢帧
55. 动态帧率 移动设备拍摄⼀一定会出动态帧率 iOS5以前只能设置最大帧率 iOS5以后可以同时控制最大最小帧率 处理时的丢帧机制也会导致动态帧率 如果处理流水线在某个环节卡住,就需要丢帧 解码时无法根据数学公式准确计算最后⼀一的位 置或时间,需要做预测
56. 像素格式
57. 像素格式 YUV 4:2:0 视频编解码多基于这种格式,将Y和UV分片存储
58. 像素格式 Y U V YUV 4:2:0 视频编解码多基于这种格式,将Y和UV分片存储
59. 像素格式 YUV 4:2:0 视频编解码多基于这种格式,将Y和UV分片存储 RGBA 数据连续,但数据量大,而且解码后要做⼀一次YUV 到RGB的颜色转换
60. OpenGL ES
61. OpenGL ES texture要按2^n对齐,显存利用率低 640x480 -> 1024x512,YUV⼀一帧768KB,RGBA⼀一 帧2MB
62. OpenGL ES texture要按2^n对齐,显存利用率低 640x480 -> 1024x512,YUV⼀一帧768KB,RGBA⼀一 帧2MB YUV4:2:0像素格式的texture管理方法 Luminance的Y + Luminance_alpha的UV
63. OpenGL ES texture要按2^n对齐,显存利用率低 640x480 -> 1024x512,YUV⼀一帧768KB,RGBA⼀一 帧2MB YUV4:2:0像素格式的texture管理方法 Luminance的Y + Luminance_alpha的UV 下行不能直接用texture,要用render buffer
64. 视频编码 AVC BaselineProfile AVC MainProfile 理论上要比Baseline质量高出30% Android部分低端机不支持 iOS的硬编码与Baseline没什么质量区别
65. 音频编码 iOS4以后不再支持AMR Android2.3以前Native只能录AMR,不能录 AAC,但可以播AAC
66. 剪辑
67. 剪辑 逐帧剪,要做好解码控制
68. 剪辑 逐帧剪,要做好解码控制 A B 拼接点如果做过渡,比较难控制 视频总长会变短
69. 剪辑 逐帧剪,要做好解码控制 A B 拼接点如果做过渡,比较难控制 视频总长会变短 拼接点附近音频要CrossFade,防止硬切换的爆 音
70. 剪辑 逐帧剪,要做好解码控制 A B 拼接点如果做过渡,比较难控制 视频总长会变短 拼接点附近音频要CrossFade,防止硬切换的爆 音 拼接不同分辨率与幅面比的视频时要做好适配
71. 分辨率不统⼀一
72. 分辨率不统⼀一 各种移动端输出各种分辨率 iOS5以前只能出HighQuality、VGA640x480、 MediumQuality、LowQuality,5以后多了 1280x720、1920x1080两种
73. 分辨率不统⼀一 各种移动端输出各种分辨率 iOS5以前只能出HighQuality、VGA640x480、 MediumQuality、LowQuality,5以后多了 1280x720、1920x1080两种 各种分辨率与幅面比的适配 完全拉伸,图像或变胖或变瘦 按高或宽适配,面临填黑边、裁剪的问题 牛掰的seam carving,算不过来
74. 视频慢放 10s 输出输入帧 映射示意 15s 邻近帧采样会⼀一蹦⼀一蹦 相邻帧插值会有重影 运动估计加非线性插值的运算量非常大
75. 音轨处理 采集的单声道和音乐双声道的混音问题 最大最小值的自动增益算法会失效 需要统计期望平均值然后做非线性增益
76. 码率问题
77. 码率问题 iOS拍摄的视频文件码率很高 即使是VGA640x480的分辨率,码率仍然在 2~3Mbps,30秒就要耗掉10MB,赶上蓝光
78. 码率问题 iOS拍摄的视频文件码率很高 即使是VGA640x480的分辨率,码率仍然在 2~3Mbps,30秒就要耗掉10MB,赶上蓝光 码率的选择 对于移动3G而言:W x H x (3~6)bps 我们的实验结果:512Kbps@480x360
79. 文件格式 Format MOV 3GP(*) flv/f4v mp4(*) Player iOS Native YES YES - YES Android Native - YES YES YES Flash - YES YES YES HTML5 YES YES - YES 3GP格式逐渐不被支持 iOS生成的mp4文件metadata在最后,部分Android设 备不能播,flash如果要播则需要完全加载完文件才 行,所以最后要把metadata换到文件前面去
80. HOME键/锁屏
81. HOME键/锁屏 线程即刻会被挂起,内存资源可能会被回收
82. HOME键/锁屏 线程即刻会被挂起,内存资源可能会被回收 要立刻交还所有的硬件资源 摄像头、麦克风、GPU、编解码器
83. HOME键/锁屏 线程即刻会被挂起,内存资源可能会被回收 要立刻交还所有的硬件资源 摄像头、麦克风、GPU、编解码器 如果是后期编辑在渲染,退入后台再回来,就 需要从头开始渲染
84. HOME键/锁屏 线程即刻会被挂起,内存资源可能会被回收 要立刻交还所有的硬件资源 摄像头、麦克风、GPU、编解码器 如果是后期编辑在渲染,退入后台再回来,就 需要从头开始渲染 程序逻辑与渲染流水控制极其麻烦
85. 边播边存 MPMoviePlayer是不能边播边存的 要自己搭建本地的HttpServer做Proxy 主要是为用户省流量,提高二次观看体验
86. IRIS TM引擎 Interactive Rendering Integrated System 全平台Thursday, August 2, 12
87. Timeline Manager Preview Decode Render Encode Input Output Engine Engine Engine Effect ManagerThursday, August 2, 12
88. 技术 编解码 渲染 拍摄 后期制作 视频剪辑 硬件 特效 iOS CPU 硬件 GPU实时特效 实时 混音 GPU 字幕 硬件 硬件解 Android CPU GPU实时特效 实时 开发中 CPU编 GPU Flash Web GPU GPU实时 实时 同iOS HTML5 Server CPU CPU CPU超实时 无 无
89. iOS模块实现框图 TimelineManager ScreenRenderObj ThreadManager CaptureManager RenderEngine EncodeEngine DecodeEngine AudioDecoder VideoDecoder EffectManager VideoFramePool ShaderPool VideoTexturePool AudioFramePool MMFoundation MMDataStructure
92. 微酷 集成了IRIS引擎的移动微视频分享社区 特点 所见即所得的拍摄体验 512Kbps码率,接近专业标清画质 流畅的3G网络视频上传和观看体验 以话题、地点等聚合视频 基于用户兴趣的个性推荐
95. Q&A 微酷 捕捉精彩 瞬间分享 主页:http://vku.sdo.com 邮件:vku@snda.com 微博:@vku微酷 http://weibo.com/vkuvku

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics