多媒体基础概念_多媒体播放原理-程序员宅基地

技术标签: 软件测试入门  视频编解码  

一、基础概念

1.两种应用场景

  • 本地播放。先保存为文件,再使用本地播放器播放
  • 在线观看。在线观看又分为 直播(直播即实时视频,只要终端接收流就从那一刻开始)和 点播(点播即编辑好的视频文件,存放在服务区或云上,被观众任意观看)

对于本地播放,每个视频都有自己的格式( .MP4,.RMVB, .AVI )等,这些格式代表的是 封装格式。简称视频格式,也称为 容器 。为了统一口径,本文统一称 视频封装格式 。何为封装格式?就是把视频数据和音频数据打包成一个文件的规范。仅仅靠看文件的后缀,很难能看出具体使用了什么视音频编码标准。总的来说,不同的封装格式之间差距不大,各有优劣。

在线观看其实是一种视频协议。也就是只有在有网络时通过浏览器或者移动端APP才能看到的视频。常见的直播流协议有:RTMP、RTSP、HTTP 等;常见的点播协议有:MP4、FLV、HLS 等。在连接视频协议时,除了音视频频流和metadata之外,可能还会携带播放的信令

2.采样 

根据奈魁斯特(NYQUIST)采样定理,用2倍于一个正弦波的频率进行采样就能完全真实地还原该波形

3.帧速率

视频是由一帧帧的画面,也就是一张张的图片构成,如果一秒钟跑过去的图片有24张,帧速率就是24帧/秒(fps)

4.分辨率

我们所看到的图像都是由一个个的像素点构成的;分辨率就是所显示图像的精密程度,也可以理解为像素点的多少

标清:480x320,640x480 

高清:1024x720p 

全高清:1920x1080p

超清(4K):3840x2160,7680x4320 

720p格式:分辨率为1280×720p/60Hz,行频为45kHz。

4K格式:分辨率是1080p的4倍 3840×2160 = 1920×2×1080×2

8K格式:分辨率是4K的4倍 7680×4320 = 3840×2×2160×2

5..码率 

码率,又叫比特率,是指每秒钟视频或音频的数据量,一般用兆/秒或K/秒表示

CBR 固定码率

ABR 平均码率比特率

VBR 可变码率

6.音频采样率

音频采样率是指录音设备在一秒钟内对声音信号的采样次数,采样频率越高声音的还原就越真实越自然

视频有两个空间维度(高度和宽度),但是音频只有一个;响度,它本质上是任意给定的时刻的空气压力。所以音频保存为一系列的响度测量值。在模拟世界中,类似声音通过扬声器电缆的时候,这些变化是电线中电压的变化。对于响度变化进行采样的频率称为采样率

7.采样位数

采样位数可以理解为声卡处理声音的解析度.这个数值越大,解析度就越高,录制和回放的声音就越真实。

8.采样频率

采样频率是指录音设备在一秒钟内对声音信号的采样次数,采样频率越高声音的还原就越真实越自然.在当今的主流声卡上,采样频率一般共分为22.05KHz44.1KHz48KHz三个等级,22.05只能达到FM广播的声音品质,44.1KHz则是理论上的CD音质界限,48KHz则更加精确一些.对于高于48KHz的采样频率人耳已无法辨别出来了,所以在电脑上没有多少使用价值.

二、视频播放原理

2.1视频播放器播放一个互联网上的视频文件,需要经过以下几个步骤:

  • 解协议
  • 解封装
  • 解码视音频
  • 视音频同步

如果播放本地文件则不需要解协议,为以下几个步骤:

  • 解封装
  • 解码视音频
  • 视音频同步

2.2流程图

 1.解协议

就是将流媒体协议的数据,解析为标准的相应的封装格式数据。视音频在网络上传播的时候,常常采用各种流媒体协议,例如HTTP,RTMP,或是MMS等等。这些协议在传输视音频数据的同时,也会传输一些信令数据。这些信令数据包括对播放的控制(播放,暂停,停止),或者对网络状态的描述等。解协议的过程中会去除掉信令数据而只保留视音频数据。例如,采用RTMP协议传输的数据,经过解协议操作后,输出FLV格式的数据

2.解封装

解封装的作用,就是将输入的封装格式的数据,分离成为音频流压缩编码数据和视频流压缩编码数据。封装格式种类很多,例如MP4,MKV,RMVB,TS,FLV,AVI等等,它的作用就是将已经压缩编码的视频数据和音频数据按照一定的格式放到一起。例如,FLV格式的数据,经过解封装操作后,输出H.264编码的视频码流和AAC编码的音频码流。

3.解码

