自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

周小哥的博客

独学而无友,则孤陋而寡闻

  • 博客(32)
  • 收藏
  • 关注

原创 Linux基于V4L2的视频捕捉

linux环境使用V4l2实现摄像头捕捉,界面流畅播放并可以保存图片到本地。

2024-06-01 18:53:24 434

原创 Linux基于ALSA的声音录制

linux环境使用ALSA实现声音录制,保存pcm到本地文件。

2024-06-01 18:39:18 302

原创 Qt + HTTP 线程交互类封装

QT的HTTP模块封装的交互类,线程运行。使用时添加自己的业务逻辑即可。

2024-03-19 18:00:37 911

原创 Qt线程封装FFmpeg播放器类

精简的代码实现了播放、暂停、停止、快进、快退、进度跳转、倍速播放功能。直接放代码,方便后期复制使用。

2023-12-28 15:57:44 997

原创 FFmpeg视频缩略图与图像转换接口分析

FFmpeg制作视频缩略图思路以及图像转换接口的具体分析,这里直接上代码。

2023-11-30 22:21:07 700

原创 简单实用的队列数据存储-模板类实现

开发中经常线程使用队列结构存储某种格式的一个数据,然后另一线程读取,也就是经典的生产消费模型,这里做下模板抽象使得格式兼容性更好,成为小轮子拿来便用提升效率。

2023-11-06 21:38:27 151

原创 C++11智能指针的基本原理及使用

智能指针是一个类,用来存储指向动态分配对象的指针,负责自动释放动态分配的对象,防止堆内存泄漏。动态分配的资源,交给一个类对象去管理,当类对象声明周期结束时,自动调用析构函数释放资源。

2023-08-03 10:08:15 180

原创 记录 Libevent的常用功能示例

这篇博文主要以尽量简练的代码实现TcpServer服务器功能,代码覆盖大部分的常用函数接口。通过代码能对Libevent的整体框架,函数使用有直观的理解,配置好Libevent库的前提下,下方代码可直接复制运行。

2023-07-28 10:54:29 165

原创 记录 C++11的线程池实现(支持不定参任务)

基于C++11标准实现的线程池,十分通用。支持不定参函数作为任务,核心功能已实现,细节功能可自行完善。原理不在赘述直接看代码。

2023-07-26 15:59:34 244

原创 Qt 全局信号转发单例类

Qt项目开发,信号槽是必然使用到的。简单项目直接绑定对象信号传递没问题,但项目稍具规模对象父子关系变多,那么信号的传递必然要跨越多层,需要多层连续转发,这种多层传递是可以使用,原理上也没有任何问题,但是增大了代码复杂度也容易遗漏造成逻辑错误。这时可以考虑引入全局信号转发类优化代码,优雅的解决此问题。

2023-06-29 10:07:46 1140

原创 记录 FFmpeg实现文件剪切、合并、BGM添加

代码实现了对原视频文件添加BGM、媒体文件按时间剪切、合并多个媒体文件的功能,可直接复制使用

2023-06-16 11:33:55 955

原创 记录 FFmpeg开发常用功能封装

记录下个人在开发中使用到的FFmpeg常用功能,避免相同功能代码的重复编写,使用时直接复制提升效率。由于音视频处理的场景众多,无法编写完全通用的方法接口,可能需根据实际场景进行一定的修改,本文章中的代码也将持续更新优化。

2023-05-15 10:57:37 503 1

原创 记录 开发中AVPacket的常见处理

记录下开发中常见的AVPacket操作,方便直接复制使用。

2023-05-08 11:39:50 1377 3

原创 记录 Qt+ffmpeg编码麦克风音频数据

记录一下Qt环境捕捉麦克风原始pcm数据,通过ffmpeg编程成AAC音频的核心代码。此部分代码摘抄自个人的RTP实时音视频传输项目,实现了子线程采集pcm并编码为AVPacket的功能。

2023-05-08 09:40:35 873 1

原创 记录 音、视频输出类封装

本文记录下自己封装好的音频视频输出类,直接实例化类,先设置对应的音视频参数,之后调用接口传入解码后音、视频数据即可播放。封装类主要以 Qt + FFmpeg + SDL 进行设计。

2023-03-27 10:56:26 431

原创 记录 宏定义日志输出

宏定义方式的日志输出,代码直接定位,非常简单实用。

2023-02-01 11:11:27 259

原创 记录 Reactor模型的基本实现 单线程

Linux环境使用epoll实现基本的Reactor单线程模型,主要用来记录代码思路并实现基本功能,不做复杂逻辑。

2022-12-19 14:11:12 187

原创 记录 FFmpeg生成本地JPG图片

开发中有视频播放中抓拍或截屏等相关需求,需要将视频中的某一帧图片保存到本地,一般为jpg格式图片。常用的有libjpeg这个库,但会引入更多三方库增加复杂性。既然用ffmpeg做了音视频解析播放,还是用ffmpeg的方式实现抓图保存。实现方式还是固定的ffmpeg编码流程,并不复杂,看代码注释即可。已经经过多次测试,一秒抓拍10张以内的1080P的图片效果还是不错的,可以根据自己需求灵活修改使用。

2022-11-10 10:03:59 2215

原创 C++11 chrono的基本使用

C++11增加了不少优秀的新特性,这里记录下常用的chrono时间相关的操作。

2022-11-09 11:53:29 547

原创 记录 SDL硬件渲染(AVFrame)

记录一下SDL方式来渲染的图片的操作。SDL是跨平台的多媒体开发库,封装了不同系统中复杂的底层渲染细节,提供了统一的接口,极大提升了开发效率。音视频开发肯定离不开FFmpeg,而FFmpeg解码后的图像数据一般都是包含AVFrame中(yuv420p格式)。所以对于解码后的AVFrame数据,直接调用SDL相关接口即可实现图像显示,简单便捷。。

