自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 音视频开发项目-3RKMedia 三大模块初始化

这一篇看里的。这个函数是整个硬件侧的"配置中心",。

2026-08-25 12:21:17 349

原创 音视频开发项目-2主函数

上一篇定了地图,这篇正式进代码。入口是,整个文件只有 35 行,但我在这 35 行上花的时间比想象中多——因为。

2026-08-25 11:42:24 287

原创 音视频开发项目-1开篇

这个系列博客就按这个顺序写。

2026-08-25 10:57:07 383

原创 RV1126 音视频开发:AENC 音频编码模块详解

AENC 是 RKMPP 中负责音频编码的功能模块。与视频编码(VENC)类似,AENC 通过 MPI(Media Process Interface)对外提供统一的编程接口,屏蔽了底层硬件编解码器的差异。初始化 AI 音频采集通道:设置采样率(48000Hz)、采样格式(S16)、声道数(2)等参数,并通过配置、使能 AI 通道。创建 AENC 编码通道:配置编码类型为 AAC、码率 64kbps、采样率与 AI 通道保持一致,通过创建编码通道。绑定 AI 与 AENC 通道:通过。

2026-08-21 13:55:55 357

原创 音视频开发-VCL层和NAL层

在我们做音视频产品的时候,经常会把音视频数据进行网络传输,而此时音视频数据就需要进行编码(所谓编码就是指压缩)。因为在网络传输的时候,网络带宽有限,若此时网络传输的时候还用原始数据进行传输的时候,则会对网络带宽造成极大的负担。比方说一个分辨率为1280 * 720 帧率为30帧的视频,按照YUV420格式的计算,它每秒传输的数据量就是1280* 720* 30 * 3/2 ~= 39.5M,这个数据量是极其惊人的。

2026-08-21 13:55:42 198

原创 音视频开发-PCM 原理与 AI 模块实战

根据奈奎斯特采样定理:当采样率大于等于连续信号最高频率的 2 倍时,采样信号就能无差别还原出原始信号。例如采样深度为 16bit,则声音有 2 的 16 次方个振幅等级;本文将从 PCM 原理出发,系统讲解音频数据的生成过程、核心参数与存储格式,并结合 AI 模块(语音识别、AI 降噪等)的实战应用,帮助读者建立从底层数据到上层智能处理的完整认知。采样率指每秒钟采样的个数,即 1 秒内采集声音的频率。:在坐标轴上把每一个离散采样点进行数字化操作,即把每个采样点用竖线表示出来,方便后续数字化存储。

2026-08-20 12:13:19 376

原创 音视频开发-QP 原理

先说说我自己的理解吧。QP 全称是 Quantization Parameter,量化参数。一开始看到这个词我是懵的,后来查了不少资料才慢慢明白:它就是视频编码器里控制画质和码率的一个关键旋钮。简单打个比方:编码器把画面压缩的时候,会先把图像变换成频域系数,然后除以一个量化步长再取整。这个步长就是由 QP 决定的。QP 越大,步长越大,丢掉的细节越多,画质越差,但码率越低;QP 越小,步长越小,细节保留越多,画质越好,但码率也越高。说白了,QP 就是画质和码率之间的一个平衡杆,往哪边偏都有代价。

2026-08-20 10:23:21 198

原创 音视频开发-高分辨率与低分辨率双路码流

【代码】音视频开发-高分辨率与低分辨率双路码流。

2026-08-03 10:58:42 107

原创 音视频开发 - VENC 模块深入解析

在音视频开发中,VENC(Video Encoder,视频编码器)是将摄像头、屏幕录制等产生的原始视频帧(YUV/RGB)压缩为符合标准的视频码流(如 H.264、H.265)的核心模块。它直接影响最终视频的画质、延迟和文件大小,是实时通信、直播推流、安防监控等场景的基础设施。VENC 模块通常位于采集(VI)、预处理(VPSS)之后,负责接收原始帧、根据配置参数编码、输出码流包。

2026-08-03 10:43:54 540

原创 音视频开发-码率和码率控制

比如:一段 60 秒、码率 2 Mbps 的视频,大约占用 15 MB 空间(2 Mbps × 60s ÷ 8)。用固定量化参数(如 H.264/AVC 中的 QP)来编码,量化参数决定了压缩强度,从而间接控制码率。:既想要 VBR 的画质优势,又不希望瞬间流量冲垮播放器的场景(比如硬件播放设备对峰值码率有限制)。画质好的场景码率自动低,画质复杂的场景码率自动飙高。整个文件最终的平均码率达到目标值即可,允许局部波动,比纯 CBR 灵活。:直播推流(如 RTMP),带宽稳定的场景。

2026-08-01 10:29:29 468

原创 音视频开发-H264 编码与 GOP 帧

H.264(AVC)是一种高效视频编码标准,通过帧内/帧间预测减少冗余。其核心是GOP(图像组)结构,包含I帧(独立编码)、P帧(前向预测)和B帧(双向预测)。I帧确保随机访问,P/B帧提升压缩率。GOP长度直接影响压缩效率和访问性能:长GOP适合存储(高压缩),短GOP适合直播/会议(低延迟)。解码时需处理帧顺序重排。合理配置GOP结构和帧类型对视频应用至关重要,需平衡压缩率、延迟和容错性。

2026-08-01 10:18:49 561

原创 音视频开发-rga模块

【代码】音视频开发-rga模块。

2026-07-29 10:44:36 219

原创 音视频开发-vi模块demo

00。

