画面帧数是什么意思 帧数是什么意思

码流 / 码率 / 比特率 / 帧速率 / 分辨率 / 高清
GOP/ 码流 /码率 / 比特率 / 帧速率 / 分辨率
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响应的时间也越长 。
CABAC/CAVLC
H.264/AVC标准中两种熵编码方法 , CABAC叫自适应二进制算数编码 , CAVLC叫前后自适应可变长度编码 , 
CABAC:是一种无损编码方式 , 画质好 , X264就会舍弃一些较小的DCT系数 , 码率降低 , 可以将码率再降低10-15%(特别是在高码率情况下) , 会降低编码和解码的速速 。
CAVLC将占用更少的CPU资源 , 但会影响压缩性能 。
帧:当采样视频信号时 , 如果是通过逐行扫描 , 那么得到的信号就是一帧图像 , 通常帧频为25帧每秒(PAL制)、30帧每秒(NTSC制);
场:当采样视频信号时 , 如果是通过隔行扫描(奇、偶数行) , 那么一帧图像就被分成了两场 , 通常场频为50Hz(PAL制)、60Hz(NTSC制);
帧频、场频的由来:最早由于抗干扰和滤波技术的限制 , 电视图像的场频通常与电网频率(交流电)相一致 , 于是根据各地交流电频率不同就有了欧洲和中国等PAL制的50Hz和北美等NTSC制的60Hz , 但是现在并没有这样的限制了 , 帧频可以和场频一样 , 或者场频可以更高 。
帧编码、场编码方式:逐行视频帧内邻近行空间相关性较强 , 因此当活动量非常小或者静止的图像比较适宜采用帧编码方式;而场内相邻行之间的时间相关性较强 , 对运动量较大的运动图像则适宜采用场编码方式 。
Deblocking
开启会减少块效应 。
FORCE_IDR
是否让每个I帧变成IDR帧 , 如果是IDR帧 , 支持随机访问 。
frame,tff,bff
--frame 将两场合并作为一帧进行编码,--tff Enable interlaced mode (开启隔行编码并设置上半场在前),--bff Enable interlaced mode 。
PAFF 和MBAFF:当对隔行扫描图像进行编码时 , 每帧包括两个场 , 由于两个场之间存在较大的扫描间隔 , 这样 , 对运动图像来说 , 帧中相邻两行之间的空间相关性相对于逐行扫描时就会减小 , 因此这时对两个场分别进行编码会更节省码流 。
对帧来说 , 存在三种可选的编码方式:将两场合并作为一帧进行编码(frame 方式)或将两场分别编码(field 方式)或将两场合并起来作为一帧 , 但不同的是将帧中垂直相邻的两个宏块合并为宏块对进行编码;前两种称为PAFF 编码 , 对运动区域进行编码时field 方式有效 , 对非运区域编码时 , 由于相邻两行有较大的相关性 , 因而frame 方式会更有效 。当图像同时存在运动区域和非运动区域时 , 在MB 层次上 , 对运动区域采取field 方式 , 对非运动区域采取frame 方式会更加有效 , 这种方式就称为MBAFF , 预测的单位是宏块对 。
整理了一些学习资料、教学视频和学习路线图如下
资料内容包括《Andoird音视频开发必备手册+音视频学习视频+学习文档资料包+大厂面试真题+2022最新学习路线图》等等(C/C++ , Linux , FFmpeg ,webRTC, rtmp, hls, rtsp, ffplay, srs) , 免费分享 , 点击自取FFmpegWebRTCRTMPRTSPHLSRTP播放器-音视频流媒体高级开发

画面帧数是什么意思 帧数是什么意思

文章插图
画面帧数是什么意思 帧数是什么意思

文章插图
码流 / 码率
 码流(Data Rate)是指视频文件在单位时间内使用的数据流量 , 也叫码率或码流率 , 通俗一点的理解就是取样率,是视频编码中画面质量控制中最重要的部分 , 一般我们用的单位是kb/s或者Mb/s 。一般来说同样分辨率下 , 视频文件的码流越大 , 压缩比就越小 , 画面质量就越高 。码流越大 , 说明单位时间内取样率越大 , 数据流 , 精度就越高 , 处理出来的文件就越接近原始文件 , 图像质量越好 , 画质越清晰 , 要求播放设备的解码能力也越高 。
当然 , 码流越大 , 文件体积也越大 , 其计算公式是文件体积=时间X码率/8 。例如 , 网络上常见的一部90分钟1Mbps码流的720P RMVB文件 , 其体积就=5400秒×1Mb/8=675MB 。
通常来说 , 一个视频文件包括了画面及声音 , 例如一个RMVB的视频文件 , 里面包含了视频信息和音频信息 , 音频及视频都有各自不同的采样方式和比特率 , 也就是说 , 同一个视频文件音频和视频的比特率并不是一样的 。而我们所说的一个视频文件码流率大小 , 一般是指视频文件中音频及视频信息码流率的总和 。
以以国内最流行 , 大家最熟悉的RMVB视频文件为例 , RMVB中的VB , 指的是VBR , 即Variable Bit Rate的缩写 , 中文含义是可变比特率 , 它表示RMVB采用的是动态编码的方式 , 把较高的采样率用于复杂的动态画面(歌舞、飞车、战争、动作等) , 而把较低的采样率用于静态画面 , 合理利用资源 , 达到画质与体积可兼得的效果 。
码率和取样率最根本的差别就是码率是针对源文件来讲的 。
采样率
采样率(也称为采样速度或者采样频率)定义了每秒从连续信号中提取并组成离散信号的采样个数 , 它用赫兹(Hz)来表示 。采样率是指将模拟信号转换成数字信号时的采样频率 , 也就是单位时间内采样多少点 。一个采样点数据有多少个比特 。比特率是指每秒传送的比特(bit)数 。单位为 bps(Bit Per Second) , 比特率越高 , 传送的数据越大 , 音质越好.比特率 =采样率 x 采用位数 x声道数.
采样率类似于动态影像的帧数 , 比如电影的采样率是24赫兹 , PAL制式的采样率是25赫兹 , NTSC制式的采样率是30赫兹 。当我们把采样到的一个个静止画面再以采样率同样的速度回放时 , 看到的就是连续的画面 。同样的道理 , 把以44.1kHZ采样率记录的CD以同样的速率播放时 , 就能听到连续的声音 。显然 , 这个采样率越高 , 听到的声音和看到的图像就越连贯 。当然 , 人的听觉和视觉器官能分辨的采样率是有限的 , 基本上高于44.1kHZ采样的声音 , 绝大部分人已经觉察不到其中的分别了 。
而声音的位数就相当于画面的颜色数 , 表示每个取样的数据量 , 当然数据量越大 , 回放的声音越准确 , 不至于把开水壶的叫声和火车的鸣笛混淆 。同样的道理 , 对于画面来说就是更清晰和准确 , 不至于把血和西红柿酱混淆 。不过受人的器官的机能限制 , 16位的声音和24位的画面基本已经是普通人类的极限了 , 更高位数就只能靠仪器才能分辨出来了 。比如电话就是3kHZ取样的7位声音 , 而CD是44.1kHZ取样的16位声音 , 所以CD就比电话更清楚 。
当你理解了以上这两个概念 , 比特率就很容易理解了 。以电话为例 , 每秒3000次取样 , 每个取样是7比特 , 那么电话的比特率是21000 。而CD是每秒 44100次取样 , 两个声道 , 每个取样是13位PCM编码 , 所以CD的比特率是44100*2*13=1146600 , 也就是说CD每秒的数据量大约是 144KB , 而一张CD的容量是74分等于4440秒 , 就是639360KB=640MB 。
码率和取样率最根本的差别就是码率是针对源文件来讲的 。
比特率
比特率是指每秒传送的比特(bit)数 。单位为bps(Bit Per Second) , 比特率越高 , 传送的数据越大 。在视频领域,比特率常翻译为码率 !!!
比特率表示经过编码(压缩)后的音、视频数据每秒钟需要用多少个比特来表示 , 而比特就是二进制里面最小的单位 , 要么是0 , 要么是1 。比特率与音、视频压缩的关系 , 简单的说就是比特率越高 , 音、视频的质量就越好 , 但编码后的文件就越大;如果比特率越少则情况刚好相反 。
比特率是指将数字声音、视频由模拟格式转化成数字格式的采样率 , 采样率越高 , 还原后的音质、画质就越好 。
常见编码模式:
VBR(Variable Bitrate)动态比特率 也就是没有固定的比特率 , 压缩软件在压缩时根据音频数据即时确定使用什么比特率 , 这是以质量为前提兼顾文件大小的方式 , 推荐编码模式;
ABR(Average Bitrate)平均比特率 是VBR的一种插值参数 。LAME针对CBR不佳的文件体积比和VBR生成文件大小不定的特点独创了这种编码模式 。ABR在指定的文件大小内 , 以每50帧(30帧约1秒)为一段 , 低频和不敏感频率使用相对低的流量 , 高频和大动态表现时使用高流量 , 可以做为VBR和CBR的一种折衷选择 。
CBR(Constant Bitrate) , 常数比特率 指文件从头到尾都是一种位速率 。相对于VBR和ABR来讲 , 它压缩出来的文件体积很大 , 而且音质相对于VBR和ABR不会有明显的提高 。
帧速率
帧速率也称为FPS(Frames PerSecond)的缩写——帧/秒 。是指每秒钟刷新的图片的帧数 , 也可以理解为图形处理器每秒钟能够刷新几次 。越高的帧速率可以得到更流畅、更逼真的动画 。每秒钟帧数(FPS)越多 , 所显示的动作就会越流畅 。
分辨率
就是帧大小每一帧就是一副图像 。
640*480分辨率的视频 , 建议视频的码速率设置在700以上 , 音频采样率44100就行了
一个音频编码率为128Kbps , 视频编码率为800Kbps的文件 , 其总编码率为928Kbps , 意思是经过编码后的数据每秒钟需要用928K比特来表示 。
计算输出文件大小公式:
(音频编码率(KBit为单位)/8 +视频编码率(KBit为单位)/8)×影片总长度(秒为单位)=文件大小(MB为单位)
【画面帧数是什么意思 帧数是什么意思】2,高清视频
目前的720P以及1080P采用了很多种编码 , 例如主流的MPEG2 , VC-1以及H.264 , 还有Divx以及Xvid , 至于封装格式更多到令人发指 , ts、mkv、wmv以及蓝光专用等等 。
720和1080代表视频流的分辨率 , 前者1280*720 , 后者1920*1080 , 不同的编码需要不同的系统资源 , 大概可以认为是H.264>VC-1>MPEG2 。
VC-1是最后被认可的高清编码格式 , 不过因为有微软的后台 , 所以这种编码格式不能小窥 。相对于MPEG2 , VC-1的压缩比更高 , 但相对于H.264而言 , 编码解码的计算则要稍小一些 , 目前来看 , VC-1可能是一个比较好的平衡 , 辅以微软的支持 , 应该是一只不可忽视的力量 。一般来说 , VC-1多为 “.wmv”后缀 , 但这都不是绝对的 , 具体的编码格式还是要通过软件来查询 。
总的来说 , 从压缩比上来看 , H.264的压缩比率更高一些 , 也就是同样的视频 , 通过H.264编码算法压出来的视频容量要比VC-1的更小 , 但是VC-1 格式的视频在解码计算方面则更小一些 , 一般通过高性能的CPU就可以很流畅的观看高清视频 。相信这也是目前NVIDIA Geforce 8系列显卡不能完全解码VC-1视频的主要原因 。
PS&TS是两种视频或影片封装格式 , 常用于高清片 。扩展名分别为VOB/EVO和TS等;其文件编码一般用MPEG2/VC-1/H.264
 高清 , 英文为“High Definition” , 即指“高分辨率” 。高清电视(HDTV) , 是由美国电影电视工程师协会确定的高清晰度电视标准格式 。现在的大屏幕液晶电视机 , 一般都支持1080i和720P , 而一些俗称的“全高清”(Full HD) , 则是指支持1080P输出的电视机 。
目前的高清视频编码格式主要有H.264、VC-1、MPEG-2、MPEG-4、DivX、XviD、WMA-HD以及X264 。事实上 , 现在网络上流传的高清视频主要以两类文件的方式存在:一类是经过MPEG-2标准压缩 , 以tp和ts为后缀的视频流文件;一类是经过WMV-HD(Windows Media Video HighDefinition)标准压缩过的wmv文件 , 还有少数文件后缀为avi或mpg , 其性质与wmv是一样的 。真正效果好的高清视频更多地以H.264与VC-1这两种主流的编码格式流传 。
一般来说 , H.264格式以“.avi”、“.mkv”以及“.ts”封装比较常见 。
位率(定码率 , 变码率)
位率又称为“码率” 。指单位时间内 , 单个录像通道所产生的数据量 , 其单位通常是bps、Kbps或Mbps 。可以根据录像的时间与位率估算出一定时间内的录像文件大小 。位率是一个可调参数 , 不同的分辨率模式下和监控场景下 , 合适的位率大小是不同的 。在设置时 , 要综合考虑三个因素:
1、分辨率
分辨率是决定位率(码率)的主要因素 , 不同的分辨率要采用不同的位率 。总体而言 , 录像的分辨率越高 , 所要求的位率(码率)也越大 , 但并不总是如此 , 图1说明了不同分辨率的合理的码率选择范围 。所谓“合理的范围”指的是 , 如果低于这个范围 , 图像质量看起来会变得不可接受;如果高于这个范围 , 则显得没有必要 , 对于网络资源以及存储资源来说是一种浪费 。
2、场景
监控的场景是设置码率时要考虑的第二个因素 。在视频监控中 , 图像的运动剧烈程度还与位率有一定的关系 , 运动越剧烈 , 编码所要求的码率就越高 。反之则越低 。因此在同样的图像分辨率条件下 , 监控人多的场景和人少的场景 , 所要求的位率也是不同的 。
3、存储空间
最后需要考量的因素是存储空间 , 这个因素主要是决定了录像系统的成本 。位率设置得越高 , 画质相对会越好 , 但所要求的存储空间就越大 。所以在工程实施中 , 设置合适的位率即可以保证良好的回放图像质量 , 又可以避免不必要的资源浪费 。
位率类型
位率类型又称为码率类型 , 共有两种——动态码率(VBR)和固定码率(CBR) 。所谓动态码率是指编码器在对图像进行压缩编码的过程中 , 根据图像的状况实时调整码率高低的过程 , 例如当图像中没有物体在移动时 , 编码器自动将码率调整到一个较低的值 。但当图像中开始有物体移动时 , 编码器又自动将码率调整到一个较高的值 , 并且实时根据运动的剧烈程度进行调整 。这种方式是一种图像质量不变 , 数据量变化的编码模式 。
固定码率是指编码器在对图像进行编码的过程中 , 自始至终采用一个固定的码率值 , 不论图像情况如何变化 。这种方式是码率量不变 , 而图像质量变化的编码模式 。在动态码率模式下 , 我们在硬盘录像机上设置的位率值称为“位率上限” 。意思是我们人为设定一个编码码率变化的上限 , 可以低于 , 但不能高于 。根据这个位率值 , 我们可以估算出一定时间内的存储容量的上限值 。
在固定码率模式下 , 在硬盘录像机上设置的位率值就是编码时所使用的位率值 , 根据这个数值 , 我们可以精确地估算出一定时间内的存储容量 。
QP(quantizer parameter)
介于0~31之间 , 值越小 , 量化越精细 , 图像质量就越高 , 而产生的码流也越长 。
PSNR
允许计算峰值信噪比(PSNR,Peak signal-to-noise ratio),编码结束后在屏幕上显示PSNR计算结果 。开启与否与输出的视频质量无关 , 关闭后会带来微小的速度提升 。
profile level
分别是BP、EP、MP、HP:
1、BP-Baseline Profile:基本画质 。支持I/P 帧 , 只支持无交错(Progressive)和CAVLC;
2、EP-Extended profile:进阶画质 。支持I/P/B/SP/SI 帧 , 只支持无交错(Progressive)和CAVLC;
3、MP-Main profile:主流画质 。提供I/P/B 帧 , 支持无交错(Progressive)和交错(Interlaced) , 也支持CAVLC 和CABAC 的支持;
4、HP-High profile:高级画质 。在main Profile 的基础上增加了8x8内部预测、自定义量化、无损视频编码和更多的YUV 格式;
H.264规定了三种档次 , 每个档次支持一组特定的编码功能 , 并支持一类特定的应用 。
1)基本档次:利用I片和P片支持帧内和帧间编码 , 支持利用基于上下文的自适应的变长编码进行的熵编码(CAVLC) 。主要用于可视电话、会议电视、无线通信等实时视频通信;
2)主要档次:支持隔行视频 , 采用B片的帧间编码和采用加权预测的帧内编码;支持利用基于上下文的自适应的算术编码(CABAC) 。主要用于数字广播电视与数字视频存储;
3)扩展档次:支持码流之间有效的切换(SP和SI片)、改进误码性能(数据分割) , 但不支持隔行视频和CABAC 。主要用于网络的视频流 , 如视频点播 。
Reference
指两个P帧之间的距离 。
主码流/副码流
主码流位率高 , 图像质量高 , 便于本地存储;副码流位率低 , 图像质量低 , 便于网络传输 。
总结:
编码参数不能只知道帧率 , 码率 , I帧间隔 , QP因子 , 更要知道其他参数的作用 。

    推荐阅读