- 博客(16)
- 收藏
- 关注
原创 【H264视频编码】一、基本概念
视频编码压缩比与GOP结构分析 摘要: 本文系统分析了视频编码中的压缩比和GOP(图像组)结构。压缩比受多种因素影响,典型范围在20:1到100:1之间,具体取决于编码配置和视频内容特性。无损压缩比约为2:1,而有损压缩在普通视频场景可达50:1-100:1。GOP作为视频编码的核心概念,通过I帧、P帧和B帧的组合排列,直接影响压缩效率、随机访问能力和错误恢复能力。文章详细阐述了GOP长度、帧类型结构等关键参数,比较了不同应用场景下的GOP设置策略,并提供了具体的FFmpeg配置示例。
2025-07-27 16:32:50
1063
原创 【音视频学习】五、深入解析视频技术中的像素格式:颜色空间、位深度、存储布局
本文介绍了像素格式的核心概念与应用,重点分析了RGB和YUV两大格式家族。RGB格式直观但数据冗余,而YUV通过亮度(Y)与色度(U/V)分离实现高效压缩,包括4:4:4、4:2:2、4:2:0等采样方式。文章详细讲解了YUV的三种存储布局:平面格式(I420/YV12)、半平面格式(NV12/NV21)和打包格式,比较了它们的内存结构、压缩效率及适用场景。最后指出YUV420是视频编码的黄金标准,而正确选择像素格式对视频处理性能至关重要。
2025-07-23 22:36:15
827
原创 【音视频学习】四、深入解析视频技术中的YUV数据存储方式:从原理到实践
YUV颜色空间在视频处理中比RGB更高效,主要通过亮度(Y)和色度(U/V)分离以及色度下采样来减少数据量。YUV存储方式主要分为三类:平面格式(如I420)、半平面格式(如NV12)和打包格式(如YUYV)。平面格式将YUV分量完全分离存储,适合软件编码;半平面格式Y分量单独存储,UV交错,适合硬件加速;打包格式YUV交错存储,适合采集设备。不同格式各有优劣,应根据应用场景选择,如视频编码推荐I420,移动设备推荐NV12/NV21,摄像机采集推荐YUYV,以优化性能和兼容性。
2025-07-23 17:02:07
2103
原创 【音视频学习】三、FFmpeg音频编码过程详解
本文介绍了使用FFmpeg编解码器进行音频编码的流程,以encode_audio.c示例程序为例。该程序首先生成合成音频信号,然后将其编码为MP2格式输出文件。主要步骤包括:查找编码器(avcodec_find_encoder)、分配编解码上下文(avcodec_alloc_context3)、设置采样参数(比特率、采样格式、采样率和声道布局)、打开编码器(avcodec_open2)、创建帧和包结构、以及执行编码过程(avcodec_send_frame和avcodec_receive_packet)。
2025-07-20 18:27:42
918
原创 【gcc/g++】常用的gdb命令及gdb分析core文件详解
本文整理了GDB调试工具的常用指令和使用方法,主要内容包括:1) 基础操作如启动调试、运行程序;2) 断点管理(设置/查看/删除断点);3) 程序执行控制(单步执行、继续运行等);4) 变量查看与修改;5) 内存检查与汇编指令查看;6) 多线程调试;7) 信号处理;8) 核心转储文件分析。特别提供了针对段错误、堆损坏、栈溢出等常见问题的排查方法,并介绍了配合strace、valgrind等工具进行系统级调试的技巧。该指南可作为GDB调试的快速参考手册。
2025-07-18 16:12:23
846
原创 【ffmpeg源码学习】详解pkg-config的作用
摘要: pkg-config是简化C/C++项目构建的工具,通过查询.pc文件自动获取库的编译链接参数。FFmpeg等库会安装.pc文件,记录头文件路径、库依赖等信息。开发者可通过pkg-config --cflags --libs命令快速生成编译选项,无需手动维护路径。使用时需注意设置PKG_CONFIG_PATH环境变量指向.pc文件目录,并处理可能的动态库路径问题。该工具大幅提升了多库依赖项目的开发效率,但依赖库需正确安装并支持pkg-config机制。
2025-07-18 12:28:07
1063
原创 【Effective C++】条款2学习
《条款2:以const、enum、inline替换#define的实践指南》摘要 本文探讨了用编译器特性取代预处理宏的三个关键场景:1)用const/constexpr替换#define常量,避免符号丢失和调试困难;2)用inline函数替代宏函数,消除参数多次求值风险;3)类内常量的两种实现方案:static const整型(C++11可用constexpr)或枚举。特别强调了静态成员的初始化规则:非整型const static需类外定义,而constexpr static成员(含非整型)可在类内初始化。
2025-07-11 12:11:17
910
原创 【音视频学习】二、windows环境下使用Qt6+FFmpeg实现音频采集
本文介绍了在Windows环境下使用Qt和FFmpeg进行音频采集的开发流程。开发环境配置为Win10 64位系统、Qt Creator 17.0.0和FFmpeg 7.1.1。主要内容包括:1)创建Qt项目;2)音频采集流程详解,重点演示了通过FFmpeg API(如avdevice_register_all、avformat_open_input等)打开音频设备的方法;3)音频数据读取与存储,展示了如何通过av_read_frame采集音频帧并保存为PCM文件。文中提供了详细的代码示例,涵盖设备枚举、设
2025-07-09 15:33:42
2262
原创 【音视频学习】“vmware ubuntu22.04使用ffmpge音频采集声音很小”问题解决方法
摘要:在Ubuntu 22.04系统中使用FFmpeg采集音频时遇到音量过小问题。通过检查VMware声卡设置和arecord命令确认录音设备正常后,发现ALSA的Capture音量被设置为0。使用amixer工具将Capture音量调整为最大值15后,重新录制音频恢复正常音量。解决方法为执行amixer -c 0 set 'Capture' 15命令调节输入增益。
2025-07-07 16:55:57
286
原创 【Qt Creator实用技巧】使用git管理项目代码
本文介绍了使用GitHub管理Qt项目的完整流程:1)在GitHub创建新仓库;2)通过git clone命令下载到本地;3)添加Qt工程文件并设置.gitignore忽略build目录;4)使用git add/commit/push上传项目。同时讲解了Qt Creator内置的Git工具使用方法,包括查看变更(git diff)、检查状态(git status)、提交修改(add/commit)及推送代码(push)等操作。图文并茂地展示了从创建仓库到代码管理的全步骤,适合开发者快速掌握Qt项目版本控制方
2025-07-04 16:55:01
367
原创 【音视频学习】一、Windows音视频开发环境搭建指南
作为音视频开发工程师,一个完善的开发环境是高效工作的基础。本文将详细介绍如何在Windows平台上搭建专业的音视频开发环境,涵盖从基础工具链到高级SDK的配置,希望对你有所帮助。
2025-07-04 10:39:33
833
原创 【C/C++】一文搞懂RVO/NRVO:从C++代码到汇编深度解析
C++中的RVO(返回值优化)和NRVO(命名返回值优化)是编译器优化技术,用于消除函数返回对象时的临时对象构造和拷贝/移动操作。本文通过C++代码和汇编分析,揭示了这些优化的工作原理。RVO适用于返回匿名临时对象,NRVO适用于返回命名局部变量。优化后的代码直接在返回地址处构造对象,避免了不必要的拷贝操作。汇编代码分析表明,调用者为返回对象分配空间,被调用函数直接在该空间构造对象。禁用优化选项(-fno-elide-constructors)时,编译器会生成额外的拷贝构造和析构调用,验证了优化效果。这些技
2025-07-02 21:01:06
635
原创 GCC/G++函数返回机制深度解析:寄存器与栈返回的选择策略
在C/C++程序执行过程中,函数调用和返回是程序流程控制的基础操作。了解GCC/G++编译器如何处理函数返回值对于编写高效代码和进行底层调试至关重要。本文将深入探讨GCC/G++的函数返回机制,特别是寄存器返回和栈返回的选择标准。
2025-07-01 20:52:59
1074
原创 【C/C++】从汇编的角度分析函数以value&reference形式返回的底层实现
本文通过C++代码示例和ARM汇编分析,探讨了函数返回值与返回引用的底层实现区别。重点展示了两种返回方式在编译器优化(RVO/NRVO)下的不同处理机制:返回value时调用者预留空间作为隐藏参数传递,被调函数直接构造对象避免拷贝;返回reference则直接传递静态对象地址。文章结合具体汇编代码,详细解析了栈帧建立、参数传递、对象构造和销毁的完整流程,揭示了C++函数返回机制的底层实现原理。
2025-06-30 18:43:34
1022
原创 windows下使用ffmpeg命令采集音频
本文介绍了如何在windows环境上使用ffmpeg命令实现音频采集的方法;此时会播放刚才录下的声音。
2025-06-26 20:09:46
466
原创 ffmpeg源码编译
安装成功后,ffmpeg可执行文件存放在MSYS2安装目录下:MSYS2\usr\local\ffmpeg\bin。1、编译gdigrab.o报错:缺少依赖。使用MinGW+MSYS2工具编译。(H.265/HEVC 编码)(H.264 编码)(AAC 音频编码)
2025-06-26 15:38:04
2107
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人