![](https://img-blog.csdnimg.cn/20190919212914810.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
音视频技术
文章平均质量分 81
cuijiecheng2018
C++开发工程师
展开
-
音视频相关文章总目录
为了方便各位观看,本文置顶,以目录形式汇集我写过的大部分音视频专题文章。之后文章更新,本目录也会同步更新。原创 2024-08-01 19:15:00 · 520 阅读 · 0 评论 -
音视频入门基础:WAV专题(5)——FFmpeg源码中解码WAV Header的实现
FFmpeg内部会调用wav_probe函数检测该文件是否为WAV格式的音频文件。然后如果检测出该文件为WAV格式的音频文件,会调用wav_read_header函数解码WAV Header。原创 2024-07-30 18:40:50 · 694 阅读 · 0 评论 -
音视频入门基础:WAV专题(4)——FFmpeg源码中获取WAV文件音频压缩编码格式、采样频率、声道数量、采样位数、码率的实现
FFmpeg源码中是通过ff_get_wav_header函数来解码Format chunk,获取WAV文件中的音频压缩编码格式、采样频率、声道数量、采样位数、码率等信息的原创 2024-07-30 18:40:01 · 613 阅读 · 0 评论 -
音视频入门基础:WAV专题(3)——FFmpeg源码中,判断某文件是否为WAV音频文件的实现
WAV格式的音频文件对应的解析函数是wav_probe函数原创 2024-07-27 07:25:04 · 664 阅读 · 0 评论 -
音视频入门基础:WAV专题(2)——WAV格式简介
1.WAV的文件头不一定为固定的44字节,由是否存在扩展块和是否存在可选区块决定。所以如果不通过第三方库,自己写解析WAV文件的程序时要注意这一点。原创 2024-07-26 20:27:10 · 1172 阅读 · 0 评论 -
音视频入门基础:WAV专题(1)——使用FFmpeg命令生成WAV音频文件
通过FFmpeg命令可以把PCM文件转为WAV格式的音频文件原创 2024-07-26 19:15:00 · 235 阅读 · 0 评论 -
音视频入门基础:PCM专题(3)——使用Audacity工具分析PCM音频文件
本文介绍通过Audacity工具打开、分析PCM音频文件的方法原创 2024-07-24 19:27:59 · 1282 阅读 · 0 评论 -
音视频入门基础:H.264专题(17)——FFmpeg源码获取H.264裸流文件信息(视频压缩编码格式、色彩格式、视频分辨率、帧率)的总流程
FFmpeg源码获取H.264裸流文件信息(视频压缩编码格式、色彩格式、视频分辨率、帧率)的总流程和内部实现原理原创 2024-07-24 00:15:00 · 886 阅读 · 1 评论 -
音视频入门基础:H.264专题(16)——FFmpeg源码中,判断某文件是否为H.264裸流文件的实现
FFmpeg是怎样判断出某个文件是否为AnnexB格式的H.264裸流呢?它内部其实是通过h264_probe函数来判断的。AnnexB格式的H.264裸流对应的解析函数就是h264_probe函数原创 2024-07-22 18:06:36 · 914 阅读 · 0 评论 -
音视频入门基础:H.264专题(15)——FFmpeg源码中通过SPS属性获取视频帧率的实现
FFmpeg源码中计算视频帧率的实现原创 2024-07-21 18:09:58 · 467 阅读 · 0 评论 -
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 · 1012 阅读 · 0 评论 -
音视频入门基础:H.264专题(14)——计算视频帧率的公式
H.264编码的视频,无论其SPS中的fixed_frame_rate_flag值为多少,视频帧率的计算公式都是:视频帧率 = time_scale / (2 * num_units_in_tick)原创 2024-07-16 00:15:00 · 884 阅读 · 0 评论 -
音视频入门基础:H.264专题(13)——FFmpeg源码中通过SPS属性获取视频色彩格式的实现
FFmpeg源码中通过SPS属性获取视频色彩格式的实现原创 2024-07-14 16:09:41 · 1053 阅读 · 0 评论 -
音视频入门基础:H.264专题(12)——FFmpeg源码中通过SPS属性计算视频分辨率的实现
本文讲解FFmpeg源码中计算视频分辨率的实现。原创 2024-07-11 19:15:00 · 1034 阅读 · 0 评论 -
音视频入门基础:H.264专题(11)——计算视频分辨率的公式
通过SPS中的属性计算H.264视频分辨率的公式原创 2024-07-11 00:15:00 · 891 阅读 · 0 评论 -
音视频入门基础: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 · 942 阅读 · 0 评论 -
FFmpeg源码:av_buffer_ref、av_buffer_unref函数分析
FFmpeg源码中通过av_buffer_ref函数增加AVBuffer的引用计数,av_buffer_unref减少引用计数。通过引用计数,避免了深拷贝的内存开销,又避免了浅拷贝堆的重复释放或内存泄露问题原创 2024-07-06 00:15:00 · 856 阅读 · 0 评论 -
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 · 1065 阅读 · 0 评论 -
FFmpeg引用计数数据缓冲区相关的结构体:AVBuffer、AVBufferRef简介
AVBuffer是一个用于引用计数数据缓冲区的应用程序编程接口,它表示数据缓冲区本身。它是不透明的,不能被直接访问调用,只能通过AVBufferRef间接访问它。原创 2024-07-04 20:54:56 · 582 阅读 · 0 评论 -
音视频入门基础:H.264专题(9)——SPS简介
nal_unit_type为7的NALU是SPS(Sequence parameter set,序列参数集)原创 2024-07-03 00:15:00 · 380 阅读 · 0 评论 -
音视频入门基础:H.264专题(8)——H.264官方文档的描述符
H.264官方文档中描述符指定了NALU中每个语法元素的解析过程原创 2024-06-27 20:45:00 · 728 阅读 · 0 评论 -
音视频入门基础: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 · 1169 阅读 · 0 评论 -
音视频入门基础: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 · 944 阅读 · 0 评论 -
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 · 793 阅读 · 0 评论 -
音视频入门基础: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 · 1033 阅读 · 0 评论 -
音视频入门基础: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 · 1012 阅读 · 0 评论 -
FFmpeg中位操作相关的源码:GetBitContext结构体,init_get_bits函数、get_bits1函数和get_bits函数分析
FFmpeg源码中使用GetBitContext结构体来对“位”进行操作。init_get_bits函数初始化GetBitContext结构体。get_bits1函数读取1位数据原创 2024-06-24 19:31:59 · 1213 阅读 · 0 评论 -
FFmpeg源码:get_bit_length函数分析
调用get_bit_length函数,可以得到nal->data指向的缓冲区的去掉补齐后的位数(bit),也就是NALU Header + SODB的位数。原创 2024-06-24 19:00:00 · 926 阅读 · 0 评论 -
FFmpeg源码:ff_ctz / ff_ctz_c函数分析
ff_ctz函数等价于ff_ctz_c函数。其作用是:如果形参v的值为0,返回0。否则将形参v转成二进制,返回其最后一个“1”后面“0”的个数。原创 2024-06-23 22:51:28 · 516 阅读 · 0 评论 -
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 · 711 阅读 · 0 评论 -
FFmpeg源码:AV_RB32宏定义分析
AV_RB32宏定义的作用是:按照大端模式 读取形参指向的缓冲区的前四个字节,并返回。原创 2024-06-21 20:20:43 · 982 阅读 · 0 评论 -
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 · 1053 阅读 · 0 评论 -
音视频入门基础:H.264专题(3)——EBSP, RBSP和SODB
EBSP, RBSP和SODB原创 2024-06-19 20:44:04 · 1225 阅读 · 0 评论 -
FFmpeg中内存分配和释放相关的源码:av_malloc函数、av_mallocz函数、av_free函数和av_freep函数分析
FFmpeg源码中av_malloc函数、av_mallocz函数、av_free函数和av_freep函数的底层实现原理分析原创 2024-06-17 21:30:00 · 1326 阅读 · 0 评论 -
音视频入门基础:H.264专题(1)——H.264官方文档下载
H.264官方文档下载原创 2024-06-09 10:50:48 · 561 阅读 · 0 评论 -
摄像机录制,所需存贮空间计算
某录制软件部署到学校,需要在某个时间段内同时对该学校的n个教室的所有摄像机进行软件录制,计算录制文件所需存贮空间。原创 2024-05-22 20:30:00 · 351 阅读 · 0 评论 -
音视频入门基础:像素格式专题(3)——FFmpeg源码解析BMP格式图片的底层实现原理
FFmpeg可以将图片或者媒体文件中的信息(比如图片或视频的分辨率,像素格式等信息)解析出来。本文以BMP格式的图片为例子,讲解FFmpeg解析图片的底层实现原理,通过本文也可以了解到FFmpeg的avformat_open_input函数和avformat_find_stream_info函数的内部实现原理。原创 2024-05-19 16:53:48 · 1224 阅读 · 0 评论 -
FFmpeg源码:#define IMAGEAUTO_DEMUXER(imgname, codecid) 宏定义分析
对FFmpeg源码中的 #define IMAGEAUTO_DEMUXER(imgname, codecid) 宏定义进行分析原创 2024-05-18 15:52:59 · 495 阅读 · 0 评论 -
FFmpeg源码:bytestream_get_byte函数分析
FFmpeg源码中经常使用到bytestream_get_byte这个函数,本文讲解函数bytestream_get_byte的作用和内部实现原创 2024-05-17 13:09:37 · 727 阅读 · 0 评论 -
音视频入门基础:像素格式专题(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 · 948 阅读 · 0 评论