自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(132)
  • 资源 (1)
  • 收藏
  • 关注

原创 【c校招笔试题】指针笔试题(1)

c笔试题系列,通过画图,了解内存布局

2023-01-07 00:34:21 638 6

原创 rv1126—多路码流(1)多路码流的框架介绍

多路码流宽假,就是把同时推流到多个流媒体服务器里面去

2025-03-29 14:47:12 160

原创 FFMPEG录制远程监控摄像头MP4

点击“停止录制”则跳转到stop_record_cgi.cgi,它的主要作用是封装停止录制的消息队列数据,具体的实现是message.mtype=1,message.data=3(停止录制MP4标识)并发送到RV1126后台程序, 若后台程序msgrcv接收到data == 3的指令则停止MP4录制。当点击“录制”的时候则会开始录制MP4文件, 当点击停止的时候就会停止录制MP4。因为我的板子内存不够,只能放到这里。上图是HTML的实现, 画红框部分就是开始录制按钮和停止录制按钮的设计,开始按钮的实现是。

2025-03-14 18:32:47 441

原创 正常的一个编码器的架构是怎么样,有哪些模块构成

在音视频编码器(Video Encoder)中,通常包括多个核心模块,整个编码器架构遵循。,能更好地进行音视频编码优化!

2025-03-13 21:38:11 683

原创 sensor数据在整个rk平台的框架流程是怎么样,

提供对 Sensor 采集、ISP 处理、编码等操作的封装。瑞芯微 RK 平台的 Sensor 数据处理涉及。在瑞芯微(Rockchip,简称 RK)平台上,

2025-03-13 21:23:28 608

原创 H.264 和 H.265 中 SPS 字段的异同。

以下是和中。

2025-03-13 21:12:58 466

原创 HTML编辑MP4保存名称

上图是html和cgi程序交互的过程,html负责界面的开发:这包括输入框的设置,提交Button的设置。第一个传参:cJSON的字段,第二个传参:cjson的key字段的值,在cjson文件里面需要修改的key值是”record_file”, 第三个传参:cjson的value的值,这里面就是从form表单接收的值,并且对其进行修改,这里是。指的是提交到服务器后的标识符,这里是record_file, placeholder指的是默认的输入内容是。data的长度,这里是4,指的是int的字节数。

2025-03-13 17:50:04 936

原创 CGI程序处理每一帧VDEC视频数据并输出到HTML页面

CGI程序从共享内存里面获取每一帧VDEC数据,这里需要注意的是获取共享内存数据的时候要用到P/V操作保证数据的安全性,这里同样也是用semop进行处理,同时把VDEC数据拷贝到OPENCV里面同时刷新到HTTP服务器里面,最后把HTTP的数据发送到HTML界面。视频数据的来源,这里的数据来源是我这个cgi程序生成了,cgi的程序可执行程序,所以直接填写cgi的绝对路径,第一步,第二步:我们先要获取到共享内存和信号量,因为所有的数据都是从信号量里面拿的。视频的宽度,width = 500,

2025-03-12 17:10:50 464

原创 读取解码视频数据并写入共享内存

获取每一帧VDEC解码器的数据,并把每一帧的VDEC的视频数据存放到共享内存里面。并且在拷贝的过程中需要用到信号量P/V操作来保证共享内存安全性,这里用的是semop进行P/V操作。由于此共享内存存放的是YUV视频数据,所以sharememory_size = yuv_size = WIDTH * HEIGHT * 3 /2;和线程锁一样的,保护共享资源,信号量的使用方法,是做P/V操作。V操作指的是走出临界点,一般是写入数据之后。去获取每一帧的VDEC解码视频数据,具体的传参,上图是读取解码视频数据并。

2025-03-11 23:37:49 362

原创 读取UVC的H264码流数据

但是具体的图像内容要看packet拷贝给它的数据是什么。所以所有的数据都是packet拷贝过去给它,MEDIA_BUFFER只是定义了一个图像的一下参数。这个说过了,就是用来创建每一帧的MEDIA_BUFFER数据。未来发到解码器里面的都是这个MEDIA_BUFFER,不是packet。这里的拷贝分为两部分,分别是缓冲区数据和缓冲区长度。结构体指针(MB_IMAGE_INFO_S是图像信息的结构体)可以理解是定义了解码后的一帧图像格式是怎么样的。读取的每一帧H264的数据拷贝到。表示的是不带缓存的硬件。

2025-03-11 20:37:54 280

原创 UVC摄像头命令推流,推到rv1126里面去

