一、概述

1)流媒体协议是服务器与客户端之间通信遵循的规定。当前网络上主要的流媒体协议如表所示。

2)封装格式的主要作用是把视频码流和音频码流按照一定的格式存储在一个文件中。

3)视频编码的主要作用是将视频像素数据(RGB,YUV等)压缩成为视频码流,从而降低视频的数据量。如果视频不经过压缩编码的话,体积通常是非常大的,一部电影可能就要上百G的空间。视频编码是视音频技术中最重要的技术之一。视频码流的数据量占了视音频总数据量的绝大部分。高效率的视频编码在同等的码率下,可以获得更高的视频质量。

4)音频编码的主要作用是将音频采样数据(PCM等)压缩成为音频码流,从而降低音频的数据量。音频编码也是互联网视音频技术中一个重要的技术。但是一般情况下音频的数据量要远小于视频的数据量,因而即使使用稍微落后的音频编码标准,而导致音频数据量有所增加,也不会对视音频的总数据量产生太大的影响。高效率的音频编码在同等的码率下,可以获得更高的音质。

二、流媒体协议

三、封装格式

除了AVI之外,其他封装格式都支持流媒体,即可以“边下边播”。有些格式更“万能”一些,支持的视音频编码标准多一些,比如MKV。而有些格式则支持的相对比较少,比如说RMVB。

四、视频格式

不同编码规则的对比

熵编码:如果要求编码过程中不丢失信息量,即要求保存信息熵(对信息量多少的度量),这种信息保持编码叫熵编码,是根据消息出现概率的分布特性而进行的,是无损数据压缩编码。

I帧 P帧 B帧

1)I帧表示关键帧,你可以理解为这一帧画面的完整保留;解码时只需要本帧数据就可以完成(因为包含完整画面)
2)P帧表示的是这一帧跟之前的一个关键帧(或P帧)的差别,解码时需要用之前缓存的画面叠加上本帧定义的差别,生成最终画面。(也就是差别帧,P帧没有完整画面数据,只有与前一帧的画面差别的数据) 3)B帧是双向差别帧,也就是B帧记录的是本帧与前后帧的差别(具体比较复杂),换言之,要解码B帧,不仅要取得之前的缓存画面,还要解码之后的画面,通过前后画面的与本帧数据的叠加取得最终的画面。B帧压缩率高,但是解码时CPU会比较累。

去块滤波:由于重构块的边缘像素与块内部像素相比恢复精度要低,块效应是目前压缩编码最明显的视觉失真之一(图像相关性受到破坏)。

H.264 编码技术

1)更高的编码效率:同H.263等标准的特率效率相比,能够平均节省大于50%的码率。

2)高质量的视频画面:H.264能够在低码率情况下提供高质量的视频图像,在较低带宽上提供高质量的图像传输是H.264的应用亮点。和MPEG2和 MPEG4 ASP等压缩技术相比,在同等图像质量下,采用H.264技术压缩后的数据量只有MPEG2的1/8,MPEG4的1/3。显然,H.264压缩技术的采 用将大大节省用户的下载时间和数据流量收费。

3)提高网络适应能力:H.264可以工作在实时通信应用(如视频会议)低延时模式下,也可以工作在没有延时的视频存储或视频流服务器中。

4)采用混合编码结构:同H.263相同,H.264也使用采用DCT(离散余弦变换)变换编码加DPCM的差分编码的混合编码结构,还增加了如多模式运动估计、帧内预测、多帧预测、基于内容的变长编码、4x4二维整数变换等新的编码方式,提高了编码效率。

5)H.264的编码选项较少:在H.263中编码时往往需要设置相当多选项,增加了编码的难度,而H.264做到了力求简洁的“回归基本”,降低了编码时复杂度。

6)H.264可以应用在不同场合:H.264可以根据不同的环境使用不同的传输和播放速率,并且提供了丰富的错误处理工具,可以很好的控制或消除丢包和误码。

7)错误恢复功能:H.264提供了解决网络传输包丢失的问题的工具,适用于在高误码率传输的无线网络中传输视频数据。

8)较高的复杂度:264性能的改进是以增加复杂性为代价而获得的。据估计,H.264编码的计算复杂度大约相当于H.263的3倍,解码复杂度大约相当于H.263的2倍。

H.265 编码技术

1)H.265是新的编码协议,是H.264的升级版。H.265标准保留H.264原来的某些技术,同时对一些相关的技术加以改进。新技术使用先进的技术用以改善码流、编码质量、延时和算法复杂度之间的关系,达到最优化设置。

