自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 SRS流媒体服务器安装与推拉流测试

当我们推流 SRS服务器也可以收到对应flv文件的格式信息。这里使用ffmpeg进行演示(当然OBS更好)检测当前环境是否满足。

2024-07-01 18:37:27 467

原创 vscode远程连接Ubantu

安装后,打开Linux查看IP地址在VScode 中新建连接主机输入linux_name@ip地址 -A然后输入Linux的登录密码 就可以远程操控 Linux了可以在终端中远程控制Linux点击左上角的打开文件夹可以很方便的打开Linux的各种文件夹。需要注意的是在VScode远程控制Linux的情况下 安装的插件会安装到Linux中。

2024-06-27 15:22:25 327

原创 【C++重新认知】:左值与右值

一般情况下,的叫做左值。

2024-06-05 10:58:30 355

原创 音视频开发遇到的部分问题(个人向)

往往是转化时视频源帧出现的问题,如果通过普通的拷贝可能拷贝不完整导致出现问题。获取帧后 通过API 将解码的帧全部拷贝到vp中。

2024-05-21 22:51:41 319

原创 【算法题】:回文(双指针)、判断子序列(双指针)、二叉树最大深度(递归)

【代码】【算法题】:回文(双指针)、判断子序列(双指针)、二叉树最大深度(递归)

2024-03-27 22:42:02 140

原创 【C++重新认知】:泛型编程(模板编程)

当我们设计函数或者类时,有时候需要对应不同数据类型编写相同的代码,这样的话不仅有代码冗余,而且更加的加大程序员开发事件,降低开发效率,因此泛型编程就是解决此类情况----不同的数据类型可以重用一个函数,或者可以创建不同数据类型的相同类。

2024-03-26 20:05:30 437

原创 【音视频开发】:RTSP服务器协议内容

RTSP是一个,是一个的协议。通常说的RTSP包括RTSP协议、RTP协议、RTCP协议。

2024-03-13 23:35:56 1230

原创 C库常用处理字符串函数

检查str1字符串中是否含有str2字符串。:存在返回第一次出现str2字符串首字母的地址,不存在返回NULL。

2024-03-13 17:50:26 410

原创 【音视频开发】 : SDP协议

SDP(Session Description Protocol)是一种描述会话(Session)的应用层控制协议,用于在多媒体通信中传递会话相关的信息。它被广泛应用于实时流媒体、视频会议、互联网电话等领域。

2024-03-09 20:43:41 493

原创 [计算机网络]:流量控制

一条TCP连接的每一侧主机都为其设置了接收缓存,当TCP成功连接后,它发送的数据会放入接受缓存中。相关联的进程会从缓存中读取数据。但是存在一个问题,当某应用程序读取数据速率太慢,而发送数据一方不停的发送数据,会导致缓存区溢出,为了解决这类情况出现了流浪控制。:UDP并不提供流量控制,报文段由于缓存溢出后可能会在接收方丢失掉。

2024-03-04 17:37:51 646

原创 Socket编程

套接字(socket)是Linux下的一种进程间通信的机制。这个机制不仅可以在不同主机之间实现网络通信,也可以在同一台主机上的不同应用程序完成通信。socket通常使用客户端服务端这种模式完成通信。多个客户端可以同时连接到同一个服务器,由服务器完成数据处理,再将结果返回给客户端。socket是应用层与TCP/IP协议通信间的中间软件抽象层,它是一组接口。

2024-03-03 15:02:36 1722

原创 操作系统:了解操作系统(编译、操作系统管理、进程、线程)

只是一个shell进程和一个hello进程,当shell程序需要执行hello进程时,shell保存上下文,然后创建一个hello进程和它的上下文,等hello进程完成后,恢复shell进程的上下文。线程其实就是将一个非常庞大的程序分为很多细小的模块,每一个线程分别负责一块模块,这样不仅能更好的发挥计算机性能,也解决了很多开发遇到的问题。当浏览器在运行时,操作系统会给一种假象,即好像系统上只有浏览器这个程序在运行,程序看上去时在独立地占用处理器,主存和I/O设备。2、操作系统的抽象表示。

2024-02-27 17:35:02 664

原创 Qt:拖动无边窗口

原理:先计算出指针到左边框上面的相对距离,然后移动距离减去相对距离就是实际运动的距离。

2024-02-25 17:39:06 437

原创 Qt:tabWidget控件

tabWidget控件用来进行不同控件页面的跳转,

2024-02-21 18:42:35 644

原创 操作系统概念

任何计算机系统都包含一个基本的程序集合,称为操作系统(OS)。

2024-02-19 14:19:39 394 1

原创 C++重新认知:智能指针

