- 博客(52)
- 资源 (1)
- 收藏
- 关注
原创 CPU-GPU预处理流程的核心和优化关键 &格式流转
摘要 本文提出了一种高效的视频处理流程,重点优化GPU预处理环节。核心流程包括:FFmpeg CPU解码(YUV)→GPU上传(BGR HWC)→自定义CUDA内核融合处理(RGB CHW)→TensorRT推理。关键创新在于设计了一个全能CUDA内核,一次性完成尺寸调整、颜色空间转换(BGR→RGB)、归一化和数据布局转换(HWC→CHW),显著减少内存拷贝和内核启动开销。整个处理过程形成GPU闭环,仅需一次内核调用即可生成符合TensorRT要求的输入格式,极大提升了处理效率。后续将实现VideoPro
2025-09-19 00:01:14
792
原创 NVIDIA Nsight Systems性能分析工具
本文详细介绍了如何安装和使用NVIDIA Nsight Systems进行GPU性能分析,重点包括: 安装Nsight Systems的步骤和系统要求 使用nsys-ui和命令行工具进行性能分析的方法 验证程序是否调用GPU的实用技巧(nvidia-smi监控、代码检查) 常见Profiling配置问题排查(正确使用--trace cuda参数) GPU驱动和CUDA环境检查指南 在Nsight Systems界面中定位GPU相关信息的方法 文章提供了从基础安装到高级分析的完整流程,帮助开发者有效诊断GPU
2025-08-23 23:05:52
1707
原创 命令行解析库 `cxxopts`,解析参数示例代码
input.mp4 -o output.mp4 的功能并输出背景虚化的视频,我们需要对代码进行模块化的修改和扩充。✦ 好的,这是一个非常典型的用例。为了实现 your_program -i。
2025-08-16 16:10:41
332
原创 usr/bin/ld链接报错undefined reference `av_frame_free(AVFrame**)‘等ffmpeg库报错
摘要:CMake配置ffmpeg时出现链接错误,主要原因是库链接顺序不当,应调整为avformat→avcodec→swscale→avutil的顺序。此外,ffmpeg头文件(如avformat.h等)需在头文件中用extern "C"包裹声明,不能直接放在cpp文件中。这些改动可解决undefined reference错误。
2025-08-04 14:05:43
244
原创 FFmpegHandler 功能解析,C语言程序化设计与C++面向对象设计的核心差异
FFmpegHandler 功能解析摘要 FFmpegHandler类实现了视频文件的解码处理流程,包含两个核心函数: openVideo():一次性初始化函数,完成文件打开、流信息探测、解码器准备等工作。类比为播放前的准备工作(放入影碟、识别格式、激活解码器)。 readAVFrame():循环调用的帧解码函数,通过"读包-送包-收帧"流程持续输出解码后的视频帧。类比为播放过程中的逐帧解码。 在面向对象设计上,FFmpegHandler对象本身充当了类似C语言FILE*的角色,内部维护
2025-07-31 16:30:32
917
原创 WSL2 CUDA Toolkit 安装与 Docker 关系指南
WSL2 CUDA Toolkit 安装与Docker关系指南 核心概念 NVIDIA驱动:使WSL2与GPU通信,通过nvidia-smi验证 CUDA Toolkit:包含开发工具,通过nvcc --version验证 nvidia-smi成功≠CUDA Toolkit已安装 安装步骤 下载GPG密钥 移动密钥到指定目录 添加NVIDIA软件源 更新软件包列表 安装CUDA Toolkit 验证方法 nvcc --version验证CUDA Toolkit nvidia-smi验证驱动 WSL与Dock
2025-07-30 13:55:00
869
原创 远程ssh关联gitee仓库管理
本文介绍了Git仓库初始化和远程连接的基本操作:1.使用git init初始化本地仓库;2.通过git remote add origin添加远程仓库地址;3.参考官方教程生成SSH公钥;4.使用git push -u origin "master"将主分支推送到远程。这些命令是Git版本控制的基础操作,适用于项目初始部署场景。
2025-07-27 16:30:53
105
原创 下载webrtc M114版本googlesource源-Docker容器配置X11映射
本文介绍了在Docker容器中搭建WebRTC M114编译环境的完整流程。首先创建Ubuntu 22.04容器并挂载Windows目录,安装编译所需依赖。随后配置depot_tools环境,下载指定版本WebRTC源码,并详细说明了Debug和Default两种模式的编译方法。最后补充了GUI环境配置,包括X11服务设置和图形界面测试。整个过程涉及容器管理、环境配置、源码同步和编译优化等关键步骤,为WebRTC开发提供了完整的容器化解决方案。
2025-07-16 13:53:28
410
原创 gemini 连接Google账户超时,设置代理
摘要:本文介绍了在本地安装Node.js和Gemini CLI工具的步骤。首先需从官网下载Node.js和VS2022。安装后通过npm全局安装Gemini CLI客户端。若遇到Google账户连接超时问题,可设置HTTP/HTTPS代理。最后使用gemini命令完成Google账户认证登录。全文简明扼要地说明了Gemini开发环境的配置流程。
2025-07-14 13:11:38
502
原创 C++一面音视频经验
循环编码音频采样数据->音频压缩数据 ———>AVFrame转化为AVPacket。防竞争字节:为了区分 0 0 0 1,它采用0 0 0 0x3 1作为区分。9.将编码后的视频码流写入文件 ——>AVPacket转化为AVFormat函数。8.av_read_frame :将avPacket数据转换为avFrame数据。表示NALU长度的前缀,不定长用4、2、1来存储这个NALU的长度。2.创建AVFormatContext的对象上下文。PTS: 显示时间戳,表示解码后显示的时间。
2024-09-03 15:21:43
522
1
原创 什么时候用进程或者线程呢?
进程是指在系统中正在运行的一个应用程序;程序一旦运行就是进程。进程可以认为是程序执行时的一个实例。进程是系统进行资源分配的独立实体, 且每个进程拥有独立的地址空间。一个进程无法直接访问另一个进程的变量和数据结构, 如果希望让一个进程访问另一个进程的资源,需要使用进程间通信,比如:管道,文件,消息队列,共享内存, 套接字等。一个进程可以拥有多个线程,每个线程使用其所属进程的栈空间。
2024-07-25 17:20:49
1361
1
原创 windows qt编译报错 无法打开包括文件: “EGL/egl.h”: No such file or directory
windowsmingw32qt creatorQtAV推荐ffmpeg依赖包QT5.14.2如果出现:无法打开包括文件: “EGL/egl.h”: No such file or directory可能是Qt6的问题.在QT5上安装。可以下载官方推荐的FFmpeg依赖包:https://sourceforge.net/projects/qtav/files/depends/QtAV-depends-windows-x86%2Bx64.7z/download。
2024-07-17 21:00:41
924
原创 音视频编解码常用知识点
实现HTTP Live Streaming直播,需要研究并实现以下技术关键点 >* 采集视频源和音频源的数据 >* 对原始数据进行H264编码和AAC编码 >* 视频和音频数据封装为MPEG-TS包 (连续的、很短时长的媒体文件)>* HLS分段生成策略及m3u8索引文件 >* HTTP传输协议。SIP会话传输一些简单的经过报文的实时传输协议流,RTP/RTCP本身才是语音或视频的载体。例如,采用RTMP协议传输的数据,经过解协议操作后,输出FLV格式的数据。RTSP 的语法和 HTTP 的语法基本相同。
2024-06-25 15:46:15
1628
原创 SQL常见语句
kill 掉这些线程(同时观察 CPU 使用率是否下降),等进行相应的调整(比如说加索引、改 SQL、改内存参数)之后,再重新跑这些 SQL。SHOW PROCESSLIST 查看正在运行的线程,是不是有消耗资源的 SQL 在运行,找出其中消耗高的 SQL,看看执行计划是否准确。COUNT(column):返回列中非空值的数量。AVG(column):返回列的平均值。MIN(column):返回列的最小值。MAX(column):返回列的最大值。SUM(column):返回列的总和。
2024-05-24 17:24:06
274
原创 如何使用 C++ 标准模板库(STL)中的容器和算法?
C++标准模板库(STL)是C++语言的一个组成部分,提供了通用的、模块化的、可重用的组件,用于处理数据结构和算法。STL包含容器、迭代器、算法和分配器四个主要部分。
2024-05-08 16:54:19
342
原创 请解释一下 C++ 中的 Rvalue 和 Lvalue
左值可以被取地址(&)操作符获取其内存地址,右值是指那些不具有内存地址或者其地址是临时的、不需要被赋值的表达式
2024-05-07 18:52:19
495
原创 描述一下 C++ 中的模板(template)和泛型编程。
C++ 中的模板是一种支持泛型编程的机制。泛型编程是一种编程范式,它允许程序员编写出可以处理多种数据类型的代码,而不必在编译时就确定具体的数据类型。这种编程方式提供了灵活性和可重用性,因为编写的代码可以用于多种不同的数据类型,而不需要为每种数据类型编写不同的代码。
2024-05-07 18:33:08
350
原创 纯虚函数(pure virtual function)和抽象类(abstract class)有什么区别?
一个类如果包含至少一个纯虚函数,它就成为了一个抽象类。一个抽象类可以包含多个纯虚函数,也可以包含没有被声明为虚的普通成员函数。
2024-05-07 18:29:28
424
深入理解计算机系统答案(超高清电子版).pdf
2015-12-20
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