而在ffmpeg拉流读取的时候,需要的是电脑的ip, 如udp://192.168.100.66:8080。指定设备进行采集, 在windows上使用dhow来进行视频数据采集,相当于Linux的/dev/video节点的查找。上图是查询UVC设备的效果图,画红框的部分是UVC设备的设备名称。上图是推流的效果图, 有了上面的打印就证明推流已经成功了。编码速度的配置, veryfast编码速度比较快, 效果较好。文件的输入路径, 这里是输入对应的摄像头设备。输出文件的格式,这里是h264格式。

2025-03-11 15:53:28 512

原创 三:FFMPEG拉流读取模块的讲解

这里指的是要查找类型的索引,分别是AVMEDIA_TYPE_VIDEO视频类型、AVMEDIA_TYPE_AUDIO音频类型、AVMEDIA_TYPE_SUBTITLE字幕类型。是FFMPEG的字典结构体,它主要是设置FFMPEG内部的参数,如:video_size分辨率、max_delay最大延迟数等,并且以。结构体指针,这个结构体是FFMPEG非常重要的内部桥梁,它的主要功能是获取FFMPEG解封装的数据,如(flv/mp4/ts)等。而在我们这个项目中,UVC推流的功能由FFMPEG的命令完成。

2025-03-11 15:25:09 769

原创 二:RV1126的VDEC视频解码模块的工作流程

常用的VDEC模块,包括FFMPEG解码(软件解码)、还有各种芯片自带的VDEC解码器(硬件解码),如海思VDEC、瑞芯微VDEC、君正VDEC等等,像我们的项目则是直接使用瑞芯微自带的VDEC视频解码模块对其进行解码处理。指的就是使用瑞芯微内部的硬件模块进行解码处理(这里需要注意的是,有些RV1126内部可能不提供硬件解码的功能,只能使用软件解码处理,我去问了厂家,目前易百纳很多板子的解码模块只支持软件解码)。一般都是会选择帧模式,因为帧模式你,不用解码器自己分割,可以加快解码器的速度。

2025-03-10 23:54:35 277

原创 远程监控项目描述以及总体框架

远程监控项目描述以及总体框架

2025-03-10 22:06:58 710

原创 本地渲染项目总结

原因就是:卡顿主要是跟CPU渲染有关系,OPENCV的CPU消耗太高,我自己琢磨了一下好像是无解,然后,后面采用一下Opengl看看(todo......)2.OpenCV在把rgb视频流数据,转换成了jpg字节流,因为http网页值只支持jpg格式。3.Opencv编码,是压缩编码的的那种,没有对数据进行压缩,做了格式转换。这个是我总结的整个流程。接下来总结一下遇到问题,

2025-03-10 15:54:25 656

原创 RV1126拍照的实现

画红框部分是用OPENCV进行截取的代码,当消息队列收到拍照指令后则直接调用OPENCV的Mat矩阵进行图像截取。上图是HTML拍照按钮的界面,黑色框的部分是拍照按钮,我们就是通过这个拍照按钮完成抓拍功能。先来了解一下拍照,起始就是从一段视频流里面获取随机获取一帧。这时候拍照命令下来了,就是在那个时间点上面,随机获取一帧,保存下来,我们要知道。未来cgi程序刷新到网页的视频是由一帧一帧jpg图片传输的。除了能够实时渲染在HTTP页面上,还可以对其进行OPENCV拍照。这是摄像头采集到每一帧的vi数据。

2025-03-10 15:43:17 495

原创 CGI通过消息队列发送拍照指令

CGI通过消息队列发送拍照指令

2025-03-09 15:48:57 534

原创 CGI程序刷新共享内存视频流到HTTP

