- 博客(193)
- 资源 (15)
- 收藏
- 关注
原创 音视频入门基础:H.264专题(16)——FFmpeg源码中,判断某文件是否为H.264裸流文件的实现
FFmpeg是怎样判断出某个文件是否为AnnexB格式的H.264裸流呢?它内部其实是通过h264_probe函数来判断的。AnnexB格式的H.264裸流对应的解析函数就是h264_probe函数
2024-07-22 18:06:36
265
原创 FFmpeg源码:av_probe_input_format3函数分析
av_probe_input_format3函数是FFmpeg中实现容器格式检测的函数,其内部通过循环while ((fmt1 = av_demuxer_iterate(&i))) 拿到所有容器格式对应的AVInputFormat结构,然后通过score = fmt1->read_probe(&lpd)语句执行不同容器格式对应的解析函数,根据是否能被解析,以及匹配程度,来判断出这是哪种容器格式。
2024-07-21 18:09:28
649
原创 音视频入门基础:H.264专题(14)——计算视频帧率的公式
H.264编码的视频,无论其SPS中的fixed_frame_rate_flag值为多少,视频帧率的计算公式都是:视频帧率 = time_scale / (2 * num_units_in_tick)
2024-07-16 00:15:00
851
原创 音视频入门基础:H.264专题(13)——FFmpeg源码中通过SPS属性获取视频色彩格式的实现
FFmpeg源码中通过SPS属性获取视频色彩格式的实现
2024-07-14 16:09:41
1027
原创 VsCode远程ssh连接失败:Could not establish connection to XXX
VsCode远程ssh连接失败:Could not establish connection to XXX
2024-07-14 16:09:03
336
原创 音视频入门基础:H.264专题(12)——FFmpeg源码中通过SPS属性计算视频分辨率的实现
本文讲解FFmpeg源码中计算视频分辨率的实现。
2024-07-11 19:15:00
1009
原创 音视频入门基础:H.264专题(10)——FFmpeg源码中,存放SPS属性的结构体和解码SPS的函数分析
FFmpeg源码对AnnexB包装的H.264码流解码过程中,通过ff_h2645_extract_rbsp函数拿到该H.264码流中的某个NALU的NALU Header + RBSP后,如果从其NALU Header判断出该NALU的类型为SPS,会调用ff_h264_decode_seq_parameter_set函数对其进行解码,把解码出来的SPS属性放到uint8_t *指针指向的缓冲区中。
2024-07-09 00:15:00
905
原创 FFmpeg源码:av_buffer_ref、av_buffer_unref函数分析
FFmpeg源码中通过av_buffer_ref函数增加AVBuffer的引用计数,av_buffer_unref减少引用计数。通过引用计数,避免了深拷贝的内存开销,又避免了浅拷贝堆的重复释放或内存泄露问题
2024-07-06 00:15:00
844
原创 FFmpeg源码:buffer_create、av_buffer_create、av_buffer_default_free、av_buffer_alloc、av_buffer_allocz函数分析
FFmpeg源码:buffer_create、av_buffer_create、av_buffer_default_free、av_buffer_alloc、av_buffer_allocz函数分析
2024-07-04 20:55:26
1053
原创 FFmpeg引用计数数据缓冲区相关的结构体:AVBuffer、AVBufferRef简介
AVBuffer是一个用于引用计数数据缓冲区的应用程序编程接口,它表示数据缓冲区本身。它是不透明的,不能被直接访问调用,只能通过AVBufferRef间接访问它。
2024-07-04 20:54:56
566
原创 音视频入门基础:H.264专题(9)——SPS简介
nal_unit_type为7的NALU是SPS(Sequence parameter set,序列参数集)
2024-07-03 00:15:00
340
原创 音视频入门基础:H.264专题(7)——FFmpeg源码中 指数哥伦布编码的解码实现
FFmpeg源码中 指数哥伦布编码的解码实现:get_ue_golomb、get_ue_golomb_long、get_ue_golomb_31、get_se_golomb和get_se_golomb_long等函数
2024-06-27 19:30:00
1150
原创 音视频入门基础:H.264专题(6)——FFmpeg源码:从H.264码流中提取NALU Header、EBSP、RBSP和SODB
FFmpeg源码中 通过ff_h2645_packet_split这个函数将一个个NALU的NALU Header、EBSP、RBSP和SODB从H.264/H.265码流中提取出来,本文以H.264为例对该函数进行讲解。
2024-06-26 20:30:00
920
原创 FFmpeg字节操作相关的源码:GetByteContext结构体,bytestream2_init、bytestream2_get_bytes_left、bytestream2_tell函数分析
FFmpeg源码中使用GetByteContext结构体和相关的函数来对字节进行操作。比如FFmpeg按字节读取H.264码流时,会用到GetByteContext结构体,bytestream2_init、bytestream2_get_bytes_left、bytestream2_tell、bytestream2_skip等函数。
2024-06-25 20:45:00
790
原创 音视频入门基础:H.264专题(5)——FFmpeg源码中 解析NALU Header的函数分析
FFmpeg源码中 通过h264_parse_nal_header函数将H.264码流的NALU Header解析出来。下面对h264_parse_nal_header函数进行分析。
2024-06-25 19:15:00
1019
原创 音视频入门基础:H.264专题(4)——NALU Header:forbidden_zero_bit、nal_ref_idc、nal_unit_type简介
H.264的NALU Header:forbidden_zero_bit、nal_ref_idc、nal_unit_type简介
2024-06-25 19:00:00
992
原创 FFmpeg中位操作相关的源码:GetBitContext结构体,init_get_bits函数、get_bits1函数和get_bits函数分析
FFmpeg源码中使用GetBitContext结构体来对“位”进行操作。init_get_bits函数初始化GetBitContext结构体。get_bits1函数读取1位数据
2024-06-24 19:31:59
1204
原创 FFmpeg源码:get_bit_length函数分析
调用get_bit_length函数,可以得到nal->data指向的缓冲区的去掉补齐后的位数(bit),也就是NALU Header + SODB的位数。
2024-06-24 19:00:00
923
原创 FFmpeg源码:ff_ctz / ff_ctz_c函数分析
ff_ctz函数等价于ff_ctz_c函数。其作用是:如果形参v的值为0,返回0。否则将形参v转成二进制,返回其最后一个“1”后面“0”的个数。
2024-06-23 22:51:28
514
原创 FFmpeg源码:bytestream2_peek_be32函数分析
bytestream2_peek_be32函数作用是:如果g->buffer_start指向的缓冲区距离被读取到末尾 小于4个字节(g->buffer_end - g->buffer < 4),返回0。否则返回“按照大端模式 读取到的g->buffer指向的地方往后的4个字节”。
2024-06-21 21:05:04
708
原创 FFmpeg源码:ff_h2645_extract_rbsp函数分析
ff_h2645_extract_rbsp函数在H.264/H.265的解码时被调用。作用是将去掉第一个startcode的H.264/H.265码流(以下全部以H.264码流为例) 中的第一个NALU 提取出来,分别去掉和保留防竞争字节,存贮到形参nal 指向的缓冲区中。
2024-06-20 19:45:00
1043
原创 FFmpeg中内存分配和释放相关的源码:av_malloc函数、av_mallocz函数、av_free函数和av_freep函数分析
FFmpeg源码中av_malloc函数、av_mallocz函数、av_free函数和av_freep函数的底层实现原理分析
2024-06-17 21:30:00
1293
原创 音视频入门基础:像素格式专题(3)——FFmpeg源码解析BMP格式图片的底层实现原理
FFmpeg可以将图片或者媒体文件中的信息(比如图片或视频的分辨率,像素格式等信息)解析出来。本文以BMP格式的图片为例子,讲解FFmpeg解析图片的底层实现原理,通过本文也可以了解到FFmpeg的avformat_open_input函数和avformat_find_stream_info函数的内部实现原理。
2024-05-19 16:53:48
1209
原创 FFmpeg源码:#define IMAGEAUTO_DEMUXER(imgname, codecid) 宏定义分析
对FFmpeg源码中的 #define IMAGEAUTO_DEMUXER(imgname, codecid) 宏定义进行分析
2024-05-18 15:52:59
492
原创 FFmpeg源码:bytestream_get_byte函数分析
FFmpeg源码中经常使用到bytestream_get_byte这个函数,本文讲解函数bytestream_get_byte的作用和内部实现
2024-05-17 13:09:37
723
原创 音视频入门基础:像素格式专题(2)——不通过第三方库将RGB24格式视频转换为BMP格式图片
BMP取自位图Bitmap的缩写,也称为DIB(与设备无关的位图),是一种独立于显示器的位图数字图像文件格式。常见于微软视窗和OS/2操作系统,Windows GDI API内部使用的DIB数据结构与 BMP 文件格式几乎相同。BMP文件通常是不压缩的,所以它们通常比同一幅图像的压缩图像文件格式要大很多。例如,一张800×600分辨率的24位的BMP格式图片几乎占据1.4MB空间。因此它们通常不适合在因特网或者其他低速或者有容量限制的介质上进行传输。
2024-05-11 21:23:20
932
原创 音视频入门基础:像素格式专题(1)——RGB简介
三原色光模式(RGB color model,又称RGB表色系统、RGB颜色模型、红绿蓝颜色模型,是一种加色模型,将红(Red)、绿(Green)、蓝(Blue)三原色的色光以不同的比例相加混色,以合成产生各种色彩光。RGB颜色模型的主要目的是在电子系统中检测,表示和显示图像,比如电视和电脑,利用大脑强制视觉生理模糊化(失焦),将红绿蓝三原色子像素合成为一色彩像素,产生感知色彩(其实此真彩色并非加色法所产生的合成色彩,原因为该三原色光从来没有重叠在一起,只是人类为了“想”看到色彩,大脑强制眼睛失焦而形成。
2024-04-30 11:17:59
2376
原创 MySQL连接失败
针对该问题,我检查了接手软件的代码,发现代码存在bug,导致了偶发无法释放数据库连接。然后修改MySQL允许的最大连接数,修改MySQL启动参数文件:vi /etc/my.cnf,在最后一行加入:max_connections=300,这样就把MySQL的最大允许连接数从之前的151改成了300。然后经过上述修改后,发现日志再没有打印连接MySQL失败的问题,说明确实是由于连接数的问题导致的连接失败。最近接手了公司的一个软件项目,通过打印日志,发现该软件会偶发出现连接MySQL数据库失败的问题。
2024-04-23 21:00:00
410
原创 Linux根据时间删除文件或目录
执行完后,再次通过ls -l --time-style="+%Y-%m-%d %H:%M:%S" /home命令查看/home目录下的文件和目录,可以发现90天之前的文件和目录被删掉了。下面我做一些补充,讲述一个具体例子。以删除/home目录下的文件为例。通过date命令可以查看到当前系统时间是2024年3月28日。按照年月日时分秒的形式显示/home目录下的文件和目录。》已经讲述了根据时间删除文件或目录的方法。如果报错:遗漏“-exec”的参数。
2024-03-28 20:25:48
1476
原创 CentOS离线安装命令
某些CentOS安装后默认是没有部分Linux命令的,比如netstat和lsof:一般情况下我们可以通过yum install安装这些命令。但是在CentOS无法访问公网的时候(比如CentOS服务器部署在学校、军工等无法访问外网的环境),我们就只能通过离线安装的方式安装这些命令。
2024-03-27 21:11:08
914
原创 Windows下安装Kafka3
本文讲述Windows(win10)下安装Kafka3的方法。基本流程跟《》一样,也是一样需要先安装Java环境,再部署部署Kafka。首先在官网下载Kafka二进制压缩包。无论是在CentOS还是在Windows下都是下载该压缩包,里面已经包含了Kafka Linux和windows平台下的可执行文件了。选择目前比较新的3.6.1版本下载。
2024-03-12 07:23:41
1070
原创 CentOS下安装Kafka3
kafka是分布式消息队列,本文讲述其在centos(centos 7.5)下的安装。安装过程可以参考其官方文档首先在官网下载Kafka二进制文件(官网的压缩包里面已经包含了Linux和windows的Kafka可执行文件了),选择目前比较新的3.6.1版本下载。
2024-03-03 23:38:39
1074
原创 Wireshark不显示Thrift协议
使用Wireshark对thrift协议进行抓包。设置后,可以发现Wireshark里面显示的协议从Tcp变为Thrift了。将“当前”修改为Thrift,然后点击“确定”"右键" -> "Decode As"选择thrift的tcp端口。
2024-02-07 23:01:52
802
Test14E.rar
2021-07-07
Test1A.rar
2021-01-09
Android模拟器虚拟串口实现串口通信的附件资源.rar
2020-08-09
ffmpeg.rar
2020-02-23
QtGuiApplication2.rar
2019-10-13
博文《关于在Opengl中先平移后旋转和先旋转后平移的效果不一样的原因》的附件资源
2019-03-04
包含GlU32.Lib glut32.dll glut32.lib glut.dll glut.h glut.lib
2019-03-02
gl/glext.h
2019-02-26
播放YUV视频文件的工程
2018-10-02
播放PCM音频文件的工程
2018-09-17
NatvisFile.natvis
2018-09-08
FFmpeg解封装并获取本地媒体文件信息的源码
2018-08-16
NSIS安装包制作工具
2018-05-21
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人