【音视频开发-基础】音视频开发-基础之一

音视频 专栏收录该内容
2 篇文章 0 订阅

1、分辨率、帧率和码率

  • 帧率:FPS(每秒钟要多少帧画面)。
  • 码率:编码器每秒编出的数据大小,单位是kbps,比如800kbps代表编码器每秒产生800kb(或100KB)的数据。
    1. VBR(Variable Bitrate)动态比特率也就是没有固定的比特率,压缩软件在压缩时根据音频数据即时确定使用什么比特率,这是以质量为前提兼顾文件大小的方式,推荐编码模式;
    2. ABR(Average Bitrate)平均比特率是VBR的一种插值参数。LAME针对CBR不佳的文件体积比和VBR生成文件大小不定的特点独创了这种编码模式。ABR在指定的文件大小内,以每50帧(30帧约1秒)为一段,低频和不敏感频率使用相对低的流量,高频和大动态表现时使用高流量,可以做为VBR和CBR的一种折衷选择。
    3. CBR(Constant Bitrate)常数比特率 指文件从头到尾都是一种位速率。相对于VBR和ABR来讲,它压缩出来的文件体积很大,而且音质相对于VBR和ABR不会有明显的提高。

  • 分辨率:单位英寸中所包含的像素点数。

三者的对应直播质量的影响因素:
帧率:影响画面流畅度,与画面流畅度成正比:帧率越大,画面越流畅;帧率越小,画面越有跳动感。如果码率为变量,则帧率也会影响体积,帧率越高,每秒钟经过的画面越多,需要的码率也越高,体积也越大。帧率就是在1秒钟时间里传输的图片的帧数,也可以理解为图形处理器每秒钟能够刷新几次。

分辨率:影响图像大小,与图像大小成正比:分辨率越高,图像越大;分辨率越低,图像越小。

清晰度
在码率一定的情况下,分辨率与清晰度成反比关系:分辨率越高,图像越不清晰,分辨率越低,图像越清晰。
在分辨率一定的情况下,码率与清晰度成正比关系,码率越高,图像越清晰;码率越低,图像越不清晰。

2、I 帧、P 帧和B帧

  • I 帧(Intra coded frames):I 帧图像采用帧内编码方式,即只利用了单帧图像内的空间相关性,而没有利用时间相关性。I 帧使用帧内压缩,不使用运动补偿,由于 I 帧不依赖其它帧,所以是随机存取的入点,同时是解码的基准帧。I 帧主要用于接收机的初始化和信道的获取,以及节目的切换和插入,I 帧图像的压缩倍数相对较低。I 帧图像是周期性出现在图像序列中的,出现频率可由编码器选择。
  • P 帧(Predicted frames):P 帧和 B 帧图像采用帧间编码方式,即同时利用了空间和时间上的相关性。P 帧图像只采用前向时间预测,可以提高压缩效率和图像质量。P 帧图像中可以包含帧内编码的部分,即 P 帧中的每一个宏块可以是前向预测,也可以是帧内编码。
  • B 帧(Bi-directional predicted frames):B 帧图像采用双向时间预测,可以大大提高压缩倍数。值得注意的是,由于 B 帧图像采用了未来帧作为参考,因此 MPEG-2 编码码流中图像帧的传输顺序和显示顺序是不同的。

也就是说,一个 I 帧可以不依赖其他帧就解码出一幅完整的图像,而 P 帧、B 帧不行。P 帧需要依赖视频流中排在它前面的帧才能解码出图像。B 帧则需要依赖视频流中排在它前面或后面的帧才能解码出图像。

3、DTS和PTS

  • DTS(Decoding Time Stamp):即解码时间戳,这个时间戳的意义在于告诉播放器该在什么时候解码这一帧的数据。
  • PTS(Presentation Time Stamp):即显示时间戳,这个时间戳用来告诉播放器该在什么时候显示这一帧的数据。

需要注意的是:虽然 DTS、PTS 是用于指导播放端的行为,但它们是在编码的时候由编码器生成的。

当视频流中没有 B 帧时,通常 DTS 和 PTS 的顺序是一致的。但如果有 B 帧时,就回到了我们前面说的问题:解码顺序和播放顺序不一致了。

4、GOP(Group of picture)

关键帧的周期,也就是两个IDR帧之间的距离,一个帧组的最大帧数,一般而言,每一秒视频至少需要使用 1 个关键帧。增加关键帧个数可改善质量,但是同时增加带宽和网络负载。

需要说明的是,通过提高GOP值来提高图像质量是有限度的,在遇到场景切换的情况时,H.264编码器会自动强制插入一个I帧,此时实际的GOP值被缩短了。另一方面,在一个GOP中,P、B帧是由I帧预测得到的,当I帧的图像质量比较差时,会影响到一个GOP中后续P、B帧的图像质量,直到下一个GOP开始才有可能得以恢复,所以GOP值也不宜设置过大。

同时,由于P、B帧的复杂度大于I帧,所以过多的P、B帧会影响编码效率,使编码效率降低。另外,过长的GOP还会影响Seek操作的响应速度,由于P、B帧是由前面的I或P帧预测得到的,所以Seek操作需要直接定位,解码某一个P或B帧时,需要先解码得到本GOP内的I帧及之前的N个预测帧才可以,GOP值越长,需要解码的预测帧就越多,seek响应的时间也越长。

5、profile level

分别是BP、EP、MP、HP
- BP-Baseline Profile:基本画质。支持I/P 帧,只支持无交错(Progressive)和CAVLC;
- EP-Extended profile:进阶画质。支持I/P/B/SP/SI 帧,只支持无交错(Progressive)和CAVLC;
- MP-Main profile:主流画质。提供I/P/B 帧,支持无交错(Progressive)和交错(Interlaced),也支持CAVLC 和CABAC 的支持;
- HP-High profile:高级画质。在main Profile 的基础上增加了8x8内部预测、自定义量化、无损视频编码和更多的YUV 格式;

6、音视频的同步

一个媒体流中,除了视频以外,通常还包括音频。音频的播放,也有 DTS、PTS 的概念,但是音频没有类似视频中 B 帧,不需要双向预测,所以音频帧的 DTS、PTS 顺序是一致的。

音频视频混合在一起播放,就呈现了我们常常看到的广义的视频。在音视频一起播放的时候,我们通常需要面临一个问题:怎么去同步它们,以免出现画不对声的情况。

要实现音视频同步,通常需要选择一个参考时钟,参考时钟上的时间是线性递增的,编码音视频流时依据参考时钟上的时间给每帧数据打上时间戳。在播放时,读取数据帧上的时间戳,同时参考当前参考时钟上的时间来安排播放。这里的说的时间戳就是我们前面说的 PTS。实践中,我们可以选择:同步视频到音频、同步音频到视频、同步音频和视频到外部时钟。

  • 5
    点赞
  • 0
    评论
  • 5
    收藏
  • 一键三连
    一键三连
  • 扫一扫,分享海报

相关推荐
《android多媒体开发高级编程——为智能手机平板电脑开发图形音乐视频富媒体应用》使用清晰直观的示例介绍了android sdk中丰富的多媒体功能,有助于您开发能够创建播放共享多媒体的优秀android应用程序。许多android设备本身就是照相机相册摄像机电影播放器音乐播放器以及录音机——为何不在应用程序中使用所有这些及更多的功能?这些令人激动的功能将使您的应用程序熠熠生辉,实现更多的用途。 《android多媒体开发高级编程——为智能手机平板电脑开发图形音乐视频富媒体应用》首先讨论摄像头成像功能,然后介绍音频捕获处理及合成,最后以视频用于多媒体共享的联机服务作为结束。作为开发人员,您可以跳转到任何章节,使用讨论的内容示例代码来创建利用所展示功能的应用程序。所以,无论是对可视化声波还是编写触摸屏绘图应用程序感兴趣,您都会发现如何使应用程序能够工作制作精良以及令人眼前一亮所需要的所有信息。 多媒体应用程序在移动设备上的未来越来越令人兴奋。《android多媒体开发高级编程——为智能手机平板电脑开发图形音乐视频富媒体应用》将帮助您以android多媒体应用程序的方式来创建并定义这一美好的未来。 android多媒体开发高级编程目录: 第1章 android图像概述 1.1使用内置的camera应用程序捕获图像 1.1.1从camera应用程序返回数据 1.1.2捕获更大的图像 1.1.3显示大图像 1.2图像存储元数据 1.2.1获得图像的uri 1.2.2更新cameraactivity以使用mediastore存储图像关联元数据 1.2.3使用mediastore检索图像 1.2.4创建图像查看应用程序 1.2.5内部元数据 1.3本章小结 第2章 构建定制的camera应用程序 2.1使用camera类 2.1.1 camera权限 2.1.2预览surface 2.1.3实现camera对象 2.1.4汇总 2.2扩展定制的camera应用程序 .2.2.1构建基于定时器的camera应用程序 2.2.2构建时问推移摄影应用程序 2.3本章小结 第3章 图像编辑处理 3.1使用内置gallery应用程序选择图像 3.2在位图上绘制位图 3.3基本的图像缩放旋转 3.3.1输入矩阵 3.3.2 matrix类的方法 3.4图像处理 3.4.1colormatrix 3.4.2 改变对比度亮度 3.4.3 改变饱度 3.5图像合成 3.6 本章小结 第4章 图形触摸事件 4.1画布绘图 4.1.1位图创建 4.1.2位图配置 4.1.3创建canvas对象 4.1.4使用paint对象 4.1.5绘制形状 4.1.6绘制文本 4.2手指绘图 4.2.1触摸事件 4.2.2在现有图像上绘制 4.2.3保存基于位图的画布绘图 4.3本章小结 第5章 android音频概述 5.1音频播放 5.1.1支持的音频格式 5.1.2通过意图使用内置的音频播放器 5.1.3创建自定义的音频播放应用程序 5.1.4用于音频的mediastore 5.2本章小结 第6章后台网络音频 6.1后台音频播放 6.1.1服务 6.1.2加上mediaplayer的本地服务 6.1.3控制服务中的mediaplayer 6.2网络音频 6.2.1http音频播放 6.2.2通过http的流式音频 6.2.3rtsp音频流 6.3本章小结 第7章音频捕获 7.1通过意图捕获音频 7.2定制音频捕获 7.2.1mediarecorder音频源 7.2.2mediarecorder输出格式 7.2.3mediarecorder音频编码器 7.2.4mediarecorder输出录制 7.2.5mediarecorder状态机 7.2.6mediarecorder示例 7.2.7其他的mediarecorder方法 7.3将音频插入mediastore 7.4使用audiorecord录制原始音频 7.5使用audiotrack播放原始音频 7.6捕获播放原始音频的示例 7.7本章小结 第8章音频合成与分析 8.1数字音频合成 8.1.1播放合成声音 8.1.2生成样本 8.2音频分析 8.2.1捕获声音以进行分析 8.2.2可视化频率 8.3本章小结 第9章视频概述 9.1视频播放 9.1.1支持的格式 9.1.2使用意图播放 9.1.3使用videoview播放 9.1.4使用mediacontroller添加控制 9.1.5使用mediaplayer播放 9.2本章小结 第10章视频进阶 10.1使用mediastore检索视频 10.1.1来自mediastore的视频缩略图 10.1.2完整的mediastore视频示例 10.2网络视频 10.2.1支持的网络视频类型 10.2.2网络视频播放 10.3本章小结 第11章视频捕获, 11.1使用意图录制视频 11.2添加视频元数据 11.3定制视频捕获 11.3.1将mediarecorder用于视频 11.3.2定制视频捕获的完整示例 11.4本章小结 第12章使用wed服务媒体 12.1 web服务 12.2http请求 12.3json 12.3.1使用json提取flickr图像 12.3.2位置 12.3.3使用json位置提取flickr图像 12.4rest 12.4.1以xml表示数据 12.4.2sax分析 12.5http文件上传 12.5.1生成http请求 12.5.2上传视频到blip.tv 12.6本章小结
©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值