专业视频处理算法在移动开发中的优化:《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
分享到:
相关推荐
游戏引擎移植者现身讲解:《在iOS平台上用Cocos2D做开发》 | iOS独立开发者 秦春林 | iOS DevCamp 议题简介:Cocos2d是iOS平台上著名的游戏引擎,它开源,结构简单清晰,功能强大,是个人或者中小型团队开发的首选...
iOS DevCamp幻灯片分享:《Passbook实战详解》| 爱图腾 廉洁 话题简介:iOS6发布后最值得关注的一个特性即为Passbook。本演讲将结合爱图腾的实践,对iOS6中推出的Passbook应用及相关的开发细节进行讲解,详细说明...
应用重构:《从知乎 iPhone 端重构说开去:Web 为主的复杂社交产品的 iOS 端开发策略及实践》| 知乎 耿健桓 | iOS DevCamp 议题简介:当为知乎等以 Web 为主的复杂社交产品开发 iOS 端时,我们在开发上总会面临的...
应用重构:《从知乎 iPhone 端重构说开去:Web 为主的复杂社交产品的 iOS 端开发策略及实践》| 知乎 耿健桓 | iOS DevCamp 议题简介:当为知乎等以 Web 为主的复杂社交产品开发 iOS 端时,我们在开发上总会面临的一...
iOS平台应用详解:《Siri:I,robot! Siri语音识别系统详解》 | iOS DevCamp 话题简介:Siri是苹果公司发布的广受关注的iOS平台应用,它不仅仅是一套语音识别系统,更重要的是其用户意图分析与智能识别机制。本讲座...
本演讲将结合讲师这些年自学iPhone开发的历程,结合自己多个应用开发实践的案例,与大家分享iOS开发的技术实践,内容将涉及:开源框架的选择,如何搭建程序架构从而写更干净的代码,如何有效使用内存和防止内存泄露...
逆向工程技术详解:《揭开IPA文件的灰沙 -- 通过静态分析工具了解IPA实现》 | iOS DevCamp 话题简介:在AppStore中经常会出现各种令人耳目一新的App,他们是如何实现那些效果的?他们又是使用哪些公共组件来完成...
主题简介:作为移动应用开发的一个重要需求,微软和苹果公司分别为iOS和Windows Phone平台应用开发者提供了很好的消息推送解决方案。实际上Google也为Android平台提供了C2DM的解决方案供开发者使用, 但是由于多方面...
移动产品迭代包袱重,大众点评讲述成功和失败经验:《如何创建更加灵活的App》| 大众点评 屠毅敏 | Android DevCamp 主题简介:Android和iOS原生应用的部署特性决定了其无法像Web开发那样灵活多变,同时造成了产品...
2009年在深圳第一次创业,主要从事iPhone应用的开发,完成了从技术到产品设计以及团队运营管理等全流程角色的转换,积累了丰富的iOS创业经验,熟稔App store的规则及流程,了解开发者的需求,并掌握了创业项目的全程...
2010年开始从事Android平台上的开发,熟悉Android应用开发的各种技术,并喜欢分析Android系统框架和底层机制。自工作以来的方向一直都在移动设备的系统和软件开发上,对移动互联网有很大的热情。
安卓热点话题总结性剖析:《Android在多屏幕、多设备上的适配》 | Android DevCamp 话题简介:对于安卓多屏幕和多设备适配问题,早在2010年的Google IO大会,就有专门探讨过。这些年来,对于这个普遍存在的问题,...
电商应用开发实例分享:《凡客移动应用之Android + HTML5技术运用》 | Android DevCamp 主题简介:本演讲将结合凡客的Android客户端应用实例,详细介绍凡客应用的实现架构,阐述分析电商应用中的多线程的合理使用...
安卓数据分享技术实现::《发现和建立多设备之间的数据通信》 | Android DevCamp 话题简介:随着移动应用越来越多的依赖于服务端,开发者对数据通信协议的需求慢慢增多。 而软件版本兼容性的不同、网络环境的不...
再谈Android推送实现:《千万级并发在线推送系统架构解析》| 个信互动 叶新江 | Android DevCamp 主题简介: 移动短消息是大家所熟知的一种信息推送方式, 基于信令通道的推送在简单信息的体验方面已经被大家所...
安卓系统架构多年经验总结:《Android程序的编译,安装和运行》 | Android DevCamp 讲师简介:汪文俊,中国科技大学硕士,原IBM系统工程师,现为小米科技MIUI首席架构师,开源C编译器项目ucc的作者。 话题简介:...
模块1-工具和开发人员环境设置概述我们将概述可用于在您的平台上进行开发的开发人员工具。查看HOL 1:设置您的开发人员环境为您的特定语言设置开发人员环境在本实验中,您将创建语言偏好设置所需的环境。 创建O365...
devCamp
利用团结和虚幻引擎:我在DevCamp 2018中的“利用Unity和虚幻引擎”演讲的幻灯片于2018年8月25日在万隆数字谷
CSDN Share 是一款出色的Android阅读工具,阅读由 CSDN社区用户分享的技术文档。 通过CSDN Share可以在线阅读或离线下载CSDN 举办的各类技术活动的精彩讲义,以及来自...-iOS/Android训练营:DevCamp2012(部分文档)