小时候挺菜丶
码龄5年
关注
提问 私信
  • 博客:14,123
    社区:7
    14,130
    总访问量
  • 28
    原创
  • 755,851
    排名
  • 0
    粉丝
  • 0
    铁粉

个人简介:只用一样东西,不明白他的道理,实在不高明

IP属地以运营商信息为准,境内显示到省(区、市),境外显示到国家(地区)
IP 属地:浙江省
  • 加入CSDN时间: 2019-12-08
博客简介:

qq_45987579的博客

查看详细资料
个人成就
  • 获得34次点赞
  • 内容获得4次评论
  • 获得23次收藏
创作历程
  • 15篇
    2022年
  • 10篇
    2021年
  • 3篇
    2020年
成就勋章
TA的专栏
  • 自制音视频播放器
    12篇
  • 密码学
    1篇
  • c
    3篇
  • 数据结构和算法
    10篇
  • c++
    1篇
  • OS
    1篇
  • Linux
    1篇
兴趣领域 设置
  • 编程语言
    c++
创作活动更多

2024 博客之星年度评选报名已开启

博主的专属年度盛宴,一年仅有一次!MAC mini、大疆无人机、华为手表等精美奖品等你来拿!

去参加
  • 最近
  • 文章
  • 代码仓
  • 资源
  • 问答
  • 帖子
  • 视频
  • 课程
  • 关注/订阅/互动
  • 收藏
搜TA的内容
搜索 取消

BPlay1.0系列(10:项目优化)

目前BPlay1.0的功能已经全部完成,但是在使用时还存在许多缺陷,后面会继续优化这些点,使体验更加舒适。
原创
发布博客 2022.10.23 ·
474 阅读 ·
1 点赞 ·
1 评论 ·
0 收藏

BPlay1.0系列(9:按钮联动和进度条)

目前BPlay1.0的主要功能(视频播放)已经基本实现,但是开启/暂停按钮和进度条还是无法控制视频的播放进度,本节将这两个功能收尾掉。
原创
发布博客 2022.10.16 ·
200 阅读 ·
1 点赞 ·
0 评论 ·
0 收藏

BPlay1.0系列(8:音视频同步)

实现了音频数据的播放,但是实际上拿媒体数据测试时会发现视频播放的速度要远快与音频播放速度,这样就导致视频播放完成之后音频还在播放,这就是视音频不同步现象。本文将修复这个Bug,让音视频数据播放同步起来。
原创
发布博客 2022.10.15 ·
614 阅读 ·
1 点赞 ·
0 评论 ·
0 收藏

BPlay1.0系列(7:音频播放)

已经完成了媒体文件的视频数据播放功能,但是播放时速度(帧率)无法控制并且是没有声音的,这就需要实现音频播放的功能来解决这两个问题。
原创
发布博客 2022.10.15 ·
280 阅读 ·
1 点赞 ·
0 评论 ·
0 收藏

BPlay1.0系列(6:视频播放)

前面我们已经完成了工程的构建、ffmpeg装载以及基本控件添加,现在就开始BPlay1.0核心部分的分析:视频播放。
原创
发布博客 2022.10.06 ·
576 阅读 ·
1 点赞 ·
0 评论 ·
0 收藏

BPlay1.0系列(5:自定义按钮控件)

开始/暂停按钮时每个视频播放器必备的部分,BPlay1.0也需要配备一个按钮来控制媒体文件的开/关,选择自定义一个PushButton来实现这个开关的功能,首先创建一个新的类继承于QPushButton,我将它命名为Bbutton:这个按钮首先想要具备的功能是:1、每次鼠标点击后,开关的状态需要改变,同时需要通知媒体做出相应的动作;2、媒体加载完、播放完等需要按钮改变状态时需要与其联动。
原创
发布博客 2022.10.06 ·
226 阅读 ·
1 点赞 ·
0 评论 ·
0 收藏

BPlay1.0系列(4:Bffmpeg单例模式设计+媒体流文件检测)