2)H.265相比H.264最主要的改变是采用了块的四叉树划分结构,采用了从64x64~8x8像素的自适应块划分,并基于这种块划分结构采用一系列自适应的预测和变换等编码技术。

3)H265可以实现利用1~2Mbps的传输速度传送720P普通高清音视频。同样的画质和同样的码率,H.265比H2.64 占用的存储空间要少理论50%。

4)H265提供了更多不同的工具来降低码率,以编码单位来说,H264中每个宏块大小都是固定的16x16像素,而H265的编码单位可以选择从最小的8x8到最大的64x64。

较新的视频格式

RM格式

Networks公司所制定的音频视频压缩规范称之为Real Media,用户可以使用RealPlayer或RealOne Player对符合RealMedia技术规范的网络音频/视频资源进行实况转播,并且RealMedia还可以根据不同的网络传输速率制定出不同的压缩比率,从而实现在低速率的网络上进行影像数据实时传送和播放。这种格式的另一个特点是用户使用RealPlayer或RealOne Player播放器可以在不下载音频/视频内容的条件下实现在线播放。

RMVB格式

这是一种由RM视频格式升级延伸出的新视频格式,它的先进之处在于RMVB视频格式打破了原先RM格式那种平均压缩采样的方式,在保证平均压缩比的基础上合理利用比特率资源,就是说静止和动作场面少的画面场景采用较低的编码速率,这样可以留出更多的带宽空间,而这些带宽会在出现快速运动的画面场景时被利用。这样在保证了静止画面质量的前提下,大幅地提高了运动图像的画面质量,从而图像质量和文件大小之间就达到了微妙的平衡。

五、音频格式

MP3(MPEG-1 audio layer 3) 类型:Audio
制定者:MPEG
所需频宽:128~112kbps(压缩10~12倍)
特性:编码复杂,用于互联网上的高质量声音的传输,如MP3音乐压缩10倍,2声道。MP3是在综合MUSICAM和ASPEC的优点的基础上提出的混合压缩技术,在当时的技术条件下,MP3的复杂度显得相对较高,编码不利于实时,但由于MP3在低码率条件下高水准的声音质量,使得它成为软解压及网络广播的宠儿。优点:压缩比高,适合用于互联网上的传播 缺点:MP3在128KBitrate及以下时,会出现明显的高频丢失 应用领域:voip 版税方式:Free 备注:同MPEG-1 audio layer 1

WMA(Windows Media Audio)

类型:Audio

制定者:微软公司

所需频宽:320~112kbps(压缩10~12倍)

特性:当Bitrate小于128K时,WMA几乎在同级别的所有有损编码格式中表现得最出色,但似乎128k是WMA一个槛,当Bitrate再往上提升时,不会有太多的音质改变。

优点:当Bitrate小于128K时,WMA最为出色且编码后得到的音频文件很小。

缺点:当Bitrate大于128K时,WMA音质损失过大。WMA标准不开放,由微软掌握。

应用领域:voip

版税方式:按个收取

备注:WMA的全称是Windows Media Audio,它是微软公司推出的与MP3格式齐名的一种新的音频格式。由于WMA在压缩比和音质方面都超过了MP3,更是远胜于RA(Real Audio),即使在较低的采样频率下也能产生较好的音质,再加上WMA有微软的Windows Media Player做其强大的后盾,所以一经推出就赢得一片喝彩。

较新的音频格式

APE

一种新兴的无损音频编码,可以提供50-70%的压缩比,虽然比起有损编码来太不值得一提了,但对于追求完美音质的朋友简直是天大的福音。APE可以做到真正的无损,而不仅是听起来无损,压缩比也要比类似的无损格式要好。

六.代码实现对编码格式的控制

设置音频编码

MediaRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.xxx);

设置视频编码

MediaRecorder.setVideoEncoder(MediaRecorder.VideoEncoder.xxx);

七.总结

要想得到小的压缩体积,高质量的音频视频文件,要不断优化编码算法也要有相应的硬件支持,不同的文件格式适用于不同的领域和情景,我们要根据应用场景选择相应的文件类型,好的编码格式终会发扬光大,落后的编码格式终究会淘汰。

技术交流,欢迎加我微信:ezglumes ,拉你入技术交流群。

推荐阅读:

音视频面试基础题

OpenGL ES 学习资源分享

开通专辑 | 细数那些年写过的技术文章专辑

NDK 学习进阶免费视频来了

推荐几个堪称教科书级别的 Android 音视频入门项目

觉得不错,点个在看呗~

一篇文章带你简单了解音频视频相关推荐

  1. python人脸识别防小偷_一篇文章带你了解Python 人脸识别有多简单

    今天的Python学习教程给大家介绍一个世界上最简练的人脸辨认库 face_recognition,你可以应用 Python 和命令行工具进行提取.辨认.操作人脸. 基于业内领先的 C++ 开源库 d ...

  2. python人脸识别实验报告总结_一篇文章带你了解Python 人脸识别有多简单

    原标题:一篇文章带你了解Python 人脸识别有多简单 今天的Python学习教程给大家介绍一个世界上最简洁的人脸识别库 face_recognition,你可以使用 Python 和命令行工具进行提 ...

  3. 一篇文章带你熟悉 TCP/IP 协议(网络协议篇二)

    涤生_Woo 2017年11月11日阅读 15544 关注 一篇文章带你熟悉 TCP/IP 协议(网络协议篇二) 同样的,本文篇幅也比较长,先来一张思维导图,带大家过一遍. 一图看完本文 一. 计算机 ...

  4. 一篇文章带你了解大数据生态圈---大数据组件图谱

    小编一篇文章带你了解大数据生态圈-大数据组件图谱 转载地址:http://blog.csdn.net/u010039929/article/details/70157376 文章目录 小编一篇文章带你 ...

  5. 借重新装系统之际,一篇文章带你玩透Windows 10从系统安装到软件选择

    系统安装所需软件 Rufus 一个制作USB-ISO的免费软件,比微软官方工具好的地方在于除了可以制作windows 系统U盘,还可以制作linux 以及安卓X86的系统安装光盘. 借重新装系统之际, ...

  6. 一篇文章带你了解人工智能

    系列文章目录 一篇文章带你了解人工智能 文章目录 系列文章目录 前言 一.生活中常见的人工智能应用 二.人工智能概念的诞生 三.人工智能的三个层面 四.现阶段实现AI的基本方法及技术领域 从技术应用场 ...

  7. osgb转json_超实用:一篇文章带你了解市面上主流通用的3D模型格式

    原标题:超实用:一篇文章带你了解市面上主流通用的3D模型格式 3D模型格式知多少 说到格式,相信大家都不陌生. 随着互联网的普及,我们几乎每天都会和不同的格式打交道,文本的TXT.图片的JPG.视频的 ...

  8. 一篇文章带你了解Flannel

    from: http://dockone.io/article/618 DockOne技术分享(十八):一篇文章带你了解Flannel [编者的话]Flannel是 CoreOS 团队针对 Kuber ...

  9. 一篇文章带你领悟 Frida 的精髓(基于安卓8.1)

    转载(一篇文章带你领悟Frida的精髓(基于安卓8.1)):https://www.freebuf.com/articles/system/190565.html <Frida操作手册>: ...

最新文章

  1. 好雨云帮近期问答集锦(1.16~2.5)
  2. laravel创建新model数据的两种方法
  3. 【python】 针对python3 下无法导入tkinter
  4. OAuth2.0相关知识
  5. java1.8 lambda进行并行运算
  6. SQL SERVER 解析XML到数据库表
  7. python资产管理系统_Python [5] IT资产管理(上)
  8. 在gridview中按钮传递data值到js中的方法(选择按钮)
  9. 如何去掉Eclipse里面自动追加的一些注释!!!内详
  10. 使用 JavaScript 生成二维码 —— QRCode.js
  11. 【手写字母识别】基于matlab GUI模板匹配手写大写字母识别【含Matlab源码 115期】
  12. 第五章平稳过程(1)
  13. 御剑后台扫描工具下载、安装、使用教程
  14. html5的ajax上传图片,html5标准Ajax上传图片
  15. 如何免费在线将pdf转换成jpg图片
  16. 唐青昊:Marvel Team 这一年 | 黑客 2016
  17. IPETRONIK为您提供专业化的数据采集软件IPEmotion进行声学采集与分析
  18. python中xml Excel解析编码小结
  19. 深度学习的趣味app简单优化(适合新手)
  20. play 框架目录结构

热门文章

  1. 阿里云推出SRT 杜比全景声直播方案,低成本打造高质量直播观感体验
  2. 运行java字节码文件
  3. java版Spring Cloud+SpringBoot+mybatis+uniapp b2b2c o2o 多商家入驻商城 直播带货商城 电子商务 手机端基础设置
  4. 神一样的CAP理论在微服务中是如何应用的?
  5. Android性能优化之冷启动优化
  6. Android应用开发-学生信息管理系统
  7. redhat 同步时间
  8. 程序员不可忽视的事——使用电脑注意事项
  9. 贝叶斯深度学习(Bayesian Deep Learning)2020 最新研究总结
  10. 捕鱼达人之蛇行亿年,蛇行亿年捕鱼棋牌游戏源码