- 博客(43)
- 资源 (1)
- 收藏
- 关注
原创 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
475
1
原创 什么时候用进程或者线程呢?
进程是指在系统中正在运行的一个应用程序;程序一旦运行就是进程。进程可以认为是程序执行时的一个实例。进程是系统进行资源分配的独立实体, 且每个进程拥有独立的地址空间。一个进程无法直接访问另一个进程的变量和数据结构, 如果希望让一个进程访问另一个进程的资源,需要使用进程间通信,比如:管道,文件,消息队列,共享内存, 套接字等。一个进程可以拥有多个线程,每个线程使用其所属进程的栈空间。
2024-07-25 17:20:49
1219
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
714
原创 音视频编解码常用知识点
实现HTTP Live Streaming直播,需要研究并实现以下技术关键点 >* 采集视频源和音频源的数据 >* 对原始数据进行H264编码和AAC编码 >* 视频和音频数据封装为MPEG-TS包 (连续的、很短时长的媒体文件)>* HLS分段生成策略及m3u8索引文件 >* HTTP传输协议。SIP会话传输一些简单的经过报文的实时传输协议流,RTP/RTCP本身才是语音或视频的载体。例如,采用RTMP协议传输的数据,经过解协议操作后,输出FLV格式的数据。RTSP 的语法和 HTTP 的语法基本相同。
2024-06-25 15:46:15
1500
原创 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
237
原创 如何使用 C++ 标准模板库(STL)中的容器和算法?
C++标准模板库(STL)是C++语言的一个组成部分,提供了通用的、模块化的、可重用的组件,用于处理数据结构和算法。STL包含容器、迭代器、算法和分配器四个主要部分。
2024-05-08 16:54:19
287
原创 请解释一下 C++ 中的 Rvalue 和 Lvalue
左值可以被取地址(&)操作符获取其内存地址,右值是指那些不具有内存地址或者其地址是临时的、不需要被赋值的表达式
2024-05-07 18:52:19
392
原创 描述一下 C++ 中的模板(template)和泛型编程。
C++ 中的模板是一种支持泛型编程的机制。泛型编程是一种编程范式,它允许程序员编写出可以处理多种数据类型的代码,而不必在编译时就确定具体的数据类型。这种编程方式提供了灵活性和可重用性,因为编写的代码可以用于多种不同的数据类型,而不需要为每种数据类型编写不同的代码。
2024-05-07 18:33:08
302
原创 纯虚函数(pure virtual function)和抽象类(abstract class)有什么区别?
一个类如果包含至少一个纯虚函数,它就成为了一个抽象类。一个抽象类可以包含多个纯虚函数,也可以包含没有被声明为虚的普通成员函数。
2024-05-07 18:29:28
329
原创 什么是智能指针,它们是如何工作的?
std::shared_ptr通过维护引用计数管理对象的生命周期,std::shared_ptr被复制时,引用计数增加,当一个std::shared_ptr被销毁时,引用计数减少。只有当引用计数达到零时,所指向的内存才会被释放,可以在多线程中使用;std::weak_ptr避免循环引用
2024-05-07 18:08:02
390
原创 描述一下 C++ 中的四种类型转换
C++四种类型转换,static_cast内置数据类型转换,dynamic_cast基类指针转换为派生类指针,reinterpret_cast非常危险的转换,const_cast移除 const 或 volatile 的限定符
2024-05-07 18:03:28
163
原创 使用智能指针来实现单例模式
使用智能指针实现单例模式,通过维护一个引用计数来跟踪有多少个 std::shared_ptr 指向同一个对象。当引用计数为零时,对象会被自动删除;使用 std::weak_ptr 避免循环引用
2024-05-07 17:52:50
653
原创 什么是 RAII(Resource Acquisition Is Initialization)
核心思想是将资源的生命周期与拥有该资源的对象的生命周期绑定。这意味着资源在对象创建时获得,并在对象销毁时自动释放,从而避免了内存泄漏和其他资源管理错误
2024-05-07 17:47:11
500
原创 gdb调试
gdb调试方法汇总gdb调试core文件gdb core文件btgdb调试进程*查看进程ps aux | grep mgdgdb -p 进程号cbnps
2022-01-29 15:42:06
1245
深入理解计算机系统答案(超高清电子版).pdf
2015-12-20
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人