解码的作用,就是将视频/音频压缩编码数据,解码成为非压缩的视频/音频原始数据。音频的压缩编码标准包含AAC,MP3,AC-3等等,视频的压缩编码标准则包含H.264,MPEG2,VC-1等等。解码是整个系统中最重要也是最复杂的一个环节。通过解码,压缩编码的视频数据输出成为非压缩的颜色数据,例如YUV420P,RGB等等;压缩编码的音频数据输出成为非压缩的音频抽样数据,例如PCM数据。

4.视音频同步

视音频同步的作用,就是根据解封装模块处理过程中获取到的参数信息,同步解码出来的视频和音频数据,并将视频音频数据送至系统的显卡和声卡播放出来。

三、视频压缩知识

1.视频文件格式 

2.视频封装格式  相当于 一种存储视频信息的容器

AVI,MPEG,VOB是一种视频封装格式,相当于一种储存视频信息的容器

3.1AVI格式 后缀.avi  音频视频交错格式 

3.2 DV-AVI格式(后缀为.AVI)

3.3 QuickTime File Format 后缀.mov

3.4 MPEG格式(文件后缀可以是 .MPG .MPEG .MPE .DAT .VOB .ASF .3GP .MP4等)

3.5WMV格式(后缀为.WMV .ASF)

3.6 real video (后缀为.RM .RMVB)

3.7 Flash video 后缀.FLV  一种流行的网络视频封装格式

3.8 Matroska 后缀.mkv

常用视频格式及对应的文件格式

视频封装格式

视频文件格式

AVI(Audio Video Interleave)

AVI

WMV (Windows Media Video)

WMV

MPEG (Moving Picture Expert Group )

分为MPEG-1 MPEG-2  MPEG-4

MPG  MPEG VOB DAT 3GP

MP4

Matroska

MKV

Real video

RM RMVB

Quick Time Flie Format

MOV

Flash Video

FLV

4.流媒体协议

4.1RTSP+RTP经常用于IPTV领域

4.2RTMP

4.3  MMS

4.4 HTTP 

四、视频编码方式

4.1 H.26X系列 包括H.261、H.262、H.263、H.264、H.265。

4.2 MPEG系列 

4.3 VP9 VP8

视频原始数据格式

  • YUV格式
  • RGB格式

 音频的原始数据

  • PCM格式

音频编码标准

  • MP3
  • AAC
  • AC-3
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/zhangtaiping89/article/details/130400321

智能推荐

Linux安装JDK1.8 & tomcat & MariaDB(MySQL删减版) & MySQL安装(重要)-程序员宅基地

文章浏览阅读752次,点赞24次,收藏18次。Linux安装JDK1.8 & tomcat & MariaDB(MySQL删减版) & MySQL安装(重要)

神经网络学习小记录20——ResNet50模型的复现详解_resnet50复现-程序员宅基地

文章浏览阅读6.8w次,点赞184次,收藏941次。神经网络学习小记录20——ResNet50模型的复现详解学习前言什么是残差网络什么是ResNet50模型ResNet50网络部分实现代码图片预测学习前言最近看yolo3里面讲到了残差网络,对这个网络结构很感兴趣,于是了解到这个网络结构最初的使用是在ResNet网络里。什么是残差网络Residual net(残差网络):将靠前若干层的某一层数据输出直接跳过多层引入到后面数据层的输入部分。..._resnet50复现

AI之Tool:机器学习/深度学习常用工具(python/Anaconda等)的简介、安装、使用方法之详细攻略_python库 ai robot tool 怎么用起来-程序员宅基地

文章浏览阅读1.7k次,点赞18次,收藏21次。Matlab是一种用于科学计算和工程领域的高级编程语言和环境,广泛用于数学建模、数据分析和信号处理。它有丰富的库和框架,如NumPy、Pandas、Scikit-learn、TensorFlow和PyTorch,使其成为研究和实际应用中的首选语言。:Java在企业级应用中有很大的影响力,而且也有一些用于机器学习和深度学习的库,如Deeplearning4j。: 由GitHub开发,是一个开源的文本编辑器,支持Python和其他多种语言。: Python的标准发行版中自带的简单集成开发环境,适合初学者。_python库 ai robot tool 怎么用起来

N76E003初次搭建工程及遇到Keil 警告:UNCALLED SEGMENT,IGNORED FOR OVERLAY PROCESS时的解决方案_*** warning l25: data types different-程序员宅基地

文章浏览阅读1.7k次。问题描述初次接触N76E003开发板,主要根据以下三篇文章搭建了基本的环境:[N76E003安装环境教程] https://www.cnblogs.com/zhugeanran/p/9554822.html (本文调试遇到警告例子为该文末尾程序)[N76快速入门及常见坑] https://blog.csdn.net/qlexcel/article/details/81069808[单片机..._*** warning l25: data types different