成功装载了ffmpeg库,接下来就是媒体文件的载入检测,但是在实际实现时发现:Bffmpeg加载媒体文件时,需要记录媒体文件相关信息:上下文、音视频索引等,这些需要定义成员变量保存在Bffmpeg类中,加载文件的方法如果定义成静态成员函数,那么将无法访问到保存的媒体信息变量,如果定义成普通成员函数,则需要实例化一个对象,但该对象在工程中只需要一个即可。基于以上考虑,最后选择采用单例模式来设计Bffmpeg。
原创
发布博客 2022.10.05 ·
457 阅读 ·
1 点赞 ·
0 评论 ·
0 收藏

BPlay1.0系列(3:QT下装载ffmpeg)

实现了从本地向BPlay1.0载入一个媒体文件,但是却无法解析该文件,本节将通过向QT载入ffmpeg解决这个问题。
原创
发布博客 2022.10.04 ·
205 阅读 ·
1 点赞 ·
0 评论 ·
0 收藏

BPlay1.0系列(2:Bwidget控件创建和打开媒体文件)

QFileDialog模态框反回后,便可获取到媒体文件路径,此时需要做判空和媒体文件有效性校验,上面代码已经进行了判空处理,媒体文件有效性判断想要装载ffmpeg库后才可以处理,ffmpeg库装载在本系列下一小节进行介绍!Bwidget具体的功能暂时可以先不实现,后续调试时按需添加即可!
原创
发布博客 2022.10.04 ·
315 阅读 ·
1 点赞 ·
0 评论 ·
0 收藏

BPlay1.0系列(1:方案设计+工程构建)

首先介绍一下BPlay1.0:BPlay1.0是一款基于ffmpeg和QT制作的本地视频播放器,1.0版本功能比较基础,旨在软件基本框架的设计以及音视频功能测试.
原创
发布博客 2022.10.04 ·
189 阅读 ·
1 点赞 ·
0 评论 ·
0 收藏

字符串解码

问题描述:给定一个经过编码的字符串,返回它解码后的字符串。编码字符串由 N[XXX] 这样的格式组成,N为一个十进制数字,XXX为字母和 N[XXX] 的组合, N[XXX] 表示 XXX 连续出现N次。例如:"3[z]2[2[y]pq4[2[jk]e1[f]]]ef"的解码结果为“zzzyypqjkjkefjkjkefjkjkefjkjkefyypqjkjkefjkjkefjkjkefjkjkefef”思路:整体想法是找寻 数字[纯字母] 这种形式,将其以完整的格式展开并且替代原编码格式,直到
原创
发布博客 2022.05.02 ·
835 阅读 ·
1 点赞 ·
0 评论 ·
4 收藏

sha256算法细节详解

sha256算法
原创
发布博客 2022.04.10 ·
3952 阅读 ·
3 点赞 ·
0 评论 ·
13 收藏

最短无序连续子数组

