自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 linux下流媒体压力测试工具的使用

将srs-bench/3rdparty/http-parser-2.1.zip文件里的Makefile里的CFLAGS += -Wall -Wextra -Werror改为CFLAGS += -Wall -Wextra。因为领导要求做linux的推拉流时服务器压力测试,于是在网上找了找。搜索# build objs/sb_http_load,将该行以下的所有内容用如下内容替换。该代码仓库有详细的使用说明,而且可以在issues中找到可能会遇到的问题的解决办法。objs/里面的程序就是我们需要的。

2023-11-22 14:38:55 738

原创 十二、h.264解码

【代码】十二、h.264解码。

2023-11-22 14:36:38 569

原创 十二、h.264解码

【代码】十二、h.264解码。

2023-11-22 14:33:36 1145

原创 十一、h.264编码

使用H.264编码对YUV视频进行压缩。

2023-11-22 14:32:34 629

原创 十、sdl显示yuv图片

SDL中内置加载BMP的API,使用起来会更加简单,便于初学者学习使用SDL。显示yuv图片需要知道yuv图片的尺寸和采样格式。

2023-11-22 14:30:42 504

原创 九、sdl显示bmp图片

SDL中内置加载BMP的API,使用起来会更加简单,便于初学者学习使用SDL。

2023-11-22 14:28:12 448

原创 八、ffmpeg录制视频为yuv文件

若要进行色度二次采样,则采样格式有三种,A:B:C,A表示一块A*2个像素的概念区域,一般都是4。B表示第1行的色度采样数目。:如果在色度分量上进行(相对亮度分量)较低分辨率的采样,也就是存储较多的亮度细节、较少的色度细节,这样就可以在不明显降低画面质量的同时减小图像的体积。采样完成之后,还要考虑YUV三个分量的存储方式(每个Y、U、V分别占一个字节,完整的YUV理论上是3字节,24位)录制时的输出信息如下,即录制的视频信息为,分辨率:1280x720,像素格式:yuvj422p,帧率:30fps。

2023-11-22 14:27:12 784

原创 七、通过libfdk_aac编解码器实现aac音频和pcm的编解码

AAC编码是MP3格式的后继产品,通常在相同的比特率下可以获得比MP3更高的声音质量,是iPhone、iPod、iPad、iTunes的标准音频格式。由于libfdk_aac最好,但是网上下载好的ffmpeg编译好的版本不带libfdk_aac编解码器。自己手动编译FFmpeg源码,将libfdk_aac集成到FFmpeg中,这种方式最好,但在windows环境下较为麻烦。pcm与aac的转换需要AAC编解码器(如下列举几种常用的AAC编解码器)fdk-aac对需要编解码的pcm音频有一定的格式要求。

2023-11-22 14:25:47 1449

原创 windows下msys2编译64位的ffmpeg源码

目前遇到过两次需求,需要编译ffmpeg源码。网上下载的编译好的源码里面可能不全,很多时候需要自行编译源码。本文介绍自行编译ffmpeg64位源码(32位通过相似的方式为编译成功,不知道原因)

2023-05-05 09:52:58 902 1

原创 qt creator自动生成函数注释

然后根据自己的实际情况填写相应的注释,但对于追求美观的我来说,注释的前面空行不是我想要的。这样的话,一方面是让我自己养成方法注释的习惯,另一方面是熟悉ffmpeg注释的风格。这就需要自定义模板,下面是我设置的模板,你也可以在这个基础上二次修改。qtcreator中本身有默认的方法注释,直接在方法名上打global example就能生产,但生成的效果不太行。点击添加,左侧我填的触发指令是head(注意上方的组是text),下方加入自己的模板,点击ok。

2023-04-26 10:38:55 636

原创 qt通过QStorageInfo类获取挂载磁盘信息

qt上可以通过QStorageInfo类获取挂载磁盘的信息(本质上所有能用的磁盘都是挂载到电脑上的,所以可以获取到所有磁盘信息)除了以上的方法,qt官方文档都可以查得到,用起来也比较简单。