引用和指针的区别-程序员宅基地

文章浏览阅读640次。引用即句柄,都是根据Java编程思想翻译过来的没什么区别。 CSDN有很多大牛,当然也有不少傻逼,并不是所有的程序员都很可爱呆萌,正如并不是所有的牛奶都叫特仑苏。 曾经就有傻逼跟我说java里有指针,数组就实现了,不要相信大学书本里的那套,我就想问问,这么看不起大学,你TM到是上个大学给我看看啊。java为了防止内存泄漏放弃了指针这一概念和用法。指针是什么?java是如何实现指向对象的功能_引用和指针的区别

speex编解码在android上实现-程序员宅基地

文章浏览阅读1.6k次。上一篇文章已经对speex的工作原理做介绍。这里是android端的编译方法。 以前在应用中使用到了Speex编解码,近来总结了一下Speex在android上的实现。Speex是一套主要针对语音的开源免费,无专利保护的音频压缩格式。Speex工程着力于通过提供一个可以替代高性能语音编解码来降低语音应用输入门槛 。另外,相对于其它编解码,Speex也很适合网络应用,在网络应用上有着自己独特的优势。

随便推点

“无用发明家”告诉你,5G推开了三重门-程序员宅基地

文章浏览阅读141次。不知道从什么时候起,“无用发明家”的概念开始兴起。国内有大家耳熟能详的手工耿,日本有“无用发明家”麻里菜。这些动手能力极强的视频博主,不断向观众展示一件件极富创意却并没有什么用处的作品,成...

【MySQL】数据库的安装与连接, 常见问题的解决-程序员宅基地

文章浏览阅读126次。文章目录Mysql 8数据库学习的目的数据库的三种模型层次模型网状模型关系模型Mysql 8 常见问题安装window时遇到的一些问题安装Linux时遇到的一些问题连接数据库在系统终端中工具中Mysql 8数据库学习的目的1.数据可持久化保存2.方便统一化管理以及实现结构化查询本质上数据库是一个按照特定的规则存储在磁盘上的一个用来存储数据的仓库, 通过数据库管理系统,统一的对其中储存的数据进行管理和使用.数据库的三种模型层次模型层次模型就是按照数据类型的层次关系来分类优点: -->查

Spring Cloud系列(一)之 Eureka、Zookeeper、Consul_springcloud和zookeeper学习先后-程序员宅基地

文章浏览阅读1.1k次。Spring Cloud系列之Eureka、Zookeeper、Consul一、微服务架构介绍1.1 架构的演变1.2 Spring Cloud介绍二、微服务架构业务场景2.1 创建服务提供者(provider)工程2.2 创建服务消费者(consumer)工程三、Eureka服务注册与发现3.1 搭建注册中心3.2 服务注册(消费者集群)3.2.1 服务提供者注册3.2.2 服务消费者注册3.3 EurekaServer集群环境构建3.4 搭建服务提供者集群和负载均衡3.5 微服务信息完善3.6 服务发现_springcloud和zookeeper学习先后

计算机网络主要由哪三个部分组成,计算机网络由哪几个部份组成-程序员宅基地

文章浏览阅读3.9k次。大家好,我是时间财富网智能客服时间君,上述问题将由我为大家进行解答。计算机网络由计算机、网络操作系统、传输介质(可以是有形的,也可以是无形的,如无线网络的传输介质就是空气)以及相应的应用软件四部分组成。计算机网络(computer network),简称网络,是利用通信设备和线路将地理位置不同的、功能独立的多个计算机系统连接起来,以功能完善的网络软件实现网络的硬件、软件及资源共享和信息传递的系统,..._计算机网络主要由网络硬件、网络操作系统、网络应用程序三个部分组成,这三个部分

斐波那契数列对10007取余数_斐波拉契数列c++余数10007-程序员宅基地

文章浏览阅读1.1k次,点赞2次,收藏2次。Mn = ( Mn-1 + Mn-2 ) % 10007因为*F(n) = X1 * 10007 + MnF(n+1) = X2 * 10007 +Mn+1F(n+2) = F(n) + F(n+1)=(X1 + X2)+100007 + Mn + Mn+1Mn+2 = F(n+2) / 10007 = Mn + Mn+1所以 Mn = ( Mn-1 + Mn-2 ) % 10007..._斐波拉契数列c++余数10007

SRGAN损失函数(目标函数)详解_srgan的损失函数-程序员宅基地

文章浏览阅读7.9k次,点赞7次,收藏44次。SRGAN损失函数的解析及其Keras代码实现_srgan的损失函数

推荐文章

热门文章

相关标签