音视频入门基础:像素格式专题(1)——RGB简介

一、像素格式简介  

    像素格式(pixel format)指像素色彩按分量的大小和排列。这种格式以每个像素所使用的总位数以及用于存储像素色彩的红、绿、蓝和 alpha 分量的位数指定。在音视频领域,常用的像素格式包括RGB格式和YUV格式,本文对RGB格式进行简介。

二、RGB格式简介

    三原色光模式(RGB color model,又称RGB表色系统、RGB颜色模型、红绿蓝颜色模型,是一种加色模型,将红(Red)、绿(Green)、蓝(Blue)三原色的色光以不同的比例相加混色,以合成产生各种色彩光。

    RGB颜色模型的主要目的是在电子系统中检测,表示和显示图像,比如电视和电脑,利用大脑强制视觉生理模糊化(失焦),将红绿蓝三原色子像素合成为一色彩像素,产生感知色彩(其实此真彩色并非加色法所产生的合成色彩,原因为该三原色光从来没有重叠在一起,只是人类为了“想”看到色彩,大脑强制眼睛失焦而形成。情况其实就有点像看那些 autostereograms 的立体图时,大脑与眼睛扭曲才能看到“想”看的立体影像的情况)。 红绿蓝三色模型在传统摄影中也有应用。在电子时代之前,基于人类对颜色的感知,RGB颜色模型已经有了坚实的理论支撑。

三、RGB24格式简介

   RGB24是表明图像以RGB三原色,每个像素点3个字节表示的一种图像存储格式,即每像素24位编码的RGB值:使用三个8位无符号整数(0到255)表示红色、绿色和蓝色的强度。这是当前主流的标准表示方法,用于真彩色和JPEG或者TIFF等图像文件格式里的通用颜色交换。它可以产生一千六百万种颜色组合,比如:

(0, 0, 0)是黑色;(255, 255, 255)是白色;(255, 0, 0)是红色;(0, 255, 0)是绿色;(0, 0, 255)是蓝色;(255, 255, 0)是黄色;(0, 255, 255)是青色或水色;(255, 0, 255)是洋红色。

四、RGB24格式视频大小计算

由于RGB24格式每像素占3个字节。所以一张rgb图片的大小 = 图片的宽 * 图片的高 *3 byte。

一个rgb视频的大小 =  里面一张rgb图片的大小 * 该视频文件的总帧数。

 

下面我们用FFmpeg(我用的FFmpeg版本是5.0.3)来验证上述的公式。

首先查看FFmpeg将视频文件转为rgb文件的命令,执行命令:

ffmpeg -h full

打印ffmpeg的所有帮助信息

可以看到有一栏写道:-pix_fmts           show available pixel formats

Print help / information / capabilities:
-L                  show license
-h topic            show help
-? topic            show help
-help topic         show help
--help topic        show help
-version            show version
-buildconf          show build configuration
-formats            show available formats
-muxers             show available muxers
-demuxers           show available demuxers
-devices            show available devices
-codecs             show available codecs
-decoders           show available decoders
-encoders           show available encoders
-bsfs               show available bit stream filters
-protocols          show available protocols
-filters            show available filters
-pix_fmts           show available pixel formats
-layouts            show standard channel layouts
-sample_fmts        show available audio sample formats
-dispositions       show available stream dispositions
-colors             show available color names
-sources device     list sources of the input device
-sinks device       list sinks of the output device
-hwaccels           show available HW acceleration methods

意思是FFmpeg命令中可以通过-pix_fmts 选项显示可用的像素格式

所以执行命令:

ffmpeg -pix_fmts

得到输出如下:

Pixel formats:
I.... = Supported Input  format for conversion
.O... = Supported Output format for conversion
..H.. = Hardware accelerated format
...P. = Paletted format
....B = Bitstream format
FLAGS NAME            NB_COMPONENTS BITS_PER_PIXEL BIT_DEPTHS
-----
IO... yuv420p                3             12      8-8-8
IO... yuyv422                3             16      8-8-8
IO... rgb24                  3             24      8-8-8
IO... bgr24                  3             24      8-8-8
IO... yuv422p                3             16      8-8-8
IO... yuv444p                3             24      8-8-8
IO... yuv410p                3              9      8-8-8
IO... yuv411p                3             12      8-8-8
IO... gray                   1              8      8
IO..B monow                  1              1      1
IO..B monob                  1              1      1
I..P. pal8                   1              8      8
IO... yuvj420p               3             12      8-8-8
IO... yuvj422p               3             16      8-8-8
IO... yuvj444p               3             24      8-8-8
IO... uyvy422                3             16      8-8-8
..... uyyvyy411              3             12      8-8-8
IO... bgr8                   3              8      3-3-2
.O..B bgr4                   3              4      1-2-1
IO... bgr4_byte              3              4      1-2-1
IO... rgb8                   3              8      2-3-3
.O..B rgb4                   3              4      1-2-1
IO... rgb4_byte              3              4      1-2-1
IO... nv12                   3             12      8-8-8
IO... nv21                   3             12      8-8-8
IO... argb                   4             32      8-8-8-8
IO... rgba                   4             32      8-8-8-8
IO... abgr                   4             32      8-8-8-8
IO... bgra                   4             32      8-8-8-8
IO... gray16be               1             16      16
IO... gray16le               1             16      16
IO... yuv440p                3             16      8-8-8
IO... yuvj440p               3             16      8-8-8
IO... yuva420p               4             20      8-8-8-8
IO... rgb48be                3             48      16-16-16
IO... rgb48le                3             48      16-16-16
IO... rgb565be               3             16      5-6-5
IO... rgb565le               3             16      5-6-5
IO... rgb555be               3             15      5-5-5
IO... rgb555le               3             15      5-5-5
IO... bgr565be               3             16      5-6-5
IO... bgr565le               3             16      5-6-5
IO... bgr555be               3             15      5-5-5
IO... bgr555le               3             15      5-5-5
..H.. vaapi                  0              0      0
IO... yuv420p16le            3             24      16-16-16
IO... yuv420p16be            3             24      16-16-16
IO... yuv422p16le            3             32      16-16-16
IO... yuv422p16be            3             32      16-16-16
IO... yuv444p16le            3             48      16-16-16
IO... yuv444p16be            3             48      16-16-16
..H.. dxva2_vld              0              0      0
IO... rgb444le               3             12      4-4-4
IO... rgb444be               3             12      4-4-4
IO... bgr444le               3             12      4-4-4
IO... bgr444be               3             12      4-4-4
IO... ya8                    2             16      8-8
IO... bgr48be                3             48      16-16-16
IO... bgr48le                3             48      16-16-16
IO... yuv420p9be             3             13      9-9-9
IO... yuv420p9le             3             13      9-9-9
IO... yuv420p10be            3             15      10-10-10
IO... yuv420p10le            3             15      10-10-10
IO... yuv422p10be            3             20      10-10-10
IO... yuv422p10le            3             20      10-10-10
IO... yuv444p9be             3             27      9-9-9
IO... yuv444p9le             3             27      9-9-9
IO... yuv444p10be            3             30      10-10-10
IO... yuv444p10le            3             30      10-10-10
IO... yuv422p9be             3             18      9-9-9
IO... yuv422p9le             3             18      9-9-9
IO... gbrp                   3             24      8-8-8
IO... gbrp9be                3             27      9-9-9
IO... gbrp9le                3             27      9-9-9
IO... gbrp10be               3             30      10-10-10
IO... gbrp10le               3             30      10-10-10
IO... gbrp16be               3             48      16-16-16
IO... gbrp16le               3             48      16-16-16
IO... yuva422p               4             24      8-8-8-8
IO... yuva444p               4             32      8-8-8-8
IO... yuva420p9be            4             22      9-9-9-9
IO... yuva420p9le            4             22      9-9-9-9
IO... yuva422p9be            4             27      9-9-9-9
IO... yuva422p9le            4             27      9-9-9-9
IO... yuva444p9be            4             36      9-9-9-9
IO... yuva444p9le            4             36      9-9-9-9
IO... yuva420p10be           4             25      10-10-10-10
IO... yuva420p10le           4             25      10-10-10-10
IO... yuva422p10be           4             30      10-10-10-10
IO... yuva422p10le           4             30      10-10-10-10
IO... yuva444p10be           4             40      10-10-10-10
IO... yuva444p10le           4             40      10-10-10-10
IO... yuva420p16be           4             40      16-16-16-16
IO... yuva420p16le           4             40      16-16-16-16
IO... yuva422p16be           4             48      16-16-16-16
IO... yuva422p16le           4             48      16-16-16-16
IO... yuva444p16be           4             64      16-16-16-16
IO... yuva444p16le           4             64      16-16-16-16
..H.. vdpau                  0              0      0
IO... xyz12le                3             36      12-12-12
IO... xyz12be                3             36      12-12-12
..... nv16                   3             16      8-8-8
..... nv20le                 3             20      10-10-10
..... nv20be                 3             20      10-10-10
IO... rgba64be               4             64      16-16-16-16
IO... rgba64le               4             64      16-16-16-16
IO... bgra64be               4             64      16-16-16-16
IO... bgra64le               4             64      16-16-16-16
IO... yvyu422                3             16      8-8-8
IO... ya16be                 2             32      16-16
IO... ya16le                 2             32      16-16
IO... gbrap                  4             32      8-8-8-8
IO... gbrap16be              4             64      16-16-16-16
IO... gbrap16le              4             64      16-16-16-16
..H.. qsv                    0              0      0
..H.. mmal                   0              0      0
..H.. d3d11va_vld            0              0      0
..H.. cuda                   0              0      0
IO... 0rgb                   3             24      8-8-8
IO... rgb0                   3             24      8-8-8
IO... 0bgr                   3             24      8-8-8
IO... bgr0                   3             24      8-8-8
IO... yuv420p12be            3             18      12-12-12
IO... yuv420p12le            3             18      12-12-12
IO... yuv420p14be            3             21      14-14-14
IO... yuv420p14le            3             21      14-14-14
IO... yuv422p12be            3             24      12-12-12
IO... yuv422p12le            3             24      12-12-12
IO... yuv422p14be            3             28      14-14-14
IO... yuv422p14le            3             28      14-14-14
IO... yuv444p12be            3             36      12-12-12
IO... yuv444p12le            3             36      12-12-12
IO... yuv444p14be            3             42      14-14-14
IO... yuv444p14le            3             42      14-14-14
IO... gbrp12be               3             36      12-12-12
IO... gbrp12le               3             36      12-12-12
IO... gbrp14be               3             42      14-14-14
IO... gbrp14le               3             42      14-14-14
IO... yuvj411p               3             12      8-8-8
I.... bayer_bggr8            3              8      2-4-2
I.... bayer_rggb8            3              8      2-4-2
I.... bayer_gbrg8            3              8      2-4-2
I.... bayer_grbg8            3              8      2-4-2
I.... bayer_bggr16le         3             16      4-8-4
I.... bayer_bggr16be         3             16      4-8-4
I.... bayer_rggb16le         3             16      4-8-4
I.... bayer_rggb16be         3             16      4-8-4
I.... bayer_gbrg16le         3             16      4-8-4
I.... bayer_gbrg16be         3             16      4-8-4
I.... bayer_grbg16le         3             16      4-8-4
I.... bayer_grbg16be         3             16      4-8-4
..H.. xvmc                   0              0      0
IO... yuv440p10le            3             20      10-10-10
IO... yuv440p10be            3             20      10-10-10
IO... yuv440p12le            3             24      12-12-12
IO... yuv440p12be            3             24      12-12-12
IO... ayuv64le               4             64      16-16-16-16
..... ayuv64be               4             64      16-16-16-16
..H.. videotoolbox_vld       0              0      0
IO... p010le                 3             15      10-10-10
IO... p010be                 3             15      10-10-10
IO... gbrap12be              4             48      12-12-12-12
IO... gbrap12le              4             48      12-12-12-12
IO... gbrap10be              4             40      10-10-10-10
IO... gbrap10le              4             40      10-10-10-10
..H.. mediacodec             0              0      0
IO... gray12be               1             12      12
IO... gray12le               1             12      12
IO... gray10be               1             10      10
IO... gray10le               1             10      10
IO... p016le                 3             24      16-16-16
IO... p016be                 3             24      16-16-16
..H.. d3d11                  0              0      0
IO... gray9be                1              9      9
IO... gray9le                1              9      9
IO... gbrpf32be              3             96      32-32-32
IO... gbrpf32le              3             96      32-32-32
IO... gbrapf32be             4            128      32-32-32-32
IO... gbrapf32le             4            128      32-32-32-32
..H.. drm_prime              0              0      0
..H.. opencl                 0              0      0
IO... gray14be               1             14      14
IO... gray14le               1             14      14
IO... grayf32be              1             32      32
IO... grayf32le              1             32      32
IO... yuva422p12be           4             36      12-12-12-12
IO... yuva422p12le           4             36      12-12-12-12
IO... yuva444p12be           4             48      12-12-12-12
IO... yuva444p12le           4             48      12-12-12-12
IO... nv24                   3             24      8-8-8
IO... nv42                   3             24      8-8-8
..H.. vulkan                 0              0      0
..... y210be                 3             20      10-10-10
I.... y210le                 3             20      10-10-10
IO... x2rgb10le              3             30      10-10-10
..... x2rgb10be              3             30      10-10-10
IO... x2bgr10le              3             30      10-10-10
..... x2bgr10be              3             30      10-10-10
IO... p210be                 3             20      10-10-10
IO... p210le                 3             20      10-10-10
IO... p410be                 3             30      10-10-10
IO... p410le                 3             30      10-10-10
IO... p216be                 3             32      16-16-16
IO... p216le                 3             32      16-16-16
IO... p416be                 3             48      16-16-16
IO... p416le                 3             48      16-16-16

可以看到ffmpeg是支持rgb24的像素格式转换的。

我们用下面的这个“视频素材_天空中的云.mp4”视频作为演示:

该视频的大小为4.57 MB (4,794,032 字节)

分辨率为:1280 * 720

通过命令:

ffprobe -v error -count_frames -select_streams v:0 -show_entries stream=nb_read_frames -of default=nokey=1:noprint_wrappers=1 视频素材_天空中的云.mp4

可以得到该视频总共有387帧

将“视频素材_天空中的云.mp4”转换为像素格式为rgb24的文件:output.rgb

ffmpeg -i 视频素材_天空中的云.mp4 -pix_fmt rgb24 output.rgb

该文件即包含原视频“视频素材_天空中的云.mp4” 里面解压并像素格式转换为rgb24后的所有数据

可以看到它的大小为0.99 GB  = 1,069,977,600 byte = 1280 * 720 * 3 * 387 byte。所以可以证明“RGB24格式每像素占3个字节” 以及相关公式是正确的。

五、播放RGB24格式视频

常用的播放器无法播放裸rgb24格式的视频,但可以通过YUView 来播放,该播放器支持播放裸RGB 文件。

打开YUView,"File" -> "Open File"

设置视频宽度和高度,选择RGB Format为RGB 8bit(因为rgb24每个像素占8位),点击播放按钮就能播放了

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/6176.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【海博】雅思该怎么练?

文章目录 前言 备考计划 模拟考试 参考资料 前言 见《【海博】浅析海博深造》 见《【海博】雅思和托福该考哪个?》 见《【海博】雅思该怎么考?》 见《【海博】雅思考什么?》 备考计划 第一周确定你的目标考试分数。 做一套雅思模拟试题&…

npm install报错

总结:没有安装visual studio 2017以上带有C桌面开发的版本 #开始试错 #报错总信息mingw_x64_win版本 百度网盘链接: link 提取码:3uou #尝试用mingw配置个C编译器,并配置环境变量,失败 #只认可使用VS!GIthub原址: 链接: link 上…

python公务用车医院校园企业车辆管理系统

本 Python版本:python3.7 前端:vue.jselementui 框架:django/flask都有,都支持 后端:python 数据库:mysql 数据库工具:Navicat 开发软件:PyCharm 公务用车管理智慧云服务监管平台有管理员和用户…

java中的字节流和File类

目录 正文: 1.File类 1.1概述 1.2常用方法 2.FileInputStream 2.1概述 2.2常用方法 3.FileOutputStream 3.1概述 3.2常用方法 总结: 正文: 1.File类 1.1概述 File类是Java中用来表示文件或目录的类,它提供了一系列方…

【项目学习01_2024.05.02_Day04】

学习笔记 4 课程分类查询4.1需求分析4.2 接口定义4.3 接口开发4.3.1 树型表查询4.3.2 开发Mapper 4 课程分类查询 4.1需求分析 有课程分类的需求 course_category课程分类表的结构 这张表是一个树型结构,通过父结点id将各元素组成一个树。 利用mybatis-plus-gen…

Sass语法---sass的安装和引用

什么是Sass Sass(英文全称:Syntactically Awesome Stylesheets) Sass 是一个 CSS 预处理器。 Sass 是 CSS 扩展语言,可以帮助我们减少 CSS 重复的代码,节省开发时间。 Sass 完全兼容所有版本的 CSS。 Sass 扩展了…

centos7安装真的Redmine-5.1.2+ruby-3.0.0

下载redmine-5.1.2.tar.gz,上传到/usr/local/目录下 cd /usr/local/ tar -zxf redmine-5.1.2.tar.gz cd redmine-5.1.2 cp config/database.yml.example config/database.yml 配置数据连接 #编辑配置文件 vi config/database.yml #修改后的内容如下 product…

【介绍下Apache的安装与目录结构】

🎥博主:程序员不想YY啊 💫CSDN优质创作者,CSDN实力新星,CSDN博客专家 🤗点赞🎈收藏⭐再看💫养成习惯 ✨希望本文对您有所裨益,如有不足之处,欢迎在评论区提出…

Vitis HLS 学习笔记--MAXI手动控制突发传输

目录 1. 简介 2. MAXI 突发传输详解 2.1 突发传输的前置条件 2.2 hls::burst_maxi 详解 2.2.1 基本知识 2.2.2 hls::burst_maxi 构造函数 2.2.3 hls::burst_maxi 读取方法 2.2.4 hls::burst_maxi 写入方法 2.3 示例一 2.4 示例二 3. 总结 1. 简介 这篇文章探讨了在…

Python版本管理工具-pyenv

Pyenv是一个Python版本管理工具。 Pyenv允许用户在同一台机器上安装多个版本的Python,并能够轻松切换使用这些版本。 一、安装 Mac下直接使用Homebrew安装 # 更新 Homebrew 的软件列表 brew update # 安装pyenv brew install pyenv# 验证是否安装成功 pyenv -v# …

解锁工业场景下的时序因果发现,清华阿里巴巴伯克利联合提出RealTCD框架:通过大语言模型提升发现质量!

DeepVisionary 每日深度学习前沿科技推送&顶会论文分享,与你一起了解前沿深度学习信息! LLM-Enhanced Causal Discovery in Temporal Domain from Interventional Data 引言:AI在信息技术运营中的革命性应用 在现代信息技术运营&#…

远程链接linux

远程连接 ssh 远程登录操作,ssh会对用用户进行身份信息的验证,会对两台主机之间发通信数据进行加密 安装 ssh 远程登录的服务端 yum install -y openssh-server启动 ssh 服务 systemctl start ssh.service 关闭 ssh 服务 systemctl stop ssh.service …

java发送请求2次开发-get请求json

因为你请求参数不为空,接口都会把这个参数带上 所以借鉴HttpPost类 继承这个类, 这个类是可以带消息的 httpgetwithentity,httpget请求带上消息 复写 构造方法复制过来进行使用 二次开发类让其get请求时可以发送json

基于大爆炸优化算法的PID控制器参数寻优matlab仿真

目录 1.课题概述 2.系统仿真结果 3.核心程序与模型 4.系统原理简介 5.完整工程文件 1.课题概述 基于大爆炸优化算法的PID控制器参数寻优matlab仿真。对比优化前后的PID控制输出。 2.系统仿真结果 3.核心程序与模型 版本:MATLAB2022a .....................…

测试腾讯云的高防CC抵御了攻击

网站需要安装防止CC攻击,因为CC攻击是一种常见的网络攻击,它会对网站造成严重的影响。 CC攻击(Cybercrime Control)是指向网站发起大量虚假请求的攻击,目的是使网站的资源耗尽,无法正常运行。CC攻击与DDoS…

python-pytorch官方示例Generating Names with a Character-Level RNN的部分理解0.5.03

pytorch官方示例Generating Names with a Character-Level RNN的部分理解 模型结构功能关键技术模型输入模型输出预测实现 模型结构 功能 输入一个类别名和一个英文字符,就可以自动生成这个类别,且以英文字符开始的姓名 关键技术 将字符进行one-hot编…

通过符号程序搜索提升prompt工程

原文地址:supercharging-prompt-engineering-via-symbolic-program-search 通过自动探索​​大量提示变体来找到更好的提示 2024 年 4 月 22 日 众所周知,LLMs的成功在很大程度上仍然取决于我们用正确的指导和例子来提示他们的能力。随着新一代LLMs变得越…

JAVA面试题---WEB部分

网络通讯 TCP与UDP TCP(Transmission Control Protocol 传输控制协议)是一种面向连接(连接导向)的、 可靠的、 基于 IP 的传输层协议。 UDP 是 User Datagram Protocol 的简称,中文名是用户数据报协议,是 OSI 参考模 型中的传输层协议,它是…

【杂谈】记录代码中遇到的问题(持续更新中)

写代码时经常遇到各种各样的bug,有时候很难发现,下面是我自己的一些见解 1.数组开在全局区和栈区所能开到的最大范围是不一样的 main函数里的数组,范围最大可以开到1e5 全局区的函数最大可以开到1e8的范围 2.#define int long long 写#dein…

【Linux】常用命令大揭秘,轻松驾驭终端世界

常见命令大全 概念1.1:开源、闭源的区别1.2:应用场景 发行版XShell3.1:使用XShell登入主机3.2:普通用户的增加、删除3.3:查看账户的信息whoami指令who指令 文件和目录基本命令4.1:指令的周边知识文件路径Li…