![](https://img-blog.csdnimg.cn/20201014180756922.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
音视频
文章平均质量分 77
迷茫的蜉蝣
音视频技术探索者,每周一篇音视频技术博客
展开
-
freetype位图制作的理论与用法详解,一篇文章学会freetype
该文档详细讲述了 各种格式的字符串(中文,英文)编码,怎么使用freetype制作成可以在lcd上显示的位图,并且如何将位图渲染到LCD上,每部分都有代码详细演示,不懂都难;可以使用freetype制作位图,用于视频字幕或logo,对从事音视频开发者很有参考价值。5.5 渲染GB2312,UTF8转化的Unicode。5.1 GB2312或UTF8生成位图。5.3 LCD坐标和笛卡尔坐标。3.1 基线,笔,布局。5.2 位图渲染到画布。5.4 两种渲染方式。4. freetype用法。原创 2023-12-19 11:21:32 · 505 阅读 · 0 评论 -
freetype将字符串制作成位图并显示过程详解
在流媒体项目中字幕显示是不可或缺的一环,一般会有字幕流在视频播放过程中进行显示;不过还有很多情况是从头到尾只在视频的某个区域显示某些文字,例如某个电视台的log;这种也称为字幕,如果想要将这些字符串显示到视频,需要将这些字符串做成位图进行显示,无法直接显示,freetype开源库就是将字符转化为位图的工具。画布和freetype是无法处理中文编码的,像GB2312或UTF8等中文编码需要转换成unicode编码才能够被处理,显示;原创 2023-11-18 20:30:26 · 430 阅读 · 0 评论 -
TS流中的PCR与timeus(微秒)的相互转化
由PCR的结构信息可知其中只有program_clock_reference_base(时钟基准)和program_clock_reference_extension(时钟参考扩展)两个字段表示PCR数据,reserved为保留位;原创 2023-08-27 16:08:52 · 189 阅读 · 0 评论 -
TS流中的PTS,DTS与timeus(微秒)的相互转化
在TS协议流中PTS和DTS都是由五个字节表示,想要将五字节的时间戳数据转化为微秒就需要了解这五个字节时间信息的构成:根据IOS13818-1协议可知:由此可见,在五字节中真正表示时间戳的也只有33字节。其中标记位为1bit,值为1.因此要想获得pts和dts的微妙值只需要将代表时间戳的33bit拼起来就可以啦!由于PTS和DTS真正的时间戳数据只占33bit(ts协议规定,具体看我博客);原创 2023-08-24 15:10:52 · 399 阅读 · 0 评论 -
TS协议概念及传输流程
PAT的PID字段固定为0x0,也是TS解析的起点,解析ts流需要先找到PID为0x0的PAT包,PAT包中又包含了很多PMT的PID,PMT中包含了该节目的视频流PID和音频流PID,通过节目编号获取PMT编号,再通过PMT获取节目对应的媒体流PID,从TS流中找到对应PID的媒体流即可。进入河南卫视就会获取河南卫视的媒体流数据,该媒体流数据包括音频,视频,字幕等,就是获取TS中的获取河南卫视媒体流的PES包,进而播放媒体流。PID:包含在TS头中,标识特定的媒体流或TS包(PMT)。原创 2023-08-08 16:15:44 · 597 阅读 · 0 评论 -
TS协议之PES(ES数据包)
TS=TS头+PES头+ES。TS,PES头是在音视频流传输过程中需要的数据信息,而ES其实就是我们所说的要打包的音视频原始流数据:视频流(H264/H265), 音频流:(AAC)。最后一个ts:TS头+填充字节+部分ES;第一个ts:TS头+PES头+部分ES;协议:ISO/IEC 13818-1。第二个ts:TS头+部分ES;也就是一帧数据只有一个PES。0xc0:含有PTS和DTS。0x80:只含有PTS。原创 2023-08-06 16:49:13 · 1485 阅读 · 0 评论 -
TS协议之PMT(节目映射表)
是一个容器,里面包含了该节目需要的所有媒体流:音频流,视频流,字幕流等。因此一般情况下,一个PMT里面由两个TS_PMT_Stream代表两种流(视频流,音频流),通过TS_PMT_Stream里的元素PID来获取TS协议中的流媒体数据。一般情况下,N和N1是相等的,都等于媒体流的数量,假如该PMT中含有音频流,视频流,字幕流三种流的PID,则N和N1就等于3;而N中的descriptor()就包含了音频流,视频流,字幕流三种流的描述。PMT:节目映射表,与PAT成对出现,包含了该节目下所有的节目元素。原创 2023-08-04 17:50:05 · 297 阅读 · 0 评论 -
TS协议之PAT(节目关联表)
字段是一个容器:std::vector program;容器容每个TS_PAT_Program结构对用一个PMT,所以当PMT很多的时候可能超过188个字节,要进行分段;在TS传输过程中,就是遍历该容器通过查找program_map_PID字段找到对应的PMT。PAT:节目关联表,与PMT成对出现,包含所有的频道编号;是解析ts数据的起点。TS头:参考TS协议之PES(数据包),已做过解释这里不多做解释。后续会更新更多音视频相关技术,关注一下。原创 2023-08-03 16:14:35 · 309 阅读 · 0 评论 -
RTP载荷AAC
RTP载荷H264RTP载荷H265AAC音频格式ADTS头详解RTP包的结构: RTP头在 “RTP载荷H264(实战细节)”讲的很清楚了,不了解的可以从上面链接进入查看,AAC中RTP头的使用方法和H264一样,下面介绍下RTP载荷AAC的载荷结构: 载荷和H264的载荷方式是一样的,根据帧数据的大小分为:单包,分片包,聚合包。具体的解释请参考“RTP载荷H264(实战细节)”。一般情况下音频帧只有几百字节,不会使用分片包,又由于聚合包不常用,所以本章说下单包封装AAC的载荷原创 2023-03-19 20:59:23 · 362 阅读 · 0 评论 -
协议RTP实现音频,视频的同步传输
RTP音视频同步传输原创 2023-03-19 20:03:50 · 1409 阅读 · 0 评论 -
RTP载荷H265(实战细节)
H264与H265协议详解RTP载荷H264(实战细节)RTP包的结构: RTP头在 “RTP载荷H264(实战细节)”讲的很清楚了,不了解的可以从上面链接进入查看,H265中RTP头的使用方法和H264一样,下面直接说下RTP载荷H265的载荷结构,及与载荷H264的区别: 载荷和H264的载荷方式是一样的,根据帧数据的大小分为:单包,分片包,聚合包。具体的解释请参考“RTP载荷H264(实战细节)”。 载荷H265和载荷H264的单包,聚合包都是一样的,但是分原创 2023-03-18 20:28:21 · 833 阅读 · 0 评论 -
RTP载荷H264(实战细节)
seq : 用于标识发送者所发送的RTP报文的序列号,每发送一个报文,序列号增1, 不同的源有独立的计数体制,如音频视频的seq是独立的。FU indication和FU header之后便是H264的载荷数据,该载荷数据去掉了H264的起始码和起始码后的第一个字节, 因为该字节的信息已经全部由FU indication和FU header包含。m : 标记,编辑帧的开始和结束,例如一帧的数据比较大,分成了好多RTP包进行传输,则最后一包m=1带包一帧数据传输完成,其他包m=0。原创 2023-03-11 18:49:06 · 703 阅读 · 0 评论 -
H2.64和H2.65编码区别
H2.64 H2.64 起始码 NALU原创 2022-11-02 17:16:01 · 1438 阅读 · 0 评论