音视频
文章平均质量分 83
Spark!
路人
展开
-
PS流详解(载荷H264)
目录PS简介标准结构标准H264流结构定长音频帧和其他流式私有数据的结构PS流封装标准PSH结构PES包结构PSM包结构体元素流 PS 封装规则H264元素流封装规则音频元素流封装规则私有信息封装规则PS简介PS 封装方式需要支持 MPEG2/MPEG4/H.264 等视频和 MPEG 系列音频,可以被大部分支持 PS 和相应元素流解码的播放器正常播放,支持在多个层次加入私有数据,方便解码、拖动和减小延时,同时考虑到标准的 PS、TS 和 RTP 封装方式间的相互转换,提高处理效率标准结构标准H26原创 2021-10-07 14:10:18 · 8350 阅读 · 0 评论 -
优化RGB转YUV计算效率
目录预备知识计算效率优化优化方法一优化方法二注意点代码.c.h效果预备知识详解YUV数据格式图像中,不管如何变换,我们最直观的值域是[0,255],所以我们也希望能有一个转换公式将值域统一在[0,255],这样就避免了后期处理和不必要的错误。值域为[0,255]常用的转换公式如下。1、YUV2RGB:2、RGB2YUV:这个公式转换后,不必在关心值域问题,很方便。计算效率优化整形计算比浮点数计算高效移位计算比乘除计算高效不了解的建议补充基础知识优化方法一浮点型运算比较耗时,原创 2021-08-30 17:34:27 · 1235 阅读 · 2 评论 -
制作一张YUV格式的图片
目录预备知识代码解释为什么使用移位不用数学运算?代码预备知识详解YUV数据格式代码解释可以通过修改宏定义来修改图像的尺寸可以通过修改YUV分量来对图像的颜色进行编辑为什么使用移位不用数学运算?答:良好的代码风格计算机中移位的效率比数学运算高得多(不了解的建议补充一下基础)代码#include <stdio.h>#include <errno.h>#include <stdlib.h>#include <string.h>#def原创 2021-08-30 13:02:38 · 1370 阅读 · 3 评论 -
RTP中timestamp与帧率及时钟频率的关系
RTP timestamp是用时钟频率(clock rate)计算而来表示时间的。RTP timestamp表示每帧的时间,由于一个帧(如I帧)可能被分成多个RTP包,所以多个相同帧的RTP timestamp相等。(可以通过每帧最后一个RTP的marker标志区别帧,但最可靠的方法是查看相同RTP timestamp包为同一帧。)两帧之间RTP timestamp的增量 = 时钟频率 / 帧率前一帧的timestamp加上固定的timestamp_increase就是下一帧举例其中时钟频率可原创 2021-08-13 15:02:32 · 1791 阅读 · 0 评论 -
RTSP协议详解
目录RTSP协议概述RTSP和HTTP的区别RTSP重要术语RTSP特性RTSP传输流程简介RTSP信息请求信息回应消息RTSP传输流程详解标准流程methods功能请求methods重要头字段参数RTSP传输流程实例RTSP传输流程总结SDP协议RTSP协议概述RTSP(Real-TimeStream Protocol )是一种基于文本的应用层协议,RTSP 在体系结构上位于 RTP 和 RTCP 之上, 其使用 TCP 或 UDP 完成数据的传输。在语法及一些消息参数等方面,RTSP协议与HTTP协原创 2021-08-11 20:08:41 · 1871 阅读 · 1 评论 -
H264——H264中的宏块(macroblock)、片(slice)、帧(frame)
这里写自定义目录标题前言宏块(macroblock)宏块种类片(slice)slice组帧(frame)序列前言若干个块组成宏块若干个宏块组成条带若干个条带组成一帧若干帧组成一段视频宏块(macroblock)H264中,以16x16的宏块为编码最小单元,一个宏块可以被分成多个4x4或8x8的块当然,像素块越小,编码的复杂度也会随之增加,编码效率自然就会降低。但是这样是值得的,因为图像的压缩效率有了显著提高,也就是编码后得到的相同质量的图像,H.264的压缩比更大,占用的空间及带宽原创 2021-08-05 15:57:48 · 5439 阅读 · 0 评论 -
海思中的应用层驱动
目录为什么有应用层驱动应用层驱动介绍应用层驱动和内核驱动比较为什么有应用层驱动在音视频领域中,制作sensor的厂家有很多,sensor的型号也有很多。如果要进行替换的话,每次都需要将驱动重新编译再insmod,这样的话替换sensor就会非常麻烦。于是海思定了一套体系,可以快速替换不同的sensor应用层驱动介绍其实这个应用层驱动并不是我们常说的内核驱动,只是一个模块实现功能的一个集合,被makefile按照规则生成了一个文件叫.SO动态链接库,他本身没有驱动操作硬件的功能,而是调用内核驱动去运作原创 2021-08-01 20:38:16 · 802 阅读 · 0 评论 -
详解MIPI协议
目录前言MIPI简介MIPI联盟的MIPI DSI规范MIPI名词解释MIPI DSI分层结构command和video模式D-PHYLane模组Lane 全局架构Lane电压和状态DATA LANE操作模式时钟LANE低功耗状态高速数据传输高速CLK传输D-PHY总结DSICSI前言MIPI接口的内部非常复杂,如果不是专门去做MIPI接口,没有必要像研究H264一样往深入的去研究。我们知道MIPI协议连接了camera与soc、LCD和soc,作为此间的开发者,我们只需要关注他怎么使用就可以了知识原创 2021-07-30 13:55:57 · 61103 阅读 · 10 评论 -
详解LVDS通信协议
目录LVDS概述LVDS接口电路的组成LVDS输出接口电路类型单路6位LVDS输出接口双路6位LVDS输出接口单路8位1TL输出接口双路8位1TL输出位接口典型LVDS发送芯片介绍四通道LVDS发送芯片五通道LVDS发送芯片十通道LVDS发送芯片LVDS发送芯片的输入信号①数据信号②输入时钟信号③待机控制信号(POWER DOWN)④数据取样点选择信号LVDS发送芯片的输出信号①时钟信号输出②LVDS串行数据信号输出LVDS发送芯片输出信号的格式单路6bit双路6bit单路8bit双路8bitLVDS概述原创 2021-07-29 18:29:43 · 27853 阅读 · 7 评论 -
RTP协议详解(荷载H264)
目录RTP的会话过程RTP实际应用中的细节用户网络带宽不同用户是否被防火墙隔离RTP结构解析解析举例RTP荷载H264码流单个NAL单元包分片单元(FU-A)解析举例RTP的会话过程数据传输协议RTP,用于实时传输数据。当应用程序建立一个RTP会话时,应用程序将确定一对目的传输地址。目的传输地址由一个网络地址和一对端口组成,有两个端口:一个给RTP包,一个给RTCP包,使得RTP/RTCP数据能够正确发送。RTP数据发向偶数的UDP端口,而对应的控制信号RTCP数据发向相邻的奇数UDP端口(偶数的U原创 2021-07-27 18:06:44 · 1793 阅读 · 0 评论 -
音视频中的码率控制(CBR、VBR、CVBR、FIXQP)
什么是码率?码率就是数据传输时单位时间传送的数据位数。一般我们用的单位是kbps即千位每秒。通俗一点理解就是取样率,单位时间内取样率越大,精度就越高,处理出来的文件就越接近原始文件。但是文件体积与取样率是成正比的,所以几乎所有的编码格式重视的都是如何用最低的码率达到最少的失真。码率控制器实现对编码码率进行控制。为什么要控制码率?从信息学的角度分析,图像的压缩比越低,压缩图像的质量越高;图像压缩比例越高,压缩图像的质量越低。对于场景变化的真实场景,图像质量稳定,编码码率会波动;编码码率稳定,图原创 2021-07-19 11:29:41 · 10393 阅读 · 2 评论 -
H.264——H.264的profile 和 level
目录简介AVC的三种规格从低到高分别为:Baseline、Main、High。BP、EP、MP、HPCAVLC和CABAC简介H.264 Profile、Level、Encoder关系图简介首先要阐明所谓的AVC其实就是H.264标准,是由ITU-T和ISO/IEC组成的联合视频组(JVT,Joint Video Team)一起开发的,ITU-T给这个标准命名为H.264(以前叫做H.26L),而ISO/IEC称它为MPEG-4 高级视频编码(Advanced Video Coding,AVC)它定位于原创 2021-07-19 10:43:36 · 3619 阅读 · 0 评论 -
图像压缩原理
目录前言为什么要压缩压缩方法空间冗余时间冗余视觉冗余压缩方法无失真压缩有失真压缩预测编码变换编码统计编码图像压缩的要素前言之前整理过的视频编解码器工作原理消除视频冗余的方法及原理视频的压缩是基于图像压缩,本文介绍图像压缩原理为什么要压缩一张原始图像(1920x1080),如果每个像素32bit表示(RGBA),那么,图像需要的内存大小1920x1080x4 = 8294400 Byte如果考虑视频,那么带宽和存储都不够。压缩方法空间冗余一幅图像表面上各采样点的颜色之间往往存在着空间原创 2021-07-19 09:59:10 · 2007 阅读 · 0 评论 -
音视频项目架构中的通道和组(以海思为例)
目录定义GROUPCHANNEL我的理解以海思为例定义GROUPVPSS 对用户提供组( GROUP)的概念。最大可用数为 VPSS_MAX_GRP_NUM个,各芯片的最大组数目有所不同,各 GROUP 分时复用 VPSS 硬件。每个 VPSSGROUP 包含多个通道,通道数目视方案实现有所不同,具体描述请参见CHANNEL。group实际上是对VPSS硬件功能的虚拟化,即若系统里只有一个group,那么这个group实际就是VPSS;若有多个group,那么就是一会给group0用一会给group原创 2021-07-16 15:18:48 · 1518 阅读 · 0 评论 -
安防相机的宽动态(WDR—WideDynamicRange)
目录为什么需要宽动态宽动态能力表示宽动态介绍 (WDR)WDR对比DWDRWDR对比HDR安防相机中WDR的应用场景太阳光线反射光源玻璃窗户和门室内灯光车头灯宽动态技术背光/逆光补偿二次/多次曝光技术为什么需要宽动态对于标准的CCD和CMOS图像传感器来说,所有感光单元的曝光(收集光子)时间都是相同的;在相同的时间内,感光单元对画面明亮部分收集的光子较多,对阴暗部分收集的光子则较少。但是,感光单元能够收集的光子数量还受到阱容量(wellcapacity)的限制,所以捕捉物体较亮色调的感光单元有可能会溢原创 2021-07-14 15:43:21 · 3272 阅读 · 0 评论 -
音视频中的视频缓存池
视频缓存池视频缓存池主要向媒体业务提供大块物理内存管理功能,负责内存的分配和回收,充分发挥内存缓存池的作用,让物理内存资源在各个媒体处理模块中合理使用。一组大小相同、物理地址连续的缓存块组成一个视频缓存池。视频输入通道需要使用公共视频缓存池。所有的视频输入通道都可以从公共视频缓存池中获取视频缓存块用于保存采集的图像(如图 2-1 中所示从公共视频缓存池 A 中获取视频缓存块 Bm)。由于视频输入通道不提供创建和销毁公共视频缓存池功能,因此,在系统初始化之前,必须为视频输入通道配置公共视频缓存池。根据业原创 2021-07-13 14:23:14 · 522 阅读 · 1 评论 -
详解RGB数据格式
目录起源概述RGB的颜色范围常见RGB文件存储类型RGB555RGB1555RGB565RGB24格式RGB32格式其他常用单通道与多通道单通道多通道图像处理优势对比:起源RGB三原色起源于上世纪初1809年Thomas Young提出视觉的三原色学说,随后Helmholtz在1824年也提出了三原色学说:即:视网膜存在三种视锥细胞,分别含有对红、绿、蓝三种光线敏感的视色素,当一定波长的光线作用于视网膜时,以一定的比例使三种视锥细胞分别产生不同程度的兴奋,这样的信息传至大脑中枢,就产生某一种颜色的感觉。原创 2021-07-08 16:29:12 · 13688 阅读 · 1 评论 -
详解相机的sensor工作原理
目录sensor成像原理拜尔马赛克变换(BAYER DEMOSAICING)维伦阵列摩尔纹sensor成像原理相机或摄像头使用数百万个微小的光腔(感光元件)来记录图像。成像时,sensor将镜头投射来的光子储存为模拟电信号。曝光完成后,相机关闭这些光腔(感光元件),然后通过测量模拟电信号的强度来评估每个腔中有多少光子掉入来计算数字电信号的数值。然后模拟电信号转换为数字电信号,数字电信号的数值由位深度决定(RGB的位深度)。最后,根据正在记录的文件格式(8位JPEG位0-255),可能会再次降低原创 2021-07-08 09:56:04 · 16463 阅读 · 2 评论 -
音视频中环形缓冲区(ring buffer)的应用
目录环形缓冲区的概念代码实例代码解释相关变量描述折返判断环形缓冲区的概念了解完环形缓冲区的概念后,本文介绍其在音视频项目中的应用。代码实例相关函数如下static int LUX_VENC_SaveStream(int chnId, IMPEncoderStream *stream){ int ret = 0; int i = 0; int nr_pack = stream->packCount; IMPEncoderPack *pack = NULL;原创 2021-06-23 09:02:59 · 1847 阅读 · 0 评论 -
海思3518E开发笔记1.1——HI3518E方案整体架构介绍
目录前言硬件软件前言在做一个项目之前,需要对这个项目在一个比较高的高度进行了解。如,硬件构成、软件是裸机的还是带操作系统的,带操作系统的是怎么样一个开发流程。得对项目由打到校进行了解,知道了架构之后再进行细节性的学习。这样就不会去迷失。在进行一个大框架项目的学习时,需要对其整体进行了解再进行细节性的学习硬件1、 HI3518E单芯片提供:CPU + DSP + 内置64MB DDR和ETHERNET MAC内部的DSP是进行一些ISP、编解码运算的。DDR内置就可以实现一个低成本,将来在做板原创 2021-06-18 09:51:42 · 2131 阅读 · 0 评论 -
音视频基础认知——音视频开发常规流程
目录视频从产生到被消费的流程视频行业的商业角度分段几个疑问点总结视频从产生到被消费的流程视频和图像的区别:视频是由单帧图像以每秒x帧的速率连续组成的,单帧图像类似位图。原始视频的产生:镜头和sensor。镜头是光学透镜,将大范围内的光折射到很小的范围内。小范围的光通过sensor将光信号转为电信号(模拟信号),这个电信号(模拟信号)通过AD转换,转换为数字电信号(数字信号)。图像处理:ISP(image signal processing)。将原始视频进行调优,调整为适合人眼看的信原创 2021-06-17 19:21:01 · 1010 阅读 · 0 评论 -
视频编解码——C语言实现霍夫曼编码
#include <stdio.h>#include <stdlib.h>#include <string.h>//#include <iostream> #define MAXBIT 100#define MAXVALUE 10000#define MAXLEAF 30#define MAXNODE MAXLEAF*2 -1 typedef struct { int bit[MAXBIT]; i原创 2021-06-03 09:24:37 · 815 阅读 · 0 评论 -
视频编解码——实现指数哥伦布解码
// ExpColum.cpp#include <assert.h>#include <stdio.h>typedef unsigned char UINT8;static int get_bit_at_position(UINT8 *buf, UINT8 &bytePotion, UINT8 &bitPosition){ UINT8 mask = 0, val = 0; mask = 1 << (7 - bitPosition);原创 2021-06-02 14:55:40 · 171 阅读 · 0 评论 -
视频编解码——指数哥伦布编码的原理与分类
目录指数哥伦布编码与霍夫曼编码对比指数哥伦布编码的分类ue(v)—0阶无符号指数哥伦布编码指数哥伦布编码与霍夫曼编码对比相同点:指数哥伦布编码同哈夫曼编码一样,都属于变长编码的一种即,针对不同的码原,每个码字的长度也是不一样的(唯一共同点)不同点:信源相关性:哈夫曼编码依赖于信源的概率分布,对于不同信源,构建出的霍夫曼码表是不同的;指数哥伦布编码与信源无关,所有信源的编码规则都是一致的额外信息:哈夫曼编码的数据必须额外携带与该信源匹配的码表;指数哥伦布编码无须携带任何额外信息(与上一条相原创 2021-05-28 15:34:44 · 1358 阅读 · 0 评论 -
视频编解码——霍夫曼编码的实现
目录原理分析代码实现输入文件.c原理视频编解码——熵编码—哈夫曼编码的原理及实现分析首先制作一个输入文件,文件中包含很多字符。程序以输入文件中字符出现的评论不同作为huffman树生成的依据统计字符出现的概率。此处有两个熟悉,字符名和出现次数,可以使用结构体进行设计构建huffuman树存储huffuman码表和编码后的文件难点主要是所有字符的排序生成huffuman树及码字的分配统计完字符的出现次数后,需要对其进行先后顺序的排列。如果使用的是c++,就可以用c++的stl提供的数据结原创 2021-05-27 14:16:53 · 587 阅读 · 1 评论 -
视频编解码——熵编码的概念
这里写自定义目录标题熵的概念熵与混乱程度熵编码的思想常用熵编码算法熵的概念熵:热力学与化学概念,用于度量能量退化的指标熵越高,物体/系统做功的能力越低后来信息论的奠基人香农讲化学与热力学 中熵的概念引入到了信息学信息学中的熵:用于度量消息的平均信息量,和信息的不确定性越是随机的、前后不相关的信息,其熵越高信息论中香农提出了信源编码定理:说明了香农熵与信源符号概率之间的关系信息的熵为信源无损编码后平均码长的下限(任何无损编码方式都不可能使编码过后每个码原的平均码长小于香农熵,原创 2021-05-19 08:53:54 · 486 阅读 · 0 评论 -
视频编解码——主流视频编码标准的发展(H.261/H.263/MPEG-1/MPEG-2/MPEG-4))
目录制定标准的组织两种编码方式基于波形的编码基于内容的编码H.261系统图信源编码器复合编码器H.263MPEG-1码流结构MPEG-2码流结构MPEG-4制定标准的组织这些标准主要由两个组织制定。国际电信联盟——ITU-T国际标准化组织——ISO目前世界上影响力最强的视频编码标准基本都出自于这两个组织。除了这两个组织,还有Google——VP8/VP9Microsoft——VC-1国产自主标准——AVS/AVS+/AVS2两种编码方式基于波形的编码特点编码的数据正对每原创 2021-04-28 09:50:41 · 3301 阅读 · 0 评论 -
视频编解码——视频编解码器工作原理
目录什么是视频编解码器为什么需要视屏编解码器视频编码器与数字视频容器时评编码器的历史什么是视频编解码器简单来说就是用于压缩或解压数字视频的软件或硬件编码是信息从一种形式或格式转换为另一种形式的过程,解码是编码的反向。适用于视频编码是将视频、音频的原始格式的文件通过压缩技术转换成另一种格式(视频如h.264,h.265,m-jpeg等)。解码是编码的反向过程。应用中,一般是将h.264,h.265格式数据解码成如YUV格式裸流交给显示器显示。为什么需要视屏编解码器需要在有限的带宽或存储空间原创 2021-04-27 14:48:05 · 9002 阅读 · 0 评论 -
视频编解码——消除视频冗余的方法及原理
目录为什么要消除冗余颜色、亮度和眼睛帧类型时间冗余(帧间预测)查看运动向量空间冗余(帧内预测)查看帧内预测编码冗余视觉冗余为什么要消除冗余首先来计算一下一个一小时的视频大小。假设分辨率为720p,帧率为30fps,则内存为1280x720x24x30x3600,共占用278GB。仅仅使用无损数据压缩算法——如 DEFLATE(被PKZIP, Gzip, 和 PNG 使用)——也无法充分减少视频所需的带宽,我们需要找到其它压缩视频的方法。为此,我们可以利用视觉特性:和区分颜色相比,我们区分亮度要原创 2021-04-26 19:04:12 · 4122 阅读 · 3 评论 -
视频编解码——帧类型
目录I 帧(帧内编码,关键帧)P 帧(预测)B 帧(双向预测)总结假设我们一段 30fps 的影片,这是最开始的 4 帧我们可以在帧内看到很多重复内容,如蓝色背景,从 0 帧到第 3 帧它都没有变化。为了解决这个问题,我们可以将它们抽象地分类为三种类型的帧。I 帧(帧内编码,关键帧)I 帧(可参考,关键帧,帧内编码)是一个自足的帧。它不依靠任何东西来渲染,I 帧与静态图片相似。第一帧通常是 I 帧,但我们将看到 I 帧被定期插入其它类型的帧之间。P 帧(预测)P 帧利用了一个事实:当前的画面原创 2021-04-26 15:04:55 · 1605 阅读 · 0 评论 -
视频编解码——基础知识(图像、分辨率、宽高比、帧率与码率)
目录图像编码彩色图像的其它方法其他的图像编码方式分辨率宽高比举例帧率码率/比特率图像视频的本质就是图像,一段视频是由大量图像按照一定速度播放产生的。一个图像可以视作一个二维矩阵。如果将色彩考虑进来,我们可以做出推广:将这个图像视作一个三维矩阵——多出来的维度用于储存色彩信息。如果我们选择三原色(红、绿、蓝)代表这些色彩,这就定义了三个平面:第一个是红色平面,第二个是绿色平面,最后一个是蓝色平面。我们把这个矩阵里的每一个点称为像素(图像元素)。像素的色彩由三原色的强度(通常用数值表示)表示。例原创 2021-04-26 14:12:37 · 3474 阅读 · 0 评论 -
音视频OSD——使用freetype将矢量字库的信息叠加至YUV
目录freetypes使用步骤1)包含头文件:2) 初始化库:3)加载face对象:4)设置字体大小5)设置字体位置,以及旋转度数:6)加载字形图像准备矢量字库代码.c.h效果叠加至YUVfreetypesFreeType是一个完全开源的、可扩展、可定制且可移植的字体引擎,它提供TrueType字体驱动的实现统一的接口来访问多种字体格式文件下载freetypestar -xjf freetype-2.4.10.tar.bz2cd freetype-2.4.10/./configure原创 2021-04-23 09:55:58 · 1938 阅读 · 1 评论 -
音视频OSD完全教程
目录前言OSD 介绍学习路线基础知识ASCII点阵字库叠加信息相关操作GB2312点阵字库UNICODE UTF-8矢量字库前言感谢海康高级工程师宇哥和安霸高级工程师杰哥对我的无私帮助现有的博客内容都是抄来抄去,不成体系希望我整理的内容能够对行业有所帮助OSD 介绍on screen display就是将信息叠加到视频中更通俗的讲,就是写字有人说这一块内容简单,确实不难。觉得简单的可以直接退出不必浪费时间学习路线OSD是音视频dsp绕不开的一部分内容,内容较少,说不上难但一定算不上原创 2021-04-21 20:21:57 · 2231 阅读 · 0 评论 -
音视频OSD——将64*64的UNICODE_UTF-8字库的信息叠加至YUV图像
目录分析UTF-8编码字库制作分析字符编码——详解常用字符集(ASCII,ISO8859-1,GB2312,GBK,Unicode)和字符编码(UTF-8,UTF-16)分析UTF-8编码UTF-8编码中,使用的是变成的字节序列表示字符,字符对应的代码点code point可能使用的是1-4个字节,这样一个字节就是一个代码单元。一个代码点code point可能由1-4个代码单元code unit组成十进制Unicode编码UTF-8字节流0-1270x000000-0x00原创 2021-04-21 19:00:12 · 642 阅读 · 0 评论 -
音视频OSD——Unicode编码与UTF-8编码转换
目录转换原理代码.c.h检验转换原理十进制Unicode编码0-1270x000000-0x00007F128-20470x000080-0x0007FF2048-655350x000800-0x00FFFF65535-1141110x010000-0x10FFFF一般汉字都是在第三栏,UTF-8编码形如:1110xxxx 10xxxxxx 10xxxxxxunicode汉字编码一般为16位形如:xxxx xxxx xxxx xxxx转换方式如原创 2021-04-21 16:47:11 · 376 阅读 · 2 评论 -
音视频OSD——将64*64的GB2312字库的信息叠加至YUV图像
目录前言制作字库编码方式分析拿出一个字模.h文件.c文件效果通过输入来自动获取区位码.c效果最终代码.c.h效果前言之前我们学习了Ascii字库的叠加操作音视频OSD——将816字库的时间信息叠加至YUV图像音视频OSD——将6464字库的时间信息叠加至YUV图像音视频OSD——修改叠加信息的位置音视频OSD——修改叠加在yuv420p图像上信息的颜色音视频OSD——修改叠加信息的尺寸接下来进行汉字的学习在学习之前,需要理解汉字相关编码的知识字符编码——一些基本概念字符编码——简体中文原创 2021-04-20 16:16:58 · 762 阅读 · 0 评论 -
音视频OSD——修改叠加信息的尺寸
目录分析原理代码分析在实际场景中,可能出现字模尺寸使用不合理的情况,此时就需要对OSD叠加的信息进行相应的缩放。思路如下:放大:位图中每个点,在YUV图像中画四个点,即放大两倍缩小:位图中取奇数行或偶数行叠加至YUV图像,即缩小两倍在实际应用场景中,缩放用的不是很多,一般都是换一个尺寸的字库。如果放大两倍以上,字的锯齿感就会非常明显,如下图放大后就会很难看,如下图放大两倍以上就要换字库。缩小只能通过抽点来实现,抽完之后字会歪歪扭扭很难看。所以一般实现缩小都是换字库。原创 2021-04-19 15:34:19 · 619 阅读 · 0 评论 -
音视频OSD——修改叠加在yuv420p图像上信息的颜色
目录预备知识准备图片分析映射关系代码效果代码优化.c.h效果预备知识字符编码——一些基本概念字符编码——详解常用字符集(ASCII,ISO8859-1,GB2312,GBK,Unicode)和字符编码(UTF-8,UTF-16)音视频OSD——制作ASCII点阵字模并叠加到YUV图像中音视频OSD——将816字库的时间信息叠加至YUV图像音视频OSD——将6464字库的时间信息叠加至YUV图像音视频OSD——修改叠加信息的位置以上内容的叠加都是叠加在yuv的y分量上,若要改变颜色,则需要对y原创 2021-04-15 20:17:28 · 781 阅读 · 0 评论 -
音视频OSD——修改叠加信息的位置
介绍了修改OSD叠加位置的方法,防止OSD跨行叠加以及叠加内存越界的保护原创 2021-04-15 13:48:18 · 674 阅读 · 0 评论 -
音视频OSD——将64*64字库的时间信息叠加至YUV图像
目录前言分析制作不同尺寸字库判断图像尺寸前言音视频OSD——制作ASCII点阵字模并叠加到YUV图像中音视频OSD——将时间信息叠加至YUV图像前面我们制作了字库并且将时间信息叠加到了一个640x360的图像上,但之前的代码非常的不严谨。如果输入的图像是一个1080p的,那么8x16的字库显然就不够了,需要使用48x48或64x64的字库。如果我们需要叠加汉字,那么Ascii的字库就不能用了,就需要使用GB2312、GBK或UNICODE。分析步骤如下1、制作不同尺寸的字库2、分析图像原创 2021-04-09 15:36:55 · 1085 阅读 · 0 评论