本文作者Ahab,原题“视频相关的理论知识与基础概念”,收录时有修订和改动 。
1、引言随着移动互联网的普及,实时音视频技术已经在越来越多的场景下发挥重要作用,已经不再局限于IM中的实时视频聊天、实时视频会议这种功能,在远程医疗、远程教育、智能家居等等场景也司空见惯 。
虽然实时音视频技术的应用越来越普及,但对于程序员来说,这方面的技术门槛仍然存在(准备地说是仍然很高),想要在短时间内全面掌握实时音视频相关的技术难度非常大 。
以IM中的实时音视频聊天为例,一个简化了的视频聊天技术,本质就是:音视频技术+网络技术的组合体,如下图所示:网络模块之上的部分,就是音视频技术所涉及的范畴 。
文章插图
▲ 图片引用自《微信小程序音视频技术背后的故事》
所以,想学习实时音视频开发,一般都是先学习音视频相关的技术知识,至于网络技术,完全可以分开学习 。
不过,作为想从事这方面工作的小白面视者,是无法在短时间内全面掌握音视频技术,但可以通过快速了解相关的知识概念,在自已在脑中快速组织起相应的知识图谱,有助于日后针对相关知识点逐个深入学习和研究,也算是一种高效的技术学习方法 。
本文将通过通俗的文字,言简意赅地为你讲解实时音视频技术中跟视频技术在关的11个非常重要的基础知识概念,希望能为你日后从事这方面的工作起到抛砖引玉的作用 。
学习交流:
开源IM框架源码:https://github.com/JackJiang2011/MobileIMSDK(本文同步发布于:http://www.52im.net/thread-3194-1-1.html)
2、关于作者
王英豪:现居广州 。3、参考资料
Github : https://github.com/yhaolpz
CSDN: http://blog.csdn.net/yhaolpz
个人博客 : http://yhaowa.gitee.io
[1] 零基础,史上最通俗视频编码技术入门4、什么是视频?根据人眼视觉暂留原理,每秒超过 24 帧的图像变化看上去是平滑连续的,这样的连续画面的播放叫视频 。
[2] 零基础入门:实时音视频技术基础知识全面盘点
[3] 理解实时音视频聊天中的延时问题一篇就够
通俗来说说,视频相当于连续展示多张图片,原理就像下面这样:
文章插图
▲ 图片引用自《零基础,史上最通俗视频编码技术入门》
5、什么是分辨率?5.1 基础分辨率是以横向和纵向的像素数量来衡量的,表示平面图像的精细程度 。视频精细程度并不只取决于视频分辨率,还取决于屏幕分辨率 。
1080P 的 P 指 Progressive scan(逐行扫描),即垂直方向像素点,也就是 "高",所以 1920 * 1080 叫 1080P,不叫 1920P 。
5.2 上采样当 720P 的视频在 1080P 屏幕上播放时,需要将图像放大,放大操作也叫上采样 。
“上采样”几乎都是采用内插值方法,即在原有图像的像素点之间采用合适的插值算法插入新的元素,所以图像放大也称为图像插值 。
简单的记录一下插值算法:
文章插图
常见插值算法技术原理:
1)邻插值算法:将四个像素(放大一倍)用原图一个像素的颜色填充,较简单易实现,早期的时候应用比较普遍,但会产生明显的锯齿边缘和马赛克现象;
2)双线性插值法:是对邻插值法的一种改进,先对两水平方向进行一阶线性插值,再在垂直方向上进行一阶线性插值 。能有效地弥补邻插值算法的不足,但还存在锯齿现象并会导致一些不期望的细节柔化;
3)双三次插值法:是对双线性插值法的改进,它不仅考虑到周围四个直接相邻像素点灰度值的影响,还考虑到它们灰度值变化率的影响,使插值生成的像素灰度值延续原图像灰度变化的连续性,从而使放大图像浓淡变化自然平滑 。
除此之外还有很多更复杂效果更优的算法,比如小波插值、分形等等 。
5.3 下采样当 1080P 的视频在 720P 屏幕上播放时,需要将图像缩小,缩小操作也叫下采样 。
“下采样”的定义为:对于一个样值序列,间隔几个样值取样一次,得到新序列 。
对于一幅分辨率为 MxN 的图像,对其进行 s 倍下采样,即得到 (M/s)x(N/s) 分辨率的图像(s 应为 M、N 的公约数),就是把原始图像 sxs 窗口内的图像变成一个像素,这个像素点的值就是窗口内所有像素的均值 。
推荐阅读
- 令程序员头疼的性能问题,这一款性能分析工具帮你实时监控
- 基于OGG 实现Oracle到Kafka增量数据实时同步
- 运维小工具:Mysql库TPS,QPS实时监控脚本
- 实时推荐系统的3种方式
- 视频倒放怎么制作
- Mysql库TPS,QPS实时监控脚本
- 如何使用 WebGL 进行实时视频处理
- 音视频开发3. 低延时的H5直播方案JSMpeg
- 音视频开发1. 基本概念及媒体协议
- 小米|小米Civi 1S搭载4D光追焕颜美妆技术:游戏级实时渲染