自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(7)
  • 收藏
  • 关注

原创 ffmpeg解码mp3报错Header missing和Invalid data found when processing input

摘要:本文记录了一个MP3文件解码错误的解决过程。分析发现报错是由于音频帧头解析失败导致,通过FFmpeg转码测试发现WAV可成功转换而MP3失败。深入源码定位问题源于ADTS帧头格式不符,其中WAV转换成功是因为默认忽略错误帧继续解码,而MP3失败则因不支持封面图片的JPEG格式(SOF7)。最终确认错误机制为帧头校验失败向上返回AVERROR_INVALIDDATA导致。

2025-10-23 11:48:47 412

原创 FFmpeg:BitStreamFilter(AVBSFContext 和 AVBitStreamFilter)

本文介绍了FFmpeg中BitStreamFilter的用途及新版API的使用方法。BitStreamFilter主要用于同一编码格式间的转换而不重新编解码,如H.264的Annex B和AVCC格式转换。文章对比了新旧API差异,新版采用AVBSFContext和send/receive模式,并提供了初始化及使用示例代码。深入分析了AVBSFContext和AVBitStreamFilter结构体内部实现,阐述了av_bsf_init函数的工作机制,包括参数校验、格式转换和初始化回调函数。

2025-09-30 17:23:10 822

原创 MP4中h.265视频编码tag:hvc1和hev1的区别

本文分析了HEVC编码在MP4容器中的两种标识方式hvc1和hev1的区别。hvc1要求参数集完整存储在hvcC box中,而hev1允许部分参数集在视频流中携带。通过FFmpeg源码分析发现,两者的转换仅涉及FourCC标签的修改,无需重新编码。具体实现上,通过ps_array_completeness参数(1/0)来控制参数集的存储方式,这是两种标识切换不影响视频编码的根本原因。文章还指出QuickTime和iOS已不再支持hev1标识,并提供了FFmpeg转换命令。

2025-09-06 10:37:59 822

原创 C++11新特性:变长模版

C++11变长模版特性解析 本文介绍了C++11中的变长模版特性,包括模版参数包和函数参数包的概念及应用。变长模版允许函数和类接受任意数量的参数,通过包扩展实现参数解包。文中通过实例展示了递归实现tuple、参数包展开位置、sizeof...运算符以及完美转发参数包等关键技术点。变长模版极大增强了C++的灵活性和表达能力,为泛型编程提供了更强大的工具。

2025-08-02 20:19:13 408

原创 H.264编码详解

这里FQ是量化后的值,y是原来的系数,Qstep是量化步长(对亮度一般有52种,对于色度有40种),round表示向下取整(量化后一般右下角的数据都会舍去,就是变成0)。上面提到DCT,在经过DCT变换后,有效的图像信息会聚集在低频(如左上角),而高频(如右下角)的信息一般是不必要的,而通过量化则可以去掉这些不必要的高频信息以达到压缩的效果。帧内预测参考每像素块的相邻像素来预测,4×4亮度分量使用子块上方4个,右上方4个,左侧4个,左上顶点1个,总共13个像素来预测构建。C(u)是归一化矩阵,

2024-08-05 16:55:54 5275 2

原创 FLV封装格式详解

常见的ScriptData是FLV的Metadata,里面一般储存AMF数据,且一般保存在文件的起始部分。下图为Header的字段结构(包含了TAG Data),其中TAG类型表示了该TAG数据的类型,数据大小表示了该TAG数据的大小,时间戳表示该TAG的时间。VideoTag分为Header和body存储在FLVTAG的Header之后,其中Header如下图所示(包含了body),body则问实际视频数据。在FLVTAG的Header之后存储的是TAG的Data,下面按三种类型分别说明。

2024-07-31 10:36:48 775

原创 MP4封装格式详解

是容器box,定义了MP4文件的元数据信息,在文件中有且仅有一个,moov里面包含的子box作为描述媒体数据的信息的容器。多媒体实际数据,如音频或视频数据,则在moov box中被引用,但不包含在其中。moov至少包含以下3种box中的一种,也可以包含其他(这里不做介绍)mvhd:Movie Header Box,存放多媒体信息头的容器。cmov:CompressMovie box,压缩过的电影信息容器。rmra:Reference Movie box,参考电影信息容器。

2024-07-30 20:29:43 2913

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除