* 音视频入门文章目录 * 预热 上一篇 [PNG文件格式详解]详细介绍了 PNG 文件的格式. PNG 图像格式文件由一个 8 字节的 PNG 文件署名域和 3 个以上的后续数据块(IHDR.IDAT.IEND)组成. PNG 文件包括 8 字节文件署名(89 50 4E 47 0D 0A 1A 0A,十六进制),用来识别 PNG 格式. 数据块中有 4 个关键数据块: 文件头数据块 IHDR(header chunk):包含有图像基本信息,作为第一个数据块出现并只出现一次. 调色板数据块 P…
* 音视频入门文章目录 * libyuv libyuv 是 Google 开源的实现各种 YUV 与 RGB 之间相互转换.旋转.缩放等的库.它是跨平台的,可在 Windows.Linux.Mac.Android 等操作系统,x86.x64.arm 架构上进行编译运行,支持 SSE.AVX.NEON 等 SIMD 指令加速. 准备工作 一张图片 下载 rainbow-700x700.bmp BMP 图片 或者 自己准备一张图片(知道分辨率,如:700x700) FFmpeg 工具包 FFmpeg…
* 音视频入门文章目录 * 介绍开源库 使用第三方开源库来简化开发,屏蔽一些底层的复杂度,节省大量编写代码的时间. libyuv: Google 开源的实现各种 YUV 与 RGB 之间相互转换.旋转.缩放的库. yuv2rgb:C library for fast image conversion between yuv420p and rgb24. 使用开源库 libyuv FFmpeg 生成代码所需文件: ffmpeg -i rainbow.bmp -video_size 700x700…
* 音视频入门文章目录 * YUV & RGB 相互转换公式 YCbCr 的 Y 与 YUV 中的 Y 含义一致,Cb 和 Cr 与 UV 同样都指色彩,Cb 指蓝色色度,Cr 指红色色度,在应用上很广泛,JPEG.MPEG.DVD.摄影机.数字电视等皆采此一格式. 因此一般俗称的 YUV 大多是指 YCbCr . RGB to YUV(YCbCr) RGB 范围 [0,255],Y 范围 [16,235] ,UV 范围 [16,239].如果计算结果超过了取值范围要进行截取. Y = 0.25…
* 音视频入门文章目录 * 图片 & 像素点 & RGB 平时浏览的图片看不出像素点: 图片放大时,可以看出图片是一个个像素点组成的: 每个像素点的颜色可以用 RGB 表示: RGB 拼图 既然图片是像素点组成的,而像素点的颜色可以用 RGB 来表示,那我们可以用 RGB 来拼出自己的图片! 1. 设定目标 这是我们想要使用 RGB 像素点拼出来的图片: 彩虹的颜色: 颜色名 RGB 十六进制 RGB24 二进制 红 255, 0, 0 0XFF0000 11111111 00000000…
概述 随着整个互联网的崛起,数据传递的形式也在不断升级变化,总的流行趋势如下: 纯文本的短信,QQ -> 空间,微博,朋友圈的图片文字结合 -> 微信语音 -> 各大直播软件 -> 抖音快手短视频 音视频的发展正在向各个行业不断扩展,从教育的远程授课,交通的人脸识别,医疗的远程就医等等,音视频方向已经占据一个相当重要的位置. 大家从现在招聘网站上的岗位任职要求应该也能感受到这一点,一名合格的音视频开发人员,少则年薪 30 万起,多则可以达 100万以上. 但是成体系的音视频入门进阶…
* 音视频入门文章目录 * PNG 文件格式解析 PNG 图像格式文件由一个 8 字节的 PNG 文件署名域和 3 个以上的后续数据块(IHDR.IDAT.IEND)组成. PNG 文件包括 8 字节文件署名(89 50 4E 47 0D 0A 1A 0A,十六进制),用来识别 PNG 格式. 用十六进制查看器打开任意一个 PNG 文件,都是可以看到这样的头部: PNG 定义了两种类型的数据块:一种是 PNG 文件必须包含.读写软件也都必须要支持的关键块(critical chunk):另一种叫…
* 音视频入门文章目录 * JPEG 文件格式解析 JPEG 文件使用的数据存储方式有多种.最常用的格式称为 JPEG 文件交换格式(JPEG File Interchange Format,JFIF).而 JPEG 文件大体上可以分成两个部分:标记码(Tag)和压缩数据. 标记码由两个字节构成,其前一个字节是固定值 0xFF,后一个字节则根据不同意义有不同数值.在每个标记码之前还可以添加数目不限的无意义的 0xFF 填充,也就说连续的多个 0xFF可以被理解为一个 0xFF,并表示一个标记码的…
* 音视频入门文章目录 * RGB-to-PNG 回顾 上一篇 [手动生成一张PNG图片] 根据 [PNG文件格式详解] 一步一步地手动实现了将 RGB 数据生成了一张 PNG 图片. 有许多开源的 PNG 相关的库可以简化开发: svpng libattopng lodepng libpng 使用开源库的方式 svpng Demo 例子: void test_rgb(void) { unsigned char rgb[256 * 256 * 3], *p = rgb; unsigned x,…
* 音视频入门文章目录 * YUV & YCbCr 简介 YUV,是一种颜色编码方法.常使用在各个视频处理组件中. YUV 在对照片或视频编码时,考虑到人类的感知能力,允许降低色度的带宽. Y 表示明亮度(Luminance或Luma),也就是灰阶值,U 和 V 表示的则是色度(Chrominance或Chroma),作用是描述影像色彩及饱和度,用于指定像素的颜色. Y'CbCr 不是一种绝对的色彩空间,是一种针对 RGB 资讯所做的编码.真正的颜色显示是根据实际 RGB 色盘(colorant…