2026-07-29 10:33:34 25

原创 音视频开发-vi模块

rv1126的VI模块是音视频输入模块,作用是读取sensor的数据。VI模块的底层是对V4L2驱动接口的一系列封装,它本质上还是依赖Linux底层的V4L2驱动架构并向应用层提供对应的设备文件节点,比方说(/dev/video*)。而VI模块可以通过操作类似于/dev/video*这样的设备节点来读取摄像头数据。

2026-07-27 15:17:40 408

原创 音视频开发-yuv原理

yuv和rgbyuv相较于rgb优势在于音视频传输时更节省网络带宽。

2026-07-27 15:02:36 161

原创 FTP云盘项目

由于tcp是流式传输,服务器或客户端在读数据时不知会接受多少数据,故会使用while循环一直读,当接收到结束标记时才会终止。所以在服务器或客户端在写完一段数据后需要写入结束标记,帮助接收方完成读操作。客户端与服务器建立起tcp连接,利用socket返回的fd,对其进行读写操作,从而实现云盘功能。ls,cd,get,put大致流程都如下图所示。

2026-06-24 12:16:30 247

原创 linux网络编程

基本流程如下:服务器:1 .socket创建套接字2.bind绑定主机端口3.listen监听4.accept当有客户端请求连接时接受并创建新的套接字用于服务该客户端5.对accept 返回的fd可以进行读写操作客户端:1.socket创建套接字2.connect像服务器请求连接3.对connect返回的套接字可以进行读写操作tcp并发操作的基本代码如下:500151024客户端500151024。

2026-06-23 11:56:54 245

原创 linux线程

1.特点2.进程组3.会话获取进程所属的会话ID创建一个会话一般流程fork()子进程后,父进程退出(父进程是进程组的组长不能创建会话)子进程创建会话。

2026-06-15 10:02:09 453

原创 进程间通信

进程间通信的方式有:1.无名管道2.有名管道3.消息队列4.共享内存5.信号6.信号量。

2026-06-12 10:17:35 257

原创 Linux进程

1.进程概念进程是一段正在运行的程序,其数据存储在内存中,他需要占用cpu,物理内存等系统资源2.并发与并行并发:在一段时间内,进程交替运行,让进程感受到是独自占用资源并行:在同一个时间点上,进程同时运行3.pcb(进程控制块)本质是结构体,成员有:pid(进程id):进程标识符进程状态:比如初始态,就绪态,运行态等进程切换时需要保存和恢复一些CPU寄存器描述虚拟地址空间的信息描述控制终端的信息。

2026-06-04 20:26:26 597

原创 linux文件操作

利用man 2 open命令查看open函数所需包含的头文件以及函数原型,调用细节函数原型如下:比较常用*/函数参数pathname:路径名flags:以什么模式打开文件常见的参数有:O_RDONLY:只读O_WRONLY:只写O_RDWR:可读可写O_APPEND 表示追加,如果原来文件里面有内容,则这次写入会写在文件的最末尾。0x00002000O_CREAT 表示如果指定文件不存在,则创建这个文件 0x0000 0100mode。

2026-06-02 18:59:04 688

原创 定时器与基本外设

stm32f10x最多有八个定时器。

2026-05-31 20:33:35 199

原创 实现串口发送以及操作蓝牙模块

此时我们不管蓝牙连接模式是不是任意地址连接,我们直接将AT+PSWD=123456,设成六位数密码即可使用。下载蓝牙调试助手,连接到刚才AT+NAME所设置的名字的蓝牙,连接后发送命令,命令要是gbk格式的。则AT指令 AT+CMODE=1和AT+PSWD = 1234都会回复error。使用串口调试工具时要把波特率置为38400才可正常执行AT指令。start不接,rxe接tx,txe接rx,其他正常接。若蓝牙模块是蓝牙4.0(BLE),不是标准的蓝牙模块。蓝牙正常模式下接rx,tx,vcc,gnd。

2026-05-28 19:16:40 285

转载 API Error: 400 The content[].thinking in the thinking mode must be passed back to the API

当使用ccSwitch调用DeepSeek-V4时出现400错误,原因是API兼容性问题。解决方法是在供应商配置文件中添加"thinking": false参数,这会关闭Claude特有的thinking机制。该参数对DeepSeek-V4的性能没有影响,因为其API只是模拟Anthropic格式。适用于ccSwitch v3.15.0及以上版本调用DeepSeek兼容API的情况,能有效避免400错误同时保持模型原有能力。

2026-05-28 18:17:29 1072 2

原创 初始中断及实现中断

【代码】初始中断及实现中断。

2026-05-22 22:23:29 222

原创 GPIO及外设使用

步骤如下,keil中点击魔术棒,点开c/c++,有个include path选项打开,把目标文件夹包含进来。1.上拉输入:VDD经过开关,上拉电阻,连接外部IO引脚,当开关闭合,外部无输入信号时,默认输入高电平。2.下拉输入:VSS经过开关,下拉电阻,连接外部IO引脚,当开关闭合,外部无输入信号时,默认输入低电平。3.浮空输入:上拉、下拉电阻均断开,直接连接触发器,外部输入什么电平,mcu引脚就是什么电平。4.模拟输入:上拉、下拉电阻均断开,也不经过触发器,引脚直接连接模拟输入,记录外部信号。

2026-05-21 09:25:50 175

原创 嵌入式c语言

学习指针用法。

2026-05-06 20:49:58 21

空空如也

空空如也

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

TA关注的人

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