问题描述:给你一个整数数组 nums ,你需要找出一个 连续子数组 ,如果对这个子数组进行升序排序,那么整个数组都会变为升序排序。请你找出符合题意的 最短 子数组,并输出它的长度。示例 :输入:nums = [2,6,4,8,10,9,15]输出:5解释:你只需要对 [6, 4, 8, 10, 9] 进行升序排序,那么整个表都会变为升序排序。思路:维护两个单调栈,一个是数组从左到右遍历的递增栈s(只有大于等于栈顶的数据才可以入栈),一个是数组从右往左遍历的递减栈s2(只有小于等于栈顶的数据才
原创
发布博客 2022.02.27 ·
246 阅读 ·
1 点赞 ·
0 评论 ·
0 收藏

任务调度器

问题描述给你一个用字符数组 tasks 表示的 CPU 需要执行的任务列表。其中每个字母表示一种不同种类的任务。任务可以以任意顺序执行,并且每个任务都可以在 1 个单位时间内执行完。在任何一个单位时间,CPU 可以完成一个任务,或者处于待命状态。然而,两个 相同种类 的任务之间必须有长度为整数 n 的冷却时间,因此至少有连续 n 个单位时间内 CPU 在执行不同的任务,或者在待命状态。你需要计算完成所有任务所需要的 最短时间 。示例 1:输入:tasks = [“A”,“A”,“A”,“B”,“B
原创
发布博客 2022.02.20 ·
163 阅读 ·
1 点赞 ·
0 评论 ·
0 收藏

单调栈应用(每日温度)

问题描述:给定一个整数数组temperatures,表示每天的温度,返回一个数组 answer ,其中 answer[i] 是指在第 i 天之后,才会有更高的温度。如果气温在这之后都不会升高,请在该位置用 0 来代替。示例:输入: temperatures = [73,74,75,71,69,72,76,73]输出: [1,1,4,2,1,1,0,0]思路分析:首先构造一个单调栈类型的容器,只允许往栈里面插入小于等于栈顶数据的元素,整个栈呈现一个"金字塔"形状,如下图就是一个单调栈:对于te
原创
发布博客 2022.02.19 ·
459 阅读 ·
1 点赞 ·
0 评论 ·
0 收藏

c++的引用

引用的概述:使用int& 给变量起别名int a = 10; //有一块4字节名称为a的内存空间存放10,通过对a赋值可以操控这块内存int &b = a; //给这块内存起别名b,通过对b赋值可以操控这块内存。&a和&b输出结果都是这块内存的地址注意:int a = 10;int c = 20;int &b; //引用必须要初始化,非法int &b1 = a;b1 = c; //赋值操作,而不是给c起别名引用做函数的参数:v
原创
发布博客 2021.12.26 ·
252 阅读 ·
1 点赞 ·
0 评论 ·
0 收藏

Z 字形变换

问题描述将一个给定字符串 s 根据给定的行数 numRows ,以从上往下、从左到右进行 Z 字形排列比如输入字符串为 “PAYPALISHIRING” 行数为 3 时,排列如下:原字符串根据规则得到Z字形变换结果之后,输出需要从左往右逐行读取,产生出一个新的字符串,根据上图,上述字符串 “PAYPALISHIRING” 的变换结果就是:“PAHNAPLSIIGYIR”。再如输入字符串为 “PAYPALISHIRING” 行数为4时,排列如下:上述字符串 “PAYPALISHIRING” 的变
原创
发布博客 2021.12.18 ·
662 阅读 ·
1 点赞 ·
0 评论 ·
0 收藏

Manacher算法

此篇文章给出了最长回文串的普通解法:https://blog.csdn.net/qq_45987579/article/details/121324132?spm=1001.2014.3001.5501但是这种解法计算每个遍历点时并没有充分利用之前遍历点计算出的结论,时间复杂度为O(n2),本文算法充分利用回文字符串的性质,降低算法时间复杂度,该算法就是马拉车算法。首先给出一段字符串分析:“abctftghjhgtftclu”,这个字符串首先可以拆分成3段:第一段:“ab”第二段:“ctftgh
原创
发布博客 2021.12.11 ·
832 阅读 ·
1 点赞 ·
0 评论 ·
0 收藏

最长回文子串

给你一个字符串 s,找到 s 中最长的回文子串。类似这样的字符串属于回文字符串:“a”, “aa”, “aba”, “baab”。思路:遍历整个s,每个遍历处都进行向前向后查找,得到以该点为中心的最长回文字符串。实现:char * longestPalindrome(char * s){ int max = 1; int i = 0, j = 0, k1 = 0, k2 = 0; char *p = s; for(i = 0; i < strlen(s)
原创
发布博客 2021.11.14 ·
202 阅读 ·
1 点赞 ·
0 评论 ·
0 收藏

使用FFMPEG5.0和SDL2.0编写视频简单播放器

使用ffmpeg5.0和SDL1.2编写视频播放器daemon时,视频卡在第一帧会报错:测试例程如下:int B_Play_Openfile(const char* szFilePath){ int iRet = 0; int iVideo_index = 0; char szError[128] = {0}; unsigned char *out_buffer = NULL; AVFormatContext *FormatContext = avformat_alloc_context()
原创
发布博客 2021.10.06 ·
897 阅读 ·
1 点赞 ·
2 评论 ·
1 收藏
加载更多