- 博客(33)
- 收藏
- 关注
原创 FFmpeg模块化架构
整个过程的核心就是数据结构AVPacket和AVFrame在几个核心上下文()之间,通过sendreceivereadwrite系列函数进行流转。
2025-12-08 17:19:21
856
原创 FFmpeg AVFormatContext 分配函数详解
是基础的分配函数,创建一个"空白"的格式上下文,需要后续手动配置。主要用于需要精细控制的场景。:是高级的智能分配函数,专门为输出场景设计,可以自动检测和设置输出格式,简化了输出文件的创建流程。最佳实践读取文件:直接使用写入文件:使用+ 文件扩展名特殊需求:使用进行手动配置。
2025-12-08 16:56:59
744
原创 FFmpeg API 数据结构及其详细说明:
2. AVCodecContext3. AVFrame4. AVPacket5. AVChannelLayout(新版本FFmpeg,≥5.0)6. AVDictionary(选项字典)7. 重要枚举类型AVSampleFormat(采样格式)AVMediaType(媒体类型)AVCodecID(编解码器ID)8. 关键API函数编解码器相关帧和包管理声道布局相关(新API)采样格式相关9. 数据结构关系图10. 内存管理原则分配与释放配对:引用
2025-12-03 23:59:35
191
原创 fstream,ofstream,ifstream
函数描述适用类open()打开文件所有close()关闭文件所有is_open()检查文件是否成功打开所有。
2025-11-26 22:07:41
346
原创 AVAudioFifo
是 FFmpeg 中专门为音频处理设计的先进先出(FIFO)缓冲区。它主要用于解决音频处理中常见的生产者-消费者速度不匹配问题。音频转码: 平衡解码和编码速度差异实时处理: 缓冲输入数据,平滑处理波动格式转换: 作为不同音频格式间的中间缓冲区流处理: 处理网络流中的音频数据包。
2025-11-25 22:35:44
408
原创 AVChannelLayout
union {// 用于 AV_CHANNEL_ORDER_NATIVE// 用于 AV_CHANNEL_ORDER_CUSTOM} u;// 5.1 环绕声printf("自定义布局声道数: %d\n", custom_layout.nb_channels);// 6printf("布局描述: %s\n", buf);// "5.1"
2025-11-24 12:56:19
174
原创 视频 frame->data 核心概念
本文详细解析了视频帧数据(frame->data)的核心概念和存储结构。主要内容包括:1)关键参数说明(宽度、高度、像素格式等);2)主要像素格式分类(YUV系列、半平面格式、打包格式、RGB系列);3)实际内存布局示例;4)像素访问方法;5)数据大小计算和格式转换示例。重点阐述了YUV420P、NV12等常见格式的存储特点,并提供了像素访问的代码实现。文章强调理解视频数据存储方式对图像处理、格式转换、编码优化等工作的重要性,是视频开发的基础知识。
2025-11-22 12:25:48
705
原创 音频 frame->data 数据结构
音频按时间序列存储音频样本交错或平面存储多声道数据多种格式支持(整型/浮点,不同位深)不需要像视频那样的行对齐处理数据量= 样本数 × 声道数 × 每样本字节数。
2025-11-22 12:25:05
632
原创 FFmpeg 核心数据结构关系图
核心关系容器管理→AVStream编解码分离AVCodec(算法) +(状态)参数抽象用于安全传递参数数据流AVPacket(压缩) ↔AVFrame(原始)设计原则单一职责: 每个结构体职责明确状态分离: 静态信息与运行时状态分离引用计数: 高效的内存管理向后兼容: 新旧API共存。
2025-11-21 12:26:24
1267
原创 FFmpeg 整体架构关系图
下图清晰地展示了 FFmpeg 在处理媒体文件时,各个核心组件之间的数据流向和层次关系。数据在不同的组件间流动,形态也随之改变。这个架构可以理解为一条。
2025-11-21 12:25:28
775
原创 AVSampleFormat
是 FFmpeg 中定义音频采样数据格式的枚举类型,位于头文件中。// 无符号 8 位整数格式// 有符号 16 位整数格式// 有符号 32 位整数格式// 32 位浮点数格式// 64 位双精度浮点数格式// 以下为平面(Planar)格式// 无符号 8 位整数平面格式// 有符号 16 位整数平面格式// 有符号 32 位整数平面格式// 32 位浮点数平面格式// 64 位双精度浮点数平面格式// 有符号 64 位整数格式// 有符号 64 位整数平面格式。
2025-11-19 15:40:40
662
原创 H.264 层次结构详解
H.264视频编码采用分层结构组织数据,从高到低依次为:序列(包含多个GOP)、图像组(以IDR帧开始)、图像(分为I/P/B帧)、片(图像分区单元)、宏块(16×16像素)和子块(4×4或8×8)。每个层次对应特定的NALU类型,如序列由SPS描述,GOP以IDR帧开始。编码流程依次进行分区、预测、变换和熵编码,解码则逆向处理。这种层次结构支持高效压缩、错误恢复和并行处理,I帧、P帧和B帧的组合实现了不同压缩率和解码依赖性。
2025-11-18 16:51:41
624
原创 FFmpeg中这些核心数据结构AVFrame AVPacket AVBuffer AVBufferBef的关系和定义
本文介绍了FFmpeg中的核心数据结构及其内存管理机制。主要内容包括: 关键数据结构: AVBufferRef:引用计数缓冲区包装器 AVBuffer:实际数据缓冲区,包含引用计数 AVPacket:存储压缩数据,通过AVBufferRef管理内存 AVFrame:存储解码后的音视频帧数据,包含多个数据平面的引用计数 内存关系: AVPacket和AVFrame通过AVBufferRef间接引用AVBuffer 数据指针(data)实际指向AVBuffer中的存储区域 管理流程: 创建时分配结构体并初始化引
2025-11-15 20:21:27
122
1
原创 #CMake 语法详解
设置变量# 使用变量# 环境变量# 缓存变量(用户可配置)set(${arg1}_RESULT "processed" PARENT_SCOPE) # 返回给父作用域# 调用函数set(${arg1}_RESULT "processed") # 会影响调用者的作用域endmacro()# 调用宏。
2025-11-12 21:40:44
832
原创 FFmpeg 最常用的命令
本文介绍了FFmpeg的基本语法和常用命令,包括: 视频格式转换(MP4转AVI/MOV/MKV/WebM/GIF) 音频提取与转换(MP3/AAC等格式互转) 视频压缩与质量调整(码率、分辨率、帧率控制) 视频剪辑与合并(片段截取、多文件合并) 截图与缩略图生成 水印与文字添加 音频处理(音量调整、淡入淡出等) 视频特效(旋转、翻转、亮度调整等) 屏幕录制与流媒体操作 详细参数说明与编码器选择 文章提供了实用脚本示例,适合音视频处理的各种需求,是FFmpeg的实用操作指南。
2025-11-10 11:28:11
787
原创 ffplay 命令
FFplay是一个基于FFmpeg的轻量级媒体播放器,支持视频、音频和网络流播放。文章详细介绍了其基本用法,包括文件播放、快捷键控制和常用参数设置,如窗口控制、音视频调节和播放选项。同时还涵盖高级功能如滤镜效果、多文件播放和流分析模式,并提供了实用场景示例(预览、音频可视化、网络流监控)和性能优化建议。针对Windows系统特别介绍了设备选择和摄像头使用方法,最后附带了批处理脚本范例和常见问题解决方案。
2025-11-10 11:19:51
348
原创 在线点播的视频格式
本文系统解析了多媒体技术中的编码格式、封装格式和传输协议三个核心概念。编码格式负责数据压缩(如H.264/AV1),封装格式组织媒体流(如MP4/MKV),传输协议管理网络传输(如HLS/WebRTC)。三者形成完整技术栈:编码→封装→传输→解封装→解码→播放。实际应用中需根据设备支持、质量需求和网络条件选择合适组合(如H.264+MP4+HLS)。当前趋势包括AV1编码普及、CMAF封装标准和低延迟传输协议发展。理解这些概念的层级关系和协作机制对多媒体系统设计和优化至关重要。
2025-11-08 16:33:57
741
原创 直播协议详解——HTTP-FLV、HLS、RTMP、Web-RTC、RTSP
流媒体协议技术分析与应用 摘要:本文系统分析了主流流媒体传输协议的技术特点和应用场景。RTMP协议采用TCP传输,延迟1-5秒,适合直播推流但缺乏浏览器原生支持。HLS基于HTTP传输TS片段,延迟10-30秒但兼容性好,支持自适应码率。HTTP-FLV通过HTTP长连接实现1-3秒低延迟播放。WebRTC采用UDP传输,延迟低于500ms,适合实时通信但部署复杂。RTSP主要用于监控系统,延迟1-3秒。各协议在延迟、兼容性、实现复杂度等方面存在明显差异,需要根据具体应用场景选择合适的技术方案。
2025-11-07 09:59:35
1162
原创 编码格式、封装格式和传输协议详解
本文系统解析了多媒体技术中的三个核心概念:编码格式、封装格式和传输协议。编码格式负责数据压缩(如H.264、AAC),关注压缩效率和图像质量;封装格式(如MP4、MKV)组织多轨道数据并确保同步播放;传输协议(如HLS、RTMP)管理网络传输。三者形成完整技术栈:原始数据经编码压缩后封装,再通过网络协议传输。文章详细对比了三者的区别与协作关系,并提供了不同应用场景下的技术选型建议(如直播推荐RTMP+FLV,点播推荐HLS+MP4)。最后指出了AV1编码、CMAF封装和低延迟传输等未来技术趋势。
2025-11-07 09:59:05
327
原创 Linux 进程相关指令
本文总结了Linux系统下常用的进程管理命令,分为七大类:1.进程查看(ps/top/htop/pstree);2.进程控制(后台运行、nohup、jobs);3.进程信号管理(kill/pkill/killall);4.进程信息查询(pidof/pgrep/lsof);5.进程优先级管理(nice/renice);6.系统监控(vmstat/iostat/netstat);7.实际应用示例。文章提供了详细的命令语法和使用场景,如查找并杀死特定进程、监控Java应用、后台运行Web服务等,最后以分类表格形式
2025-11-06 00:11:36
387
原创 Linux/macOS 系统中与软件编译、链接和运行时密切相关的环境变量
本文介绍了Linux系统中几个关键环境变量的作用与用法:PATH用于查找可执行文件,PKG_CONFIG_PATH用于定位编译配置信息,LD_LIBRARY_PATH用于运行时查找动态库,CPATH/C_INCLUDE_PATH用于编译时查找头文件,LIBRARY_PATH用于链接静态库。文章详细说明了各变量的工作原理、设置方法及实际应用场景,如编译FFmpeg时的环境配置,并对比了不同变量的使用阶段和功能。最后介绍了如何永久保存这些环境变量设置,帮助开发者有效管理系统依赖和编译环境。
2025-11-06 00:10:29
415
原创 音视频——音频基本概念
音频采样与音频帧技术详解 音频采样 参数:采样率(8kHz-192kHz)、位深度(8-32位)、声道数(单声道/立体声/环绕声) 原理:通过奈奎斯特定理(f_s > 2×f_max)实现模拟信号数字化 数据量:CD质量(44.1kHz/16位/立体声)产生1411kbps未压缩数据 音频帧 组成:帧头(同步/参数)、音频数据、帧尾(校验) 特性:帧时长10-60ms可变(如Opus),含多个采样点(480@48kHz/10ms) 处理:包含完整的编码(分帧→变换→量化)和解码流程 帧序列管理 时序控
2025-11-05 14:42:13
310
原创 音视频——视频基本概念
本文全面解析了视频技术中的11项核心参数及其相互关系。主要内容包括: 分辨率与宽高比:从SD到8K的分级标准及不同屏幕比例应用场景 扫描方式:逐行与隔行扫描的优缺点对比及现代应用趋势 像素特性:子像素排列方式与位深对色彩表现的影响 色彩空间:RGB、CMYK、YUV等模型的原理及应用差异 显示密度:DPI与PPI的区别及各类设备的典型密度标准 帧率特性:从24fps到120fps+的不同应用场景及选择考量 时间戳机制:DTS与PTS在解码和显示时序控制中的作用 码率控制:固定与可变码率的适用场景及推荐设置
2025-11-05 14:26:44
1698
原创 linux的环境变量
环境变量是 Linux 系统中重要的动态键值对,分为局部变量(仅当前 Shell 有效)和环境变量(可被子进程继承)。核心变量包括 PATH、HOME、USER 等,管理命令有 printenv、export 和 unset。永久设置需修改配置文件(用户级为 ~/.bashrc,全局为 /etc/environment)。最佳实践是通过 export PATH="新路径:$PATH" 扩展 PATH 变量。一个典型应用是配置 JAVA_HOME 环境变量,将其 bin 目录加入 PATH
2025-11-04 19:12:32
888
原创 音视频基础概念:采样率、比特率、分辨率、帧率
本文系统介绍了音视频技术中的四个核心参数:采样率、比特率、分辨率与帧率。采样率决定音频采集精度,需遵循奈奎斯特定理;比特率反映数据处理密度,影响音视频质量;分辨率描述图像像素数量,影响清晰度;帧率决定画面流畅度。文章详细阐述了各参数的定义、技术原理、应用场景及相互关系,并指出实际应用中需根据带宽、设备等因素进行权衡配置,以优化用户体验。这些参数协同工作,共同决定了音视频的最终呈现效果。
2025-11-03 21:44:54
1052
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