发布于2020/04/25 13:08
QT学习总结--音视频采集编码封装
我们在采集到音频和视频后,需要对数据进行编码压缩,我们需要三个AVFormatContext结构体,两个输入(音频,视频),一个输出。
实现步骤如下:
采集的步骤上篇文章已经详细说明了,这里着重于编码输出的过程:
1. 初始化AVFormatContext输出上下文avf...
- 3067
发布于2020/04/17 10:46
QT学习总结--音视频采集
完成直播系统的第一步是采集本地音视频数据。采集本地数据要使用到FFmpeg的libavdevice 类库,我们可以利用它来采集设备数据。
使用libavdevice 需要包含其头文件,并对其注册。
#include "libavdevice/avdevice.h"
............
.......
- 3383
发布于2020/04/11 11:52
QT学习总结--FFmpeg+SDL的播放器
我们在开发中可能会用到一些播放器,但有时现有的播放器并不能满足我们自定义的需求,这时候需要我们自己来写播放器,这会用到FFmpeg和SDL。FFmpeg是对文件进行解码的工具,SDL可以将解码后的数据转化图像,声音播放。
FFmpeg是一套可以用来记录、转换数字音频、视频,并能将其转化为流的开...
- 2911
发布于2020/04/04 12:46
QT学习总结--智能指针
在上一篇文章中提到了我有时候会忘记删除指针,导致程序异常终止的问题,qt中存在智能指针,可以帮助自动我们销毁指针。
什么是智能指针呢? 智能指针的行为类似常规指针,重要的区别是它负责自动释放所指向的对象 。qt中最常用的智能指针是 QSharedPointer 和 QScopedPointer 两个类。
QShared...
- 3106
发布于2020/04/03 17:56
QT学习总结--多线程断点下载
实现多线程下载文件,先考虑如何实现动态的添加组件和线程,在这里采用了QListWidget来做为下载项目的容器,比较的简单,将下载组件组合在一个自定义容器类DownLoadItem里,这样可以很方便的创建下载项目。
最终效果:
[图片]
先说一下组件创建遇到的问题(下载项目重叠):
...
- 2914
发布于2020/03/31 20:02
QT学习总结--实现多线程的两种方式
qt实现多线程的方式大致分为两种:
1. 直接继承自QThread,重写run函数
2. 继承QObject,通过 moveToThread将事件添加到线程中处理
第一种方式:
#include "mythread.h"
#include <QDeb...
- 2862
发布于2020/03/31 13:01
QT学习总结--断点下载
想要利用qt完成断点下载需要了解一下http请求的Range字段。 Range字段的作用是支持http协议的范围请求,用法如下:
Range:bytes=1-99 表示下载1到99字节
Range:bytes=100- 表示下载100字节之后的所有字节
 ...
- 3170
发布于2020/03/28 11:09
QT学习总结--视频播放
qt中有QMediaPlayer这个类可以实现媒体的播放。下面用QMediaPlayer类来实现avi格式的视频的播放。使用时需要pro文件中添加:QT+= multimedia
QMediaPlayer提供了一些方法接下来会用到:
1.setMedia(Qu...
- 2516
发布于2020/03/25 21:17
QT学习总结--http发送接收json数据
最近两天做了一个qt为客户端,发送json数据到java的练习,期间出现了一些问题,做个总结。
先看一下实现代码:
qt端:
实现步骤很简单:
1. 绑定 QNetworkAccessManager 的finished信号与槽函数
2. 设置请求地址
3. 设...
- 3069
发布于2020/03/23 22:09
QT学习总结--网络通信
将上次的登录改为TCP/IP通信。通信主要用到了两个类QTcpServer和QTcpsocket。QTcpServer对象负责监听是否有客户端连接此服务器,它是通过listen函数监听的。服务端和客户端通过套接字QTcpSocket进行通信。
服务端代码:
Server::Server(QObject *parent): QObject(paren...
- 2358
发布于2020/03/22 22:12
QT学习总结--文件读写
这次将上一个登录界面由Qsqlite版本改为txt版本,主要改动的地方是login函数。
bool MainWindow::login(QString userName, QString password){
// 之前的版本
// DataBase db;
// //查询密码
// QString result =...
- 2430
发布于2020/03/22 10:29
QT学习总结--Qsqlite
最近在学习QT,做了一个Qsqlite的登录功能。
首先是设计登录界面:
void MainWindow::init(){
//全屏
showFullScreen();
//设置用户名输入行的坐标,图标,圆角边框,提示信息
ui->userNameLine->setGeometry(750,400,420...
- 2472
发布于2020/03/11 20:03
状态模式处理订单
问题场景:
对于一个订单在不同的阶段有不同的状态,不同的状态处理逻辑也不一样。如果使用if/esle来判断订单状态,从而实现不同的操作。这样难以应对变化,增加一个状态,我们就需要增加一个分之,还可能影响原有逻辑判断。
if(待支付){
xxx
}else if(已付款){
xxxx
}else if(代发货){
xxxx
}e...
- 2358
发布于2020/03/10 19:59
利用状态模式去除多个if/else
假如现在有一个这样的问题, 如果一个集合存储A,B,C的对象(B继承了A,C继承了B),现在需要对 这个集合进行遍历,根据取出来的元素不同对待,那么我们应该怎么做呢。
我们一般都会用if/else语句进行判断处理,如下:
public static void main(String[] args) thro...
- 2574
发布于2020/02/29 13:07
设计模式-单例模式及其拓展
单例模式: 指一个类只有一个实例,且该类能自行创建这个实例的一种模式。
单例模式的用途:
1. 一个类只生成一个对象,可以节省内存资源、保证数据内容的一致性,避免出现当某类需要频繁实例化,而创建的对象又频繁被销毁的情况。
2. 适用于对象需要被共享的场合。共享对象可...
- 2567