共享内存的RGB视频流经过imencode处理后就会输出RGB的字节流,RGB的字节流用vector<unchar>。)如视频流、音频流,并且当每一个新的数据相应的时候就替换当前部分。, imencode的作用是把当前的视频流编码为指定格式的字节流。这一段是整个首部最重要的部分,它表示的是HTTP响应类型是流媒体数据(第三个传参:输出的字节流,这里用向量(vector)来表示输出的字节流。指的是HTTP的1.0版本并且状态是200(200指的是响应成功)指的是默认HTTP开始的时候,是关闭状态。

2025-03-08 15:28:35 807

原创 视频图像刷新到HTTP的原理

HTTP的视频刷新通常由两部分组成,第一个部分是HTTP视频响应的头部,第二部分是刷新具体的每一帧JPG字节流数据,具体的如上图。上面这段伪代码是HTTP刷新视频实现,首先先填写HTTP的头部响应信息,然后使用while(1)循环响应jpg的图像格式,然后get_image_data(get_image_data是获取图像的方法)不断获取每一帧的jpg或者png的具体图像字节流数据。指的就是具体的图像数据,比方说每一帧的JPEG图像格式(值得注意的是,对于HTTP图像刷新格式都是JPG或者PNG格式的。

2025-03-08 13:52:00 589

原创 CGI程序获取共享内存RGB数据

CGI程序获取共享内存RGB数据

2025-03-07 19:13:31 405

原创 RV1126的RGB数据传输到共享内存

上图是RV1126后台程序生成RGB数据通过共享内存进行传输的图解,台程RV1126后序(把RGA转换后的RGB数据拷贝共享内存里面去。)生成的RGB视频流放入到共享内存,而CGI程序()通过获取共享内存的RGB数据刷新到网页上面。

2025-03-07 14:45:48 141

原创 共享内存的使用原理

共享内存的使用原理

2025-03-07 12:58:36 301

原创 RGA模块的讲解

stImgIn是视频输入的结构体,stImgOut是处理后的视频结构体。这篇博客主要的内容是RGA模块的初始化和如何获取经过RGA处理,拿到彩色的RGB数据。视频输入的分辨率虚宽,虚宽的数值跟分辨率宽度数值一致都是1920。视频输入的分辨率虚高,虚高的数值跟分辨率高度数值一致都是1080。视频输出的分辨率虚宽,虚宽的数值跟分辨率宽度数值一致都是1920。视频输出的分辨率虚高,虚高的数值跟分辨率高度数值一致都是1080。设置RGA模块,第一个参数是RGA的通道号:0,第二个参数是。获取RGA模块的数据。

2025-03-06 17:37:58 776

原创 RV1126采集VI视频数据流

这节分享一下通过rkmedia的api获取RV1126的VI视频流,但是具体的已经在第一个推流项目已经说了。)、第二个参数:通道号ID(这里填0,因为RGA模块创建的通道号是0)、第三个参数:VI码流的缓冲数据。死循环获取VI码流的数据,这里的模块号是RK_ID_VI,通道号是CHN_ID:0,第三个参数:-1阻塞获取。总结一下,起始就是做了一下数据转发,获取到vi数据,然后转发到rga模块。的API把每一帧VI数据发送到RGA模块,第一个参数:模块号ID(获取了每一帧的VI数据后,则调用。

2025-03-06 16:00:58 1025

原创 推流项目的ffmpeg配置和流程重点总结一下

整体工作流程的意义,这些步骤共同构成了 FFmpeg 推流的完整工作流,反映了音视频处理和网络传输的本质:    1.    准备阶段: 初始化环境、定义格式和目标(步骤 1-3)。    2.    连接阶段: 建立与服务器的通信(步骤 4)。    3.    传输阶段: 发送元数据和实际数据(步骤 5-6)。    4.    结束阶段: 完成传输并清理(步骤 7-8)。

2025-03-05 21:14:52 1085

原创 FFMPEG利用H264+AAC合成TS文件

我们要搞明白一个问题就是一个是时间基,一个是时间戳,时间基是代表单位,时间戳是代表,一个时间里面的格子,比如钱,1,2,3,4,5,这样是没有任何意义的,但是配合起时间基就有意义了,时间基就是美元或者rmb。当成功读取一帧数据的时候,把这个数据存放到AUDIO_QUEUE里面(这里封装的函数是。第一步就是时间转换,视频时间基转换复合流时间基 ,假设视频时间基是{1,30},取出每一个视频数据包,若video_queue不为空,则让视频的pts自增1(:时间基也称之为时间基准,它代表的是每个刻度是多少秒。

2025-03-05 00:35:20 1422

原创 RV1126摄像头本地渲染项目

本项目是重点是RV1126 多线程获取 VI码流数据CGI 显示共享内存的 RGB数据HTTP 网页格式响应视频的格式讲解CGI程序OPENV 解析 JPG 视频流HTML 网页显示 CGl的数据CGI网页通过消息队列下发拍照命令RV1126后台程序实现拍照功能boa服务器的搭建

2025-03-04 17:53:58 581

原创 rv1126解码的一些原理

但是还有一个问题, 左边发的是编码后的数据,右边拿的应该是解码后的数据,所以底层这个队列不止要存放数据,还要能解码数据,如果是编码,还要对数据编码。所以vdec的数据发到了这个rk-queue里面,所以这个队列里面就有vdec的每一帧数据,队列有了数据RK_MPI_SYS_GetMediaBuffer线程就可以使用接口获取到每一帧的vdec的数据。用解码演示,编码也是一样的。下面两个柱子就表示两个线程,左边的send_vdec_thread发的是vdec的数据,有没有想过这个数据send后会到哪里?

2025-02-22 18:42:57 453

原创 RV1126解码(5) read_vdec_thread线程

线程主要是获取每一帧VDEC解码数据,并打印出来每一帧数据的具体信息。这里需要用到的API是RK_MPI_SYS_GetMediaBuffer获取每一帧VDEC的数据,并调用。read_vdec_thread线程主要是获取每一帧VDEC解码数据,并打印出来每一帧数据的具体信息。最后面把数据打印出来就可了。这个线程的工作就完了。read_vdec_thread线程的用处。打印出我们每一帧数据的具体信息。

2025-02-22 17:24:24 243

原创 RV1126硬件解码(4)send_vdec_thread线程

RV1126硬件解码(4)send_vdec_thread线程

2025-02-22 14:36:06 796

原创 MP4封装格式

MP4封装格式

2025-02-22 02:02:00 300

原创 RV1126解码—ffmpeg_read_thread线程的讲解

解码av_read_frame的工作原理

2025-02-20 00:44:11 586

原创 RV1126画面质量六:码率控制改善画面质量

码率控制改善画面质量

2025-02-19 15:01:31 337

原创 RV1126解码模块初始化(二)

解码器的流模式和帧模式。

2025-02-19 00:16:28 754

原创 RV1126解码(1)

rv1126解码模块

2025-02-13 22:23:55 505

原创 流媒体传输的基本原理

• 上溢(Buffer Overflow):相反,如果网络传输速度过快,数据填充缓冲区的速度超过了播放速度,可能会导致缓冲区溢出。• 下溢(Buffer Underflow):当网络传输速度慢于数据播放速度时,缓冲区可能耗尽数据,导致播放暂停或画面不流畅。• 实时播放:流媒体通过网络传输多媒体数据(如音频、视频),允许用户在数据传输过程中就开始播放,而不是等到所有数据都下载完毕。• 缓冲区管理:数据以堆栈的方式进出缓冲区,确保在播放过程中有足够的数据可用,以避免播放中断。

2025-02-09 15:03:17 223

原创 流媒体缓存管理策略

原理:使用多级缓存系统,如内存缓存和磁盘缓存,根据访问频率或数据大小将数据放在不同的层级。原理:结合了LRU和LFU的优点,自适应调整缓存策略以应对不同的访问模式。原理:根据数据的粒度进行缓存管理,比如缓存单个用户的数据而不是整个页面。适用场景:当数据访问模式有明显的热点时,这种方法可以提高缓存命中率。被动失效:当数据请求时发现缓存项已过期或失效,更新或删除缓存。原理:当缓存满了,需要腾出空间时,删除最近最少使用的条目。原理:根据使用频率删除缓存项,使用频率最低的项优先被移除。

2025-02-07 23:54:19 315

原创 流式传输的实现为什么需要缓存?

缓存虽然是实现流式传输的重要组成部分,但它也带来了挑战,比如如何管理缓存以避免占用过多的内存或存储空间,以及在网络条件不佳时如何有效地利用缓存来维持播放的流畅性。客户端会监控缓存的状态,根据当前播放位置、网络条件和缓存内容来决定何时停止或恢复数据的下载。如果网络变慢,缓存可以支持播放继续进行,直到缓存的数据耗尽或网络恢复。流畅播放:缓存提供了一个小的数据池,允许播放内容在网络数据传输过程中保持流畅,而不被网络延迟或抖动所打断。固定大小缓存:缓存有固定的存储空间,当新的数据到达时,旧的数据会被删除。

2025-02-07 23:49:51 444

原创 流媒体技术原理

每个段可以有不同的质量级别,这使得客户端可以根据网络状态选择最适合的质量进行播放。这确保了在网络条件变化时视频的流畅性。这包括空间压缩(去除相邻像素的冗余)和时间压缩(利用视频帧之间的相似性)。HTTP Live Streaming (HLS):基于HTTP的流媒体传输协议,将媒体文件分割成小段,允许动态调整质量。RTP(Real-time Transport Protocol):在实时传输中,用于传输实际的媒体数据。通过全球分布的服务器网络,将视频内容缓存到离用户最近的地理位置,减少延迟,提高传输效率。

2025-02-07 23:40:35 259

原创 音视频流媒体中的实 时 流式 传 输 (Realtime (progressive streaming)。streaming )和 顺 序 流式 传 输

质量自适应:可以通过HTTP Live Streaming(HLS)或Dynamic Adaptive Streaming over HTTP(DASH)等技术,根据网络状况动态调整视频质量。定义:实时流式传输是指视频内容在被创建或捕获的同时进行传输。延迟:实时流式传输延迟较低,通常在几秒到几十秒,而顺序流式传输则可能有更高的初始缓冲时间,但播放后延迟较小。内容准备:实时流式传输的内容是即时生成的,顺序流式传输的内容则是预先准备好的。技术要求:需要较高的网络带宽和低延迟的网络连接,以保证流畅的观看体验。

2025-02-07 23:16:28 521

空空如也

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

TA关注的人

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