2022-10-28 16:52:12 1594

原创 记录 环形缓冲区RingBuffer实现(基于Linux内核Kfifo)

基于LInux内核的Kfifo, 修改封装为缓存区类

2022-10-14 10:33:30 926

原创 记录 队列数据缓冲区(FiFoBuffer)

实际开发中,数据缓存区的概念是必须了解的。如经典的生产、消费模型就是维持着一块数据缓存区供相关的读写操作,当然线程安全问题跑不掉。这里记录下工作中经常使用且经过长时间检验的缓冲区代码,绝大部分场景完全满足,复制直接可用。还有比较经典的环形缓存等设计方法,但很难有万能、全面的方法设计,能兼顾稳定性、简洁性、通用性就是好的设计,取长补短就好。

2022-10-10 15:22:11 1353

原创 记录 SoundTouch的配置与代码分析

基于Qt + FFmpeg实时音视频推流的项目,利用OpenCV实时美颜已经OK。计划用SoundTouch再做变声处理,本来希望男声变女声,大叔变萝莉、单车变摩托的效果,但是多次测试后梦醒了,基本不太可能,只能实现基本的变声,这种应该需要比较专业的算法处理在里面。但不可否认SoundTouch是个很好的音频处理库,实现基本的变调、变速效果还是不错的,就不勉强更理想的效果了,毕竟定位就不同,常见的音频处理需求SoundTouch可以胜任。

2022-09-29 17:55:10 725 1

原创 记录 三方库环境配置

记录开发环境下如何设置三方库,方便后期随时翻阅快速解决问题,主要是实际开发中,个人认为比较好用的方法。

2022-09-23 11:38:11 443

原创 完美解决OpenCV Mat 与 FFmpeg AVFrame 的相互转换

复制直接可用,完美解决Mat与AVFrame之间的相互转换

2022-09-13 10:21:45 4494 9

原创 完美解决QT中文乱码问题

原因分析、简单两步完美解决中文乱码问题

2022-08-22 17:35:29 11162 6

原创 FFmpeg的软、硬解码方式梳理

背景项目中使用QT开发监控软件,集成海康、宇视、大华、以及网络流设备。品牌设备使用SDK控制,网络流设备自己使用FFmpeg库来解决。如果同时解码多路播放,会出现CPU占用较高的情况。如果视频流路数更多如16路,或编码更为复杂的如H265,那么软件CPU将无力支持,软件卡顿异常崩溃也是很可能的。问题分析...

2022-05-28 11:36:53 6037 10

原创 完美解决Linux环境编译ffmpeg库

背景说明项目功能实现需要在Linux下编译出可用的FFmpeg库。FFmpeg在编译过程中是需要链接其它三方库的,比如x265 x265等,否则可能会造成功能不全(如程序接口返回找不到H264编码器错误),影响使用。编译这种三方库其实理论简单,但是细节磨人,有时候没设置好就是会有些莫名其妙的问题。我这里也参考了如零声学院分享的文档,结合自己情况总结记录了份编译说明,亲测有效,使用稳定。甚至可以按步骤无脑复制shell执行,编译一路绿灯,快速得到完美的FFmpeg库。编译整体思路就是先把依赖的库如x26

2022-03-11 16:12:31 12184 8

原创 Qt环境生成dump解决异常崩溃

背景对于经常使用C/C++的伙伴来说,程序有问题动不动就罢工崩溃的问题简直不能太熟悉了。比如本地测试通过打包发布的release版本Qt程序,在客户环境下仍可能出现异常崩溃的问题。一般通过客户反馈以及分析系统运行日志,问题基本都能够得到快速解决。但总会有些bug很难定位,这种情况下通过生成dump文件,结合winDbg程序定位问题将是一个很好的解决方式。具体操作一、生成dump文件在QtCreator中默认不支持生成dump文件,且发行版release模式不含调试信息,因此这里需要进行以下两步设置。

2022-02-15 19:01:06 6220 17

原创 windows环境编译curl

背景根据工作项目需求,在Qt程序中需要使用curl库来实现,记录下window环境的编译步骤。整体逻辑是比较清晰的,但有个别坑必须记录,纪念下,也希望帮到其他人!!具体环境目前使用的是Qt5.12.6,msvc2017-32位编译器,将编译成该环境下的静态库。考虑业务需求,这里没有使用OpenSSL。其它环境类比即可。实现步骤一、下载curl源码直接使用命令下载,git clone https://github.com/curl/curl.git 。可能提示unable to access的错误

2022-02-09 22:02:18 2578

原创 OpenCV人脸检测及识别(深度学习)

简介最近做了一个人脸检测以及识别的程序,很多的文章都有比较详细的叙述,可以自行查找。但是个人觉得大部分文章都太细致了以至于初学者无法快速领会主干(不是否认质量),是侧重点问题。所以结合我遇到了一些问题,现在做个总结。本文主要叙述实现的思路,对大的方向有了解了,剩下的结合其他详细文章自然水到渠成。环境版本:Qt 5.12.6IDE: QtCreator 4.10.2编译器:MSVC2017 64bitOpenCV版本:4.5.1OpenCV版本先上图人脸检测和人脸识别是

2021-04-17 22:25:04 4989 2

原创 Qt 自定义QMessageBox

其实就是创建一个继承QDialog的widget而已,QDialog使其有自带messageBox的属性,widget布局自己发挥。

2020-12-27 14:50:36 3703

空空如也

空空如也

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

TA关注的人

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