- 博客(407)
- 收藏
- 关注
原创 将 ubutun 的网络模式 从NAT 改到 桥接模式后,无法上网,linux 没有IP地址 的解决方案
这里再从 NAT 模式改动成 桥接模式的时候,还出现了一个问题。改成桥接模式后,linux没有ip地址了。原因是 不知道什么时候 将 虚拟网络编辑器 中的值改动了。首先要将 ubutun 的网络模式设置为。要选择这个 自动 选项。
2025-05-27 16:31:21
316
原创 FFmpeg 4.3 H265 二十二.2,在网络环境RTSP中,断线下如何处理
本节是将前面学习的 XThread 和 实际解封装的代码结合起来。
2025-05-26 23:03:56
1184
1
原创 FFmpeg 4.3 H265 二十二.4,使用计算机摄像头,通过VCL软件, 模拟 监控摄像头 的 RTSP 流
我们本章节是学习如何将 监控摄像头 中的数据 处理。监控摄像头一般都会符合 RTSP 协议。也就是说,从监控摄像头出来的数据格式对应的url一般是这样的:暂时还没有买摄像头,因此使用笔记本自带的摄像头,通过 VLC软件 将笔记本自带的摄像头的数据转换为 RTSP 协议数据。
2025-05-26 17:59:18
600
原创 FFmpeg 4.3 H265 二十二.3,avformat_open_input 支持打开的协议
支持多种协议,主要通过 FFmpeg 的协议层实现统一访问。设置超时等参数优化稳定性。
2025-05-26 14:26:22
912
原创 C++ 并发编程(1)再学习,为什么子线程不调用join方法或者detach方法,程序会崩溃? 仿函数的线程启动问题?为什么线程参数默认传参方式是值拷贝?
你可以根据这哥们的视频内容学习,我这里只是将自己不明白的点,整理记录。之前的关于 线程 的 理解 有些地方 是有误区的,这里记录并改正一下。
2025-05-14 21:24:58
1040
原创 C/C++:C语言中的__FILE__、__LINE__等几种C标准用法
_FILE__ :正在编译文件的文件名__LINE__ :正在编译文件的行号__DATE__:编译时刻的日期字符串 如“Sep 22 2020”__TIME__:编译时刻的时间字符串 如”10:00:00“__STDC__:判断该文件是不是标准C程序__func__:它指示所在的函数标准C语言预处理要求定义某些对象宏,每个预定义宏的名称为两个下划线字符开头和结尾,这些预定义宏不能被取消定义(#undef)或由编程人员重新定义。
2025-05-14 13:50:18
695
原创 FFmpeg 4.3 H265 二十二.1,将C++线程加入到代码,以及简单测试。使用日志 替换 log,
前面我们实现的代码 都是在主线程中完成了 一个mp4文件的 解封装,解码,(音频/视频 重采样),编码,封装。在当前项目中,我们要使用显示多路H265监控录放, 因此,一定要用到 C++线程。不从项目,仅仅从程序的角度来说,不管是解封装,解码,(音频/视频 重采样),编码,封装。这些都是需要花费时间来做的事情,花费时间的事情都需要放置在子线程中做。因此,这节课就按照工程思维来加入 C++线程代码。
2025-05-13 22:59:55
176
原创 ffmpeg 写入avpacket时候,即av_interleaved_write_frame方法是如何不需要 业务层释放avpacket的 逻辑分析
我们在通过 av_interleaved_write_frame方法 写入 avpacket的时候,通常不需要关心 avpacket的生命周期。//最后还置为nullptr了。----> 代表一个内部实现。本文分析一下内部实现的部分。
2025-05-10 16:20:09
419
原创 avformat_seek_file 函数详解,av_seek_frame函数
avformat_seek_file 是 FFmpeg 中用于媒体文件精准定位的核心函数,其功能与音视频播放器的进度跳转、数据抽取等场景密切相关。
2025-05-06 11:08:01
579
原创 AVOutputFormat 再分析
是 FFmpeg 中用于管理输出文件容器格式的核心结构体,定义了封装(Muxing)行为的关键属性和操作方法14。
2025-05-04 17:43:15
329
原创 AVFormatContext 再分析二
标志位作用由 FFmpeg 的解封装模块(avformat)自动设置,主要用于标识底层 I/O 上下文(如)的读指针是否被显式重定位。例如,在基于字节的随机访问(byte-based seeking)时,该标志会被触发。触发条件当调用或类似函数导致底层 I/O 缓冲区的读指针位置发生变化时,会被设置为非零值,表示发生了位置重置。
2025-05-03 23:54:03
1353
原创 AVIOContext 再学习
这个目前阶段用的不多,暂时不要花费太多精力。url 的格式不同,使用的传输层协议也不同。这块看代码还没看到自己想的这样。目前看的信息是:avformatContext 的 io_open 回调函数 在默认情况下叫 io_open_default,在解复用的 avformat_open_input 方法中一定会调用。那么我们如果不使用这个默认的 io_open_default,使用自己写的回调函数,会怎么样呢?还看到的信息:avformatContext的pb ( AVIOContext *pb。
2025-05-03 23:31:31
730
原创 AVFormatContext 再分析零
这个url 不仅仅可以是本地文件,也可以是网络传递过来的文件,实际上是 传输过来的,也就是说,是使用传输层的协议,对应ffmpeg中的结构体就是 AVIOContext。随着对于AVFormatContext 各个参数的学习,逐渐可以从 整体架构上 再认识一下 AVFormatContext 了。//此处 应该分析 AVIOContext 是怎么得来的,以及如何自定义 AVIOContext 结构体。还是从解封装的第一步开始。
2025-05-03 18:35:33
520
原创 AVInputFormat 再分析
AVInputFormat 是 FFmpeg 中用于描述输入格式(如文件容器、设备流等)的核心结构体,属于 libavformat 库的一部分。其主要功能是定义解封装(demuxing)过程中如何解析不同格式的输入数据。
2025-05-03 16:42:54
1134
原创 av_find_input_format(const char *short_name);方法分析.使用 av_find_input_format 打开摄像头,麦克风
***/根据 AVInputFormat 的短名字 来找到具体的 AVInputFormat。从源码实现可以看到:最终还是从 demuxer_list 数组中找,而demuxer_list数组的位置如下。
2025-05-03 13:17:14
162
原创 avfromatContext 中可以优化的参数。format_probesize,fps_probe_size,probesize,max_analyze_duration
通过控制探测数据量平衡格式识别的精度与效率,需根据媒体类型(本地文件/网络流)和封装复杂度灵活调整15。是流媒体解析性能调优的核心参数,需根据场景平衡 解析精度 与 响应速度,结合probesize参数实现最佳效果17。在解复用中用于识别 format。在 avformat_open_input方法中使用。默认值是1M 或者5M,值越大:探测范围更广,可提高复杂或分散格式的识别成功率(例如多流混合或元数据分散的媒体文件)。值越小。
2025-05-01 23:44:29
950
原创 av_dict_get,av_dict_set,av_dict_set_int
是 FFmpeg 中管理键值对的核心接口,广泛应用于参数配置与协议控制。使用时需注意内存生命周期、参数单位及标志位语义,避免常见陷阱。/***/是 FFmpeg 中处理整型参数的高效工具,适用于超时、分辨率、编解码参数等场景。需注意协议兼容性、单位转换及内存管理规则15。
2025-05-01 17:04:17
1184
原创 ffmpeg 元数据-avformatcontext字段 AVDictionary *metadata;
ffmpeg元数据是指与音视频文件相关的附加信息,这些信息不直接影响音视频内容的播放,但提供了关于文件内容、创作者、版权、播放参数等的有用信息。元数据在音视频文件的处理、管理和共享中起着重要作用。
2025-05-01 14:32:56
655
原创 AVDictionary 再分析
在FFmpeg中配置参数时,AVDictionary被广泛使用。例如,在[4]中提到了通过AVDictionary设置播放器参数,这里可能需要通过指针传递参数,而typedef的使用使得代码更简洁,同时隐藏了结构体的内部实现,符合封装的原则。还要注意用户可能的误区,比如直接访问结构体成员。根据[1]中的说明,AVDictionary的具体实现没有暴露,用户无法直接访问其成员,必须通过FFmpeg提供的API如av_dict_set、av_dict_get等来操作。
2025-05-01 10:55:35
700
原创 复用时常用api--av_interleaved_write_frame
此方法一看就是要有了avpacket的时候,就调用一次,我们在写入文件的时候测试一下。
2025-05-01 10:09:04
471
原创 AVFormatContext 再分析一
比如这是一个mp4文件,既有视频也有音频,我们假设有一个视频两个音频(粤语和普通话),假设视频是300kbps,普通话音频是128kbps,粤语音频是100kbps。* 在解复用的时候,允许强制使用特定的解码器,即使存在多个具有相同codec_id的解码器。* 在解复用的时候,允许强制使用特定的解码器,即使存在多个具有相同codec_id的解码器。允许在解码的时候,允许强制使用特定的解码器,即使存在多个具有相同codec_id的解码器。也就是说:如果我们解析的是mp4文件,那么这个值是平均值。
2025-04-27 23:47:44
962
原创 从 yuv file 中读取数据到avframe 的data 中;;;将avfreame 的data 写入 yuvfile 中;;;将avfreame 的data 写入 数组中
核心是一定要注意 有没有字节对齐问题。
2025-04-23 23:13:21
763
原创 ffmpeg av_buffer_unref的逻辑实现; av_freep 和 av_freep函数的区别
允许注册自定义释放逻辑(如 GPU 内存释放需调用特定驱动 API),支持异构硬件资源管理。实现了高效且安全的内存管理,成为 FFmpeg 多模块资源共享和生命周期控制的基础。来自内存池,释放时不会立即归还给系统,而是通过链表管理复用,减少频繁内存分配开销。引用计数的增减操作通过原子指令实现,确保多线程环境下数据一致性26。负责递减计数和释放,两者共同维护引用生命周期。进行原子递减操作(通过。等机制保证线程安全)。
2025-04-22 22:57:59
471
原创 ffmpeg 硬解码相关知识
硬件加速原理:D3D11VA通过GPU硬件单元并行处理视频解码任务,显著降低CPU负载,提升解码效率48。技术定位:作为DirectX API的一部分,它不仅是图形渲染工具,还扩展了视频处理能力,支持与D3D11渲染管线深度集成8。视频格式转换需求:优先选择支持批量处理且兼容新版 QSV 的工具(如数据蛙视频转换器)27。硬件加速需求:在视频处理项目中可调用 Intel QSV 技术提升效率,需注意驱动和接口适配56。
2025-04-22 21:12:41
1040
原创 QT六 自适应布局 resize()和resizeevent事件关系
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。原文链接:https://blog.csdn.net/sinat_30491515/article/details/140832345当我们改变画面的大小的时候,会触发 resize 函数,进而会调用到 resizeEvent函数。
2025-04-07 17:25:11
785
原创 C++ 读取文件,写入文件
ifstream在C++中,你可以使用多种方法来读取和写入文件。最常见的方法是使用C++标准库中的<fstream>头文件,它提供了ifstream(用于读取文件)和ofstream(用于写入文件)类。下面是一些基本示例来展示如何使用这些类来读取和写入文件。ifstream。
2025-04-01 13:54:49
384
原创 QT五 文件系统,QFile,QfileInfo
1. 顺序访问设备:是指它们的数据只能访问一遍:从头走到尾,从第一个字节开始访问,直到最后一个字节,中途不能返回去读取上一个字节,这其中,QProcess、QTcpSocket、QUdpSoctet和QSslSocket是顺序访问设备。2. 随机访问设备:可以访问任意位置任意次数,还可以使用QIODevice::seek()函数来重新定位文件访问位置指针,QFile、QTemporaryFile和QBuffer是随机访问设备,
2025-03-28 23:01:40
268
原创 QT四 资源文件;绘图;绘图设备;qpixmap 和 qimage 转换;QPixmap、QBitmap、QImage和 QPicture的区别
我们现在想在QT的UI控件上显示一些图片,动画文件gif等,如何加载呢?很容易想到的一种方法是从自己的电脑上load,例如我们将文件放在 D://picture/1.png 下,但是如果换了电脑,最终生成的.exe文件能正确的加载这些图片,也需要保证运行.exe的电脑上有 D://picture/1.png这个路径。因此 QT 提供了将资源文件保存到可执行文件内部的方法。
2025-03-28 16:06:14
1009
原创 QT三 自定义控件,自定义控件的事件处理&自定义事件过滤,原始事件过滤
假设我们要在QWidget 上做定制,这个定制包括了关于 一些事件处理,意味着要重写QWidget的一些代码,这是不实际的,因此我们需要自己写一个MyWidget继承QWidget,然后再MyWidget.cpp中重写事件处理的函数。如下是我们在ui上的弄了一个QWidget,我们的目标是将这个QWidget变成MyWidget,然后再MyWidget.cpp中重写我们的方法。我们现在是想给这个Mywidget 中加入 两个控件,一个是spin box,一个是horizontal slider。
2025-03-23 22:21:22
433
原创 QT二 QT使用generate form 生成常用UI,各种UI控件
这时候就想到了,这个应该是 项目build 之后生成的吧,于是查看了一下该项目的配置,果然是在D:\code_qt\build-004qtUIstudy-Desktop_Qt_5_14_2_MinGW_32_bit-Debug下面,也就是我们需要构建之后,才会生成 ui_mainwindow.h这个文件。我们终于看到了熟悉的画面,和我们不使用general form时候的代码。在 使用了general form之后,在主界面的构造方法中,使用ui->setupUi(this),就完成了所有UI的处理。
2025-03-21 16:04:56
1244
原创 QT一 qt安装,debugger源码,框架,项目文件pro,父子窗口,信号与槽,自定义信号,自定义槽,QT的坐标系统,内存回收机制,带菜单栏的窗口,对话框,lamda表达式
Qt是一个跨平台的C++图形用户界面应用程序框架这意味着我们在 windows上开发的QT 项目,在linux上打开后也能用。Qt对不同的平台提供了不同版本的安装包,可根据实际情况自行下载安装,本文档使用Qt 5.5.0 for Windows 32-bit (MinGW 4.9.2, 959 MB) (info) 版本就行讲解。MinGW32是这个意思: --> Minimalist GNU for Windows 32也就是说,如果我们要在 windows 上使用QT 写代码,就必须使用 Min
2025-03-18 15:32:04
405
原创 mysql 学习19 MYSQL管理以及使用工具
将db01这个数据库 备份,备份的数据存储到 db01.sql 里使用参数-T 让数据库的内容和数据库语句 分离。查找固定路径的方法:从 txt 中导入数据库的内容,从sql 文件中导入数据库的内容
2025-02-25 18:14:05
417
原创 mysql 学习18 Inoodb 引擎底层结构和原理
该章节 以理解为主 查看 show variables like "%hash_index%", 可以看到这个值是show variables like "%hash_index%";innodb_adaptive_hash_index ON show engine innodb status; 查看当前引擎状态。redo log 就是保证其 持久性的。如下的图是没有redo log 时,最后一步,当update 或者delete 时,
2025-02-25 13:22:51
289
原创 重新设置 SQL的结束语句 delimiter ,我们可以通过delimiter设置mysql结束语句的符号,
delimiter && --------------- 这句话的意思是说:现在sql 的结束符号 由原来的;
2025-02-24 11:19:28
231
原创 mysql 学习15 SQL优化,插入数据优化,主键优化,order by优化,group by 优化,limit 优化,count 优化,update 优化
sql语句优化
2025-02-17 12:12:49
236
FLV文件解码,不使用ffmpeg提供的API解析
2024-06-03
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人