2023-04-21 11:18:28 1146

原创 qt中拷贝文件夹

qt中没有直接拷贝文件夹的方法,拷贝文件夹的原理的本质就利用QFile::copy()递归拷贝文件的方法。以下方法经过测试,可直接使用#include <QDir>#include <QFileInfoList> /*********************************************************************/ /*功能:拷贝文件夹 qCopyDirectory -- 拷贝目录 fromDir : 源目录

2023-03-15 09:16:01 1638

原创 六、ffmpeg录制音频为wav文件

ffmpeg录制音频为wav文件,思路和录制成pcm相同,关键思路是在打开文件之初,先加上wav文件头,后续再写入音频数据的二进制信息即可。.h文件中包含pcmtowavthread.h是为了使用其内部的WAVHeader结构体。完整代码:(我这里是将功能封装在线程里,其中还考虑了线程的关闭问题)在主函数的构造方法中还要初始化一下时间。WAVHeader结构体如下。

2022-12-14 15:59:31 1170

原创 五、使用ffmpeg对音频重采样

有些音频编码器对输入的原始PCM数据是有特定参数要求的,比如要求必须是44100_s16le_2。但是你提供的PCM参数可能是48000_f32le_1。这个时候就需要先将48000_f32le_1转换成44100_s16le_2,然后再使用音频编码器对转换后的PCM进行编码。通过下面的命令行可以将44100_s16le_2转换成48000_f32le_1。完整代码:(我这里是将功能封装在线程里,其中还考虑了线程的关闭问题)重采样的主要思路是看创建重采样上下文的方法。

2022-12-14 10:59:17 771

原创 四、qt中通过sdl播放wav视频

这里表示SDL_LoadWAV被定义为了SDL_LoadWAV_RW(即SDL_LoadWAV_RW和SDL_LoadWAV是一样的)代码中播放wav视频和播放pcm的思路类似,但首先需要解析wav的头文件。完整代码:(我这里是将功能封装在线程里,其中还考虑了线程的关闭问题)关于SDL_LoadWAV_RW的方法介绍如下。播放wav音频,sdl提供了封装好的方法。

2022-12-13 20:40:56 623

原创 三、pcm音频转wav

具体功能是先将文件头的十六进制数据写入文件(需要记录下变化的地方,等待读取pcm的数据之后才能确定),然后将pcm中的十六进制数据写入wav文件。首先分析wav文件格式(wav的本质是在pcm数据前加上文件头),即在pcm的十六进制数据前加上文件头(文件头也是十六进制数据,但有些内容是固定的,有些内容是变化的)(以下是wav文件头的格式,第二张图为文件头十六进制存储的样子,一个十六进制为一个字节,一个ASCII编码占一个字节,文件头总长为44字节)pcm和wav文件大小对比,wav多了44字节的文件头。

2022-12-13 19:55:08 4300

原创 qt读写配置文件和注册表

读写配置文件(注意linux文件路径和windows文件路径不一样)qt读写配置文件和注册表。

2022-12-08 19:11:03 553

原创 git常用命令(linux和windows通用)

指当前用户的根目录,.bashrc文件是当前用户的配置文件#用于输出git提交日志#用于输出当前目录所有文件及基本信息最后source ~/.bashrc更新一下配置文件git initgit add . git commit - m "提交注释" #查看提交状态git status#查看提交日志,自定义git - log,git log -- pretty = oneline -- all -- graph -- abbrev - commitgit log。

2022-12-08 19:06:25 734

原创 Qt使用条件编译应对不同平台语句的编译

qt在考虑跨平台编译时,例如路径,windows平台和linux平台路径就不同,这时候就需要使用条件编译。同理,根据#ifdef后面的宏我们还可以进行debug和非debug的条件编译。

2022-11-29 11:00:37 241

原创 qt通过QComboBox实现文本框自动记忆、补全和下拉选项填写

通过QStringList来存储名字信息,下拉列表中默认显示QStringList中第一个名字,当选择QStringList中已存的一个名字时,(在触发事件触发后)会将这个名字放到QStringList的开头(这样QStringList中记录的顺序其实就是使用过的顺序了),当在文本框中输入新的名字时,会将新名字添加到QStringList开头。QQ登录界面的基本功能为:当点击下拉框,会出现曾经登录过的有效的账号密码,且排在前面的为最新登录过的账号,当输入曾经登录过的账号的前几位时,会自动补全。...

2022-08-17 16:42:58 4175 2

原创 c++json解析-jsoncpp的使用

c++中解析json大多数都用jsoncpp这个库,但jsoncpp下载下来的一堆文件看不懂,实际上在项目中使用的话需要二次编译。我希望编译出来的文件能简单且在windows和linux上同时使用,但网上并没有对此作出详细介绍,自己总结了一下,并简单封装了json解析使用json有两种方法,一种是直接使用json的.cpp和.h文件,另一种是编译出静态链接库,在项目中使用静态库。......

2022-08-01 16:51:51 1902

原创 详解visual studio 2015在局域网中远程调试程序

工作的时候调试同事的代码,本机上没有程序的运行环境,需要程序在服务器上跑,但服务器上没有IDE,不过visualstudio可以将程序传到服务器上,然后远程debug。如果你远程调试的时候出现下面这两种情况(即断点样式不对,且没有变量列表),大概率是因为你的代码和生成的exe不匹配,重新生成exe和pdb文件上传到服务器。远程调试需要远程调试助手,远程调试助手在安装vs的时候也会自动安装,在vs的安装目录中,搜索RemoteDebugger,应该就会有。点击工具->选项->按图中框起来的设置。...

2022-07-28 17:38:36 566

原创 详解windows下qt中使用git

在代码管理过程中,我们基本都要使用git,但我在使用qt的过程中,并没有找到特别详细的配置说明,所以特地写一篇博客记录一下,在本篇博客中,你也可以了解到git的基本原理和用法。本篇讲解在windows端,如何在qt中使用git,linux端请看链接环境首先说一下思路(linux和windows思路相同)下载安装git登录git(git准备完毕)注册一个github账号(注册账号的过程不演示了,这个比较简单)创建一个仓库(远程仓库准备完毕)通过git生成ssh公钥,将绑定到github。......

2022-07-28 11:43:24 3606

原创 详解linux下qt中使用git

在代码管理过程中,我们基本都要使用git,但我在使用qt的过程中,并没有找到特别详细的配置说明,所以特地写一篇博客记录一下,在本篇博客中,你也可以了解到git的基本原理和用法。本篇讲解在linux端,如何在qt中使用git,windows端请看链接链接环境首先说一下思路(linux和windows思路相同)下载安装git登录git(git准备完毕)注册一个github账号(注册账号的过程不演示了,这个比较简单)创建一个仓库(远程仓库准备完毕)............

2022-07-25 15:29:20 1603

原创 MFC 使用控制台打印程序信息

在MFC编程中,代码的调试一直不太直观。搞一个 MessageBox 来打印信息查看程序是否执行或执行是否有误,又或者是在程序中设断点都有不太方便的地方,特别是在需要获得多个信息的情况下更是不便。此外,MessageBox 在涉及到打印非 CString 格式的信息时还要用 CString 的 Format 函数进行格式转换,又给调试带来进一步的麻烦。综上,在MFC程序的调试阶段加入像WIN32控制台程序那样的控制台来打印程序信息显得直观又方便易用。下面,是在MFC程序中添加控制台程序的方法:在对话框程序的

2022-07-13 08:39:58 1378

原创 详解安装msdn 2015及其注意事项

最近跟着公司要求,需要使用mfc(微软自带的c++图形界面框架),感觉和qt差别很大。在使用过程中,很多类库找不到详细的说明,msdn是mfc的离线官方说明文档,就像qt自带的说明文档一样。说明文档在自学框架时尤其重要,因为在visual studio中直接按F1可以访问在线文档,但在线访问我觉得很不方便,特地找到了离线文档msdn,使用起来很多方便。准备环境:按理说,这两个应该用同一版本,我不确定不同版本行不行内含msdn2015和mfc中文说明文档(mfc中文说明文档不是很好用,查的时候需要加上类名,并

2022-07-12 19:22:53 639

原创 二、qt中通过sdl播放pcm视频

在qt中实现ffmpeg通过外接设备录制音频,因c语言相关代码执行步骤较为复杂,于是做此记录。ffmpeg系列博客会陆续记录下来。测试环境:注意:播放音频在命令行使用的是ffplay,其底层是通过ffmpeg和sdl实现音频的播放,故代码中需要使用sdl库qt中实现使用sdl播放视频在使用sdl前,需要配置导入库(不需要配置sdl的环境变量),这里不多介绍sdl播放pcm视频思路:1、导入库(.pro文件中导入库的时候需要多加一个DEFINES)2、导入头文件3、初始化子系统sdl通过不同的子系统实现对

2022-06-20 14:19:47 636

原创 一、ffmpeg录制音频为pcm文件

在qt中实现ffmpeg通过外接设备录制音频,因c语言相关代码执行步骤较为复杂,于是做此记录。ffmpeg系列博客会陆续记录下来。测试环境:使用ffmpeg首先需要下载ffmpeg相关库,并将其配置到环境变量和导入编译器中,这里下载shared版本(这样既有ffmpeg的可执行程序,又有ffmpoeg库文件)导入环境变量只需将D:\1c++\ffmpeg-N-103922-g3ee4502753-win64-lgpl-shared\bin\路径添加到环境变量即可,这里视自己的路径而定,路径不能有中文(这里不

2022-06-20 14:15:54 1461

原创 qt中Qthread线程的使用以及安全关闭

以前第一次使用线程的时候总是无法实现自己想要的效果,且为解决线程安全关闭的问题,今天看到一位老师讲了关于线程的使用方法,理解虽然还不是特别深刻,但已初步总结出相关注意事项。环境:使用线程思路:先列举重要代码:(记得类要继承QThread)......

2022-06-14 15:30:16 6913 1

原创 qt实现将相关信息输出到日志文件

在开发工作中,程序在使用时,出现错误问题,对于用户来说,查看日志信息,来初步排查问题是很有必要的注意:我这里是windows环境的写法,linux的路径和命令有些不同,linux环境的同学不可直接照搬直接上代码......

2022-06-13 21:08:44 1492

原创 qt批量操作控件,并设置信号槽

qt中很多情况都需要对控件进行批量操作,又想对容器进行单独操作。如果用代码创建控件,则无法单独拿到控件的对象名,如果在ui文件中拖动创建控件,则无法批量操作。网上查了一些资料,感觉都写的非常繁琐,于是自己尝试写了一下,主要有两种思路情况一、代码创建控件,对控件批量操作和单独操作,并设置信号槽思路:使用QVector模板类,将控件添加到容器代码如下:你可以使用QVector容器,也可以使用QList列表,使用方法大致一样。在设置信号槽的时候,我们也可以轻易获取该按钮的序号,然后让其跳转到特定的槽。效果如下:

2022-06-07 20:08:28 1960 5

原创 qt绘画事件-设置背景图片

设置widget的背景图片,并在背景图片上放置别的图片直接上代码:头文件cpp文件:paintEvent方法是qt原本就有的方法,调用绘画事件,只需重写该方法,在cpp文件中也无需主动调用翻译:效果图:注意图片的路径是我们需要注意的问题,因为qt采用影子构建的方法,可执行程序的位置和源文件不在同一个位置。图片的相对路径是根据可执行文件而定的,…/是可执行程序的当前路径在右键图片,可快速复制图片路径不会添加资源文件的同学,可查看这篇文章链接:qt添加资源文件码字不易,如果这篇博客对你有帮助,麻烦点赞收藏,

2022-06-06 15:52:05 641

原创 qt中获取当前目录

qt中获取当前目录需要注意几个坑,以linux环境为例当前路径有两种可能先上代码:

2022-06-02 11:53:41 9468

原创 linux安装qt(详解每个步骤和遇到的问题,经过多系统测试)

前言准备工作:linux操作系统(ubuntu20.0.4演示,centos7,8,9操作思路一致)qt安装包我这里使用ubuntu20.0.4和qt-opensource-linux-x64-5.12.12.run,即qt5.12.12做演示。经过测试发现,qt的版本和centosb版本必须互相兼容,建议qt5.9装在centos7上,qt5.12装在ubuntu20.0.4上。目前发现,ubuntu普通用户安装qt失败,qt5.12在centos7上安装成功,在centos8、9上闪退,分别

2022-05-26 09:44:06 19156 7

原创 linux修改gcc和g++的版本(以gcc-8为例)

前言所需环境linux操作系统(ubuntu20.0.4为例,centos操作完全一致)安装gcc-8、g++ -8具体步骤因为qt代码是由gcc和g++编译的,不一致可能会导致运行不了以gcc-8为例,下载自己需要的版本(版本名,基本就是gcc-几,如果实在不确定版本名就先去网上搜一下)sudo apt-get install gcc-8去/usr/bin/目录下看到一些gcc开头的文件,其中有一个是gcc,他是个链接文件,链接到当前版本的gcc文件(例如我的电脑就是gcc-4.8

2022-05-26 09:20:52 4253

原创 ubuntu20.0.4开启root方法

前言注意:ubuntu默认不允许root直接登陆,虽然从安全性进行考虑,但对新手来说,权限管理完全把握不住,所以手动开启root。开启root并不难,难的是不知道具体是哪个文件。但网上很多写教程的,根本不管版本问题,不同版本的系统文件名也不一样。具体步骤以普通用户登录系统,创建root用户的密码(装完系统root默认是没有密码的)sudo passwd root下载vim工具(不下vim也可以,将下面的vim命令换成gedit即可)sudo apt updateapt install

2022-05-25 14:49:11 3997 4

原创 qt解决每次修改完ui文件都要重新构建的问题

前言qt creator在使用上有许多体验很差的地方,qt designer每次修改完ui文件都要重新构建后,代码中才能识别ui文件里的内容,体验感很差采用动态加载UI文件并生成界面实现方法:int main(int argc, char *argv[]){ QApplication a(argc, argv);// MainWindow w;// w.show(); QUiLoader loader; QFile file("mainwindow.ui"

2022-05-19 19:03:21 3974

原创 qt设置加载界面的几种方法

前言介绍两种设置加载界面的方法静态图片展示 QSplashScreen splash(QPixmap(":/rec/lancoo7.png")); splash.setDisabled(true);//进制用户的输入事件相应 splash.show(); delayMSec(2000); //非阻塞延迟2s,模拟复杂程序 splash.close();delaydelayMSec函数为自己封装的方法void MainWindow::delay

2022-05-19 17:10:27 1919

原创 centos8在菜单栏添加程序快捷启动方式

前言centos8和9桌面默认是不支持放图标的,需要通过gnome-tweaks工具中的一个扩展才能设置,安装比较麻烦,可以通过下面两种方式设置快捷启动图标方式一、vim /usr/share/applications/ServerDeployment.desktop,在文件中写入[Desktop Entry] Version=1.0 Name=ServerDeployment GenericName=ServerDeployment Comment=ServerDeployment

2022-05-19 16:28:53 1415

原创 QProcess执行linux命令行的命令(详解各种情况可能存在的问题)

QProcess执行linux命令行的命令(详解各种情况可能存在的问题)

2022-05-19 15:47:03 11527 14

空空如也

空空如也

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

TA关注的人

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