0/# 一、为什么要有智能指针内存泄露是我们开发大型项目时最为头疼的问题,当我们将对象建立在堆上时,因为需要我们自己手动释放,因此避免不了忘记删除,或者删除时没有考虑清楚情况的问题,从而造成悬挂指针或者是野指针的问题。

2024-02-17 14:22:27 893

原创 Qt:自定义信号,信号emit,传参问题,信号槽与moc

在头文件中 加入signals: 就可以编写信号。

2024-02-15 13:39:40 1490

原创 Qt:槽函数的五种写法

因为是以宏定义的方式展开,所以如果SIGNAL写错,或者信号名字、槽函数写错、编译器是无法检验出来的,导致出现隐性BUG,不容易发觉修改错误。

2024-02-14 14:43:21 1171

原创 QT:实现图片选择器

可以快速获取到项目目录位置。:编写config文件,记录上次打开图片的位置,下次打开图片会从上次的位置查找图片。:用于图片的缩放,防止图片过小,显示区域不能完全覆盖。

2024-02-13 21:19:40 1570

原创 [leetcode]买卖股票的最佳时机 (动态规划)

在第 2 天(股票价格 = 1)的时候买入,在第 5 天(股票价格 = 6)的时候卖出,最大利润 = 6-1 = 5。注意利润不能是 7-1 = 6, 因为卖出价格需要大于买入价格;同时,你不能在买入前卖出股票。返回你可以从这笔交易中获取的最大利润。如果你不能获取任何利润,返回。设计一个算法来计算你所能获取的最大利润。在这种情况下, 没有交易完成, 所以最大利润为 0。买入这只股票,并选择在。

2024-02-13 14:30:58 473

原创 Qt:Qt3个窗口类的区别、VS与QT项目转换

包含菜单栏、工具栏、状态栏:普通的一个窗口,什么也不包括:对话框,常用来做登录窗口、弹出窗口(例如设置页面)QDialog实现简易登录界面(部分代码)

2024-02-12 20:34:55 895

原创 [leetcode经典算法题]删除有序数组中的重复项(双指针)

更改数组 nums ,使 nums 的前 k 个元素包含唯一元素,并按照它们最初在 nums 中出现的顺序排列。解释:函数应该返回新的长度 5 , 并且原数组 nums 的前五个元素被修改为 0, 1, 2, 3, 4。解释:函数应该返回新的长度 2 ,并且原数组 nums 的前两个元素被修改为 1, 2。输入:nums = [0,0,1,1,1,2,2,3,3,4]输出:5, nums = [0,1,2,3,4]输出:2, nums = [1,2,_]输入:nums = [1,1,2]

2024-02-11 20:16:25 554

原创 同步和异步、阻塞与非阻塞

首先同步和异步是访问数据的机制。

2024-02-08 22:59:00 381

原创 C++多线程学习[六]: 多线程之间的同步

一、同步问题实际开发场景中有很多需要同步的情况,例如,音频和视频的同步输出、或者通讯能够第一时间同步接受处理…二、多线程同步demo可以看到cond可以阻塞等待(wait)可以通知一个线程(notify_one)也可以通知所有的线程(notify_all)等等 这里采用的通知一个线程即notify_one。#include<iostream>#include<thread>#include<mutex>#include<list>#incl

2024-02-05 18:06:03 479

原创 C++多线程学习[五]:RAII锁

使用局部对象来控制资源的技术,即它的生命周期由操作系统来管理,无需人工的介入。为什么要采用RAII技术呢?主要是在开发过程中资源的销毁容易忘记,容易造成死锁或内存泄露。

2024-02-05 16:10:24 604

原创 音视频基础知识

我们日常所见的不发光物体,它们都是靠反光才能让我们眼镜观察到,白色的不发光物体可以反射一切光,黑色则吸收一切光,因此不发光物体是由组成它材料的吸光性来决定的,但是。

2024-01-19 18:26:42 392

原创 C++多线程学习[四]:多线程的通信和同步、互斥锁、超时锁、共享锁

*如果当前互斥锁已被其他线程占用,则 lock 函数将阻塞当前线程,直到互斥锁可用为止。假设有6个线程同时要访问同一片区域数据,有5个线程要读数据,而有一个线程要写数据,那么共享锁可以让读线程的5个线程同时进行读,然后阻塞写数据的线程。可以看到在这段代码中,本来1号线程运行完,执行unlock()后,应该其他阻塞的线程应该进入代码内,但是发现进入的依旧是1号ID的线程。超时锁可以让阻塞的线程不断尝试进入,如果超过等待时间,就会执行日志结果,可以帮助我们更好的检查线程状态,检查是否超时或者是否存在死锁。

2024-01-15 16:00:10 2252

原创 C++多线程学习[三]:成员函数作为线程入口

【代码】C++多线程学习[三]:成员函数作为线程入口。

2024-01-13 16:37:09 680

原创 C++ 多线程学习:目录

C++多线程学习(一):认识线程,创建线程-CSDN博客C++多线程学习[二]:线程的传参以及传参的一些坑-CSDN博客

2024-01-12 22:03:48 408

原创 C++多线程学习[二]:线程的传参以及传参的一些坑

首先我们知道,{}里面的变量会存在栈中,在大括号结束后,栈中的变量会销毁掉,那么线程传参的变量按理说应该找不到才是,然而答案是依旧能正常输出结果。在thread源码中,线程会单独将传入的参数拷贝一份,拷贝到列表中,再将列表中的值传入到线程句柄中。

2024-01-12 22:01:32 547

原创 C++重新认知:拷贝构造函数

对于简单变量来说,可以轻松完成拷贝。但是对于复杂的类对象来说,不仅存在变量成员,也存在各种函数等。因此相同类型的类对象是通过拷贝构造函数来完成复制过程的。可以看到成功拷贝了我们自己设计的String类(),当然这段代码是存在问题的我们可以看到两块指向m_buffer内存地址相同,所以会出现多次析构的情况(即a对象析构完了,将m_buffer释放掉后,因为b对象指向的也是m_buffer区域又要释放一次已经释放掉的),这也是浅拷贝,下面会详细讲解浅拷贝和深拷贝。

2024-01-12 17:05:29 675

原创 STL源码阅读总结从小白到大神:vector

使用vector应包括头文件,但是SGI将vector的实现代码写在了更底层的<stl_vector.h>

2024-01-11 18:12:22 609

原创 STL源码阅读总结从小白到大神:目录

长久以来,程序员们希望创造出一个可重复运用的东西,让程序员们的心血不随时间流逝被“遗忘掉”,为了建立数据结构与算法的统一标准并降低彼此结构的耦合性于是C++社区诞生了伟大的作品 STL。

2024-01-09 22:10:31 446

原创 STL源码阅读总结从小白到大神:配置器

当客端调用64bytes区块时,如果free_list[7]为空,内存池有20个32bytes的区块/10也就是10个64bytes的区块,其中一个交给客端,剩下9个留给free_list[7]维护,这时内存池又空了…oom_malloc()和oom_realloc()都有内循环,不断调用“内存不足处理历程”,但是如果“内存不足处理历程”并未被客端设定,这两个函数就会调用_THROW_BAD_ALLOC丢出bad_alloc异常信息,或利用exit(1)终止程序。

2024-01-09 22:06:53 1315 1

原创 C++重新认知:inline关键字

testa()是起不到内敛作用的,而testb()是内敛函数。

2024-01-08 14:09:28 543 1

原创 C++重新认知:namesapce

(就近原则)

2024-01-08 13:24:27 500 1

原创 C++重新认知:头文件的预处理

预处理的功能是对一个资源进行替换。常见的预处理指令:#define 宏定义#undef 取消宏#include 文本包含#ifdef 如果宏被定义就进行编译#ifndef 如果宏未被定义就进行编译#endif 结束编译块的控制#if 表达式非零就对代码进行编译#else 作为其他预处理的剩余选项进行编译#elif

2024-01-07 16:04:39 879 1

原创 【ffmpeg学习(四)】(代码实现) 实现音频数据解码并且用SDL播放

音频的播放比视频输出的要麻烦点啊,主要是CSDN大多数都是落后的,要么是到处复制粘贴的,我在实现过程中学了很久啊,大多数CSDN文章都是使用旧的API 已经被否决了,于是我读一些官方文档,和一些开源项目音视频的输出过程,才把这块弄懂,但是代码中仍然有问题比如会有刺啦刺啦声音(我猜测应该是PCM数据没有无缝连接上导致的)如果有音视频大佬看到这篇文章,希望大佬们在评论区提出宝贵意见。作者也放寒假了,在家无聊,可能会考虑直播敲个播放器吧,maybe?感觉这个专栏没多少人看呃,哎~

2024-01-06 23:00:51 1351 1

原创 C++重新认知:虚继承、虚指针以及虚表。

为了解决这种情况,设计者就设计了来解决此类情况。

2024-01-04 18:22:58 1413 1

原创 C++重新认知:流概念

为:其中的每个枚举常量规定一种文件打开的方式,在定义文件流对象和打开文件时使用。3)

2023-12-31 22:04:05 650

空空如也

空空如也

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

TA关注的人

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