音视频学习笔记(雷神)—技术解析
音视频技术解析
封装技术+视频压缩编解码+音频压缩编解码
这是技术层
流媒体传输协议
这是网络层
视频播放器解析
解协议
从视频播放器的角度做解析,拿到传输而来的视频数据后,首先要解协议(传输协议)
自然的本地视频经过硬盘传输数据自然没有解协议的过程
解协议的作用,就是将流媒体协议的数据,解析为标准的相应的封装格式数据。视音频在网络上传播的时候,常常采用各种流媒体协议,例如HTTP,RTMP,或是MMS等等。这些协议在传输视音频数据的同时,也会传输一些信令数据。这些信令数据包括对播放的控制(播放,暂停,停止),或者对网络状态的描述等。解协议的过程中会去除掉信令数据而只保留视音频数据。
信令数据:只要使用网络使用基站就产生信令数据
这里对包含的播放的控制数据我没有太理解
个人理解:解析以后化为标准可解的封装数据,不同协议视频流传输被解协议的时候产生不同的数据,冗余的信令数据也被剔除
如RTMP协议传输解协议后变为FLV格式,之后再对FLV做解封装
主要流媒体协议一览
名称 |
推出机构 |
传输层协议 |
客户端 |
目前使用领域 |
RTSP+RTP |
IETF |
TCP+UDP |
VLC, WMP |
IPTV |
RTMP |
Adobe Inc. |
TCP |
Flash |
互联网直播 |
RTMFP |
Adobe Inc. |
UDP |
Flash |
互联网直播 |
MMS |
Microsoft Inc. |
TCP/UDP |
WMP |
互联网直播+点播 |
HTTP |
WWW+IETF |
TCP |
Flash |
互联网点播 |
解封装
解封装的作用,就是将输入的封装格式的数据,分离成为音频流压缩编码数据和视频流压缩编码数据。封装格式种类很多,例如MP4,MKV,RMVB,TS,FLV,AVI等等,它的作用就是将已经压缩编码的视频数据和音频数据按照一定的格式放到一起。例如,FLV格式的数据,经过解封装操作后,输出H.264编码的视频码流和AAC编码的音频码流。
封装格式的数据对应我们在生活中看到的所谓视频后缀名格式(封装格式)
视频被按指定格式解封装后就变成了码流
音视频有各自独立的编码规则
FLV格式的数据,经过解封装操作后,输出H.264编码的视频码流和AAC编码的音频码流
主要封装格式一览
名称 |
推出机构 |
流媒体 |
支持的视频编码 |
支持的音频编码 |
目前使用领域 |
AVI |
Microsoft Inc. |
不支持 |
几乎所有格式 |
几乎所有格式 |
BT下载影视 |
MP4 |
MPEG |
支持 |
MPEG-2, MPEG-4, H.264, H.263等 |
AAC, MPEG-1 Layers I, II, III, AC-3等 |
互联网视频网站 |
TS |
MPEG |
支持 |
MPEG-1, MPEG-2, MPEG-4, H.264 |
MPEG-1 Layers I, II, III, AAC, |
IPTV,数字电视 |
FLV |
Adobe Inc. |
支持 |
Sorenson, VP6, H.264 |
MP3, ADPCM, Linear PCM, AAC等 |
互联网视频网站 |
MKV |
CoreCodec Inc. |
支持 |
几乎所有格式 |
几乎所有格式 |
互联网视频网站 |
RMVB |
Real Networks Inc. |
支持 |
RealVideo 8, 9, 10 |
AAC, Cook Codec, RealAudio Lossless |
BT下载影视 |
除了AVI之外,其他封装格式都支持流媒体,即可以“边下边播”。
有些格式更“万能”一些,支持的视音频编码标准多一些,比如MKV。
而有些格式则支持的相对比较少,比如说RMVB。
解码
解码的作用,就是将视频/音频压缩编码数据,解码成为非压缩的视频/音频原始数据。音频的压缩编码标准包含AAC,MP3,AC-3等等,视频的压缩编码标准则包含H.264,MPEG2,VC-1等等。解码是整个系统中最重要也是最复杂的一个环节。通过解码,压缩编码的视频数据输出成为非压缩的颜色数据,例如YUV420P,RGB等等;压缩编码的音频数据输出成为非压缩的音频抽样数据,例如PCM数据。
解码是最繁杂的环节,技术在这里就有了差别
颜色和音频抽样数据从被压缩的码流中按照一定的方法分崩离析出来,又归向秩序。变成人们可视可听的数据
若从解码的设备上看
又可以分为硬解码(GPU解码)和软解码(CPU解码)
硬解码慢但高质,软解码快但难以承受巨量的视频解码任务
编码
谈解码自然也要谈编码
视频编码的主要作用是将视频像素数据(RGB,YUV等)压缩成为视频码流,从而降低视频的数据量。如果视频不经过压缩编码的话,体积通常是非常大的,一部电影可能就要上百G的空间
编码的技术要不断精进就是为了能更好的传输更高质量的视频
主要视频编码一览
名称 |
推出机构 |
推出时间 |
目前使用领域 |
HEVC(H.265) |
MPEG/ITU-T |
2013 |
研发中 |
H.264 |
MPEG/ITU-T |
2003 |
各个领域 |
MPEG4 |
MPEG |
2001 |
不温不火 |
MPEG2 |
MPEG |
1994 |
数字电视 |
VP9 |
|
2013 |
研发中 |
VP8 |
|
2008 |
不普及 |
VC-1 |
Microsoft Inc. |
2006 |
微软平台 |
H264High和H265已经逐步追上H264的地位
主要音频编码一览
名称 |
推出机构 |
推出时间 |
目前使用领域 |
AAC |
MPEG |
1997 |
各个领域(新) |
AC-3 |
Dolby Inc. |
1992 |
电影 |
MP3 |
MPEG |
1993 |
各个领域(旧) |
WMA |
Microsoft Inc. |
1999 |
微软平台 |
可见音频编码技术已经基本可以满足人们的需要。音频编码技术近期绝大部分的改动都是在MP3的继任者——AAC的基础上完成的。
AAC+ > MP3PRO > AAC> RealAudio > WMA > MP3
音视频同步
视音频同步的作用,就是根据解封装模块处理过程中获取到的参数信息,同步解码出来的视频和音频数据,并将视频音频数据送至系统的显卡和声卡播放出来
就是所谓的音画同步
直播服务
直播服务普遍采用了RTMP作为流媒体协议,FLV作为封装格式,H.264作为视频编码格式
视频编码,音频编码方面,无一例外的使用了FLV + H.264 + AAC的组合。FLV是RTMP使用的封装格式,
H.264是当今实际应用中编码效率最高的视频编码标准
AAC则是当今实际应用中编码效率最高的音频编码标准
我现在来看这些情况依旧存在
点播服务
点播服务普遍采用了HTTP作为流媒体协议,H.264作为视频编码格式,AAC作为音频编码格式。
采用HTTP作为点播协议有以下两点优势:一方面,HTTP是基于TCP协议的应用层协议,媒体传输过程中不会出现丢包等现象,从而保证了视频的质量;
另一方面,HTTP被绝大部分的Web服务器支持,因而流媒体服务机构不必投资购买额外的流媒体服务器,从而节约了开支。
点播服务采用的封装格式有多种:MP4,FLV,F4V等,它们之间的区别不是很大。
很幸运有雷神能让我站在巨人的肩膀上了解音视频
本篇学习总结于雷神文章:[总结]视音频编解码技术零基础学习方法_雷霄骅的博客-CSDN博客_音视频编解码入门一直想把视音频编解码技术做一个简单的总结,可是苦于时间不充裕,一直没能完成。今天有着很大的空闲,终于可以总结一个有关视音频技术的入门教程,可以方便更多的人学习从零开始学习视音频技术。需要注意的是,本文所说的视音频技术,指的是理论层面的视音频技术,并不涉及到编程相关的东西。https://blog.csdn.net/leixiaohua1020/article/details/18893769
之后慢慢一点点把所有细节补上
音视频学习笔记(雷神)—技术解析相关推荐
- C++实现flv封装格式解析(音视频学习笔记三)
这篇博文使用C++解析一个flv文件信息,对其中一些重要的信息进行log输出,对flv的数据封装格式信息不清楚的可以去看这篇博文-FLV 封装格式解析,里面详细说明了flv文件的结构信息.这篇博文参考 ...
- 基于FFmpeg4.1的视频播放器的极简实现(音视频学习笔记四)
前言 这篇文章记录一个简单视频播放器的开发过程,代码极其为简洁,基于ffmpeg最新版本4.1实现的.视频渲染用的SDL2.0,SDL视频渲染部分代码直接copy的雷神的最简单的基于FFMPEG+SD ...
- N32905音视频学习笔记-录音和播放
陈生 微信:chenzhe_yj 提供开源硬件产品.嵌入式软硬件开发.技术咨询 淘宝店:https://item.taobao.com/item.htm?spm=a1z10.1-c-s.w4004-1 ...
- 音视频学习笔记1--音视频基础知识(1)
音视频基础知识 1 音视频开发是什么? 2 音视频数据处理流程 2.1 音视频数据采集 2.2 封装与解封装 2.3 音视频输出 2.4 音视频同步 3 视频中的基础概念 3.1 视频码率 3.2 视 ...
- 音视频学习笔记----3,音视频编码基础学习之-YUV与RGB
上一篇我们已经安装并简单学习了H.264的一些基础知识,本节开始记录学习YUV与RGB,以作备忘.同样采用自我总结 + 优秀摘录的方式记录. RGB介绍 : RGB色彩模式是工业界的一种颜色标准,是通 ...
- 音视频封装格式转换器(支持avi格式转换),基于FFmpeg4.1实现(音视频学习笔记二)
之前参照雷霄骅博士的最简单的基于FFMPEG的封装格式转换器(无编解码)的博客和FFmpeg官网的example,实现一个简单的封装格式转换器.但是后来我发现我想从mp4格式转换成avi格式的时候会报 ...
- 企业级Android音视频开发笔记分享,快来get正确的学习姿势
随着传统的图文媒体向以音视频为主的新媒体转变,音视频开发逐渐成为Android领域内的小热门.但音视频开发涉及的层面较广,相关的技术繁多且复杂,想要深入确有一定难度.且目前网络上关于Android 音 ...
- 微信团队分享:微信每日亿次实时音视频聊天背后的技术解密
本文内容整理自腾讯专家研究员 & 微信视频技术负责人谷沉沉在 2017 ArchSummit 全球架构师峰会上的技术分享. 1.前言 2012 年 7 月,微信 4.2 版本首次加入了实时音视 ...
- Android音视频学习系列(六) — 掌握视频基础知识并使用OpenGL ES 2.0渲染YUV数据
系列文章 Android音视频学习系列(一) - JNI从入门到精通 Android音视频学习系列(二) - 交叉编译动态库.静态库的入门 Android音视频学习系列(三) - Shell脚本入门 ...
最新文章
- 在网易,我是怎样做项目管理的?
- 通过KNN算法,确定球星的风格(很水)
- 15个创意的电梯广告
- [工具]sublime text2-前端开发利器
- 基于MeanShift的目标跟踪算法及实现
- BOI 2003 Problem. Spaceship
- cubemx spi 中断_STM32 SPI在使用中断时丢弃数据
- discuzX 数据库操作类
- 表单式工作流功能模块设计方案
- 因特网、IPv9、5G及其挑战
- 计算机二级没有学院盖章,二级学院盖章.DOC
- 玩游戏用云电脑选高配有延迟吗
- OpenStack详解、排错、经验总结
- python输出欢迎某某某_python中怎么写注释
- 95%的人都会答错的类加载的问题
- 华为路由器:ppp协议
- java基于Springboot餐厅点餐系统-计算机毕业设计
- 在cmd命令窗口安装Python模块
- 使用excel万金油公式的注意事项
- 一如职场深似海,怎样避开人际关系的冰山?
热门文章
- C++ Boost 实现异步IO远控
- Word 中如何标记修订?如何去掉修订标记只显示最终状态?
- 计算机网络之网络架构
- 计算机辅助翻译工具的主要作用,浅谈计算机辅助翻译工具TRADOS在翻译中的积极作用.pdf...
- 机器学习中监督学习是什么?人工智能机器学习
- jquery.fly.min.js 拋物插件
- 中网办:关于加强党政部门云计算服务网络安全管理的意见
- Kafka Ack应答机制理解
- 将车辆数据集kitti转换为VOC格式(车辆检测)
- word如何删除空行和全角空格_Word批量删除空格(全角空格、半角空格、不间断空格、制表符空格)的技巧-word技巧-电脑技巧收藏家...