视频相关学习笔记

YUV

和rgb一样是一种表示色彩的格式,Y表示亮度,UV表示色度(U是蓝色投影,V是红色投影),只有Y就是黑白的,所以这个格式的视频图片可以兼容黑白电视,所以彩色电视使用的都是YUV

存储方式

planar

先存储Y之后是U最后存V
packed

YUV依次存放

采样方式

4:4:4

8+8+8 = 24bits = 3bytes
4:2:2 (两个Y用一个UV)

8+4+4 = 16bits = 2bytes
4:2:0 (UV交替采样)

8+2+2 = 12bits = 1.5bytes

采样介绍

网上找到一张图,这个就很清楚的解释了什么是采样,如何采样。

这里也能看出YUV相对于RGB的优势,RGB属于4:4:4一个像素3字节,而YUV可以压缩到1.5字节

参考:
对YUV4:2:0认识理解
YUV图像基础知识

H264

一种视频编码格式

帧类别

介绍不同帧之前首先要知道不是所有的帧都是完整的,毕竟如果每一帧都是关键帧,一个1920 * 1080的YUV4:2:0的图片就要1920 * 1080 * 15bytes的大小,有3MB左右,这个量级看一个300帧一个G就快没有了,如果按1s30帧来看,只需10s你就会花费一个G的流量,想也知道不太现实,所以不是每一帧都是关键的,因此分出了IPB三种帧。
GOP

既然知道有三种帧,那么肯定需要按一定规律放置,按一组一组分开,那么这个组就是GOP。这个GOP是按I帧分开的,所以每个GOP中只有一个I帧
I帧

关键帧,最大,最完整的一帧
P帧

需要根据前一个I帧或P帧计算所得,数据并不完整,数据量比I帧少,视频中大多数都是P帧。
B帧

需要根据前一个和后一个I帧或P帧计算所得,数据最不完整,是最小的帧。

图像运动越快GOP越短,运动越慢GOP越大

应用

直播环境

直播环境下,为了避免首次打开直播花屏的情况,一般采用缓存I帧的办法(但是缓存设置过大会导致延迟高的情况)

直播流禁止B帧,因为B帧需要前后的帧才能推算出来

相关推荐
美狐美颜sdk5 分钟前
视频美颜SDK从Demo到正式商用,还需要完成哪些准备工作?
人工智能·音视频·美颜sdk·视频美颜sdk·美颜api
碧海银沙音频科技研究院15 分钟前
炬芯ATS308X U 盘 MP4 音视频播放功能实现
音视频
Be for thing26 分钟前
PyTorch自动求导Autograd详解|requires_grad、backward、grad、梯度清零
pytorch·学习·1024程序员节
镭封30 分钟前
AI文字转语音能制作多人对白吗?角色分配操作指南
人工智能·小程序·音视频·语音识别·媒体
陈哈哈111132 分钟前
折腾了半天,总算把 Vim 9.2 装明白了
笔记
陈哈哈111132 分钟前
折腾了半天,总算把 OpenGL 的开发环境给装明白了
笔记
Zero Lu33 分钟前
国内如何用 Opus 5.5 生成视频?Cyberbara Motion 案例与提示词分享
人工智能·aigc·音视频·提示词
FlightYe35 分钟前
视界原理之3D视频(三):解码和显示
android·linux·3d·ffmpeg·音视频·android runtime
小嘉丶学长40 分钟前
Day08 · 字符串(二)
服务器·开发语言·python·学习·1024程序员节
事圆则缓1 小时前
Flutter 与原生交互的最后一层:RTC 视频帧怎么走
flutter·音视频·实时音视频