自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 ffmpeg api实现将音视频混合

将AVPacket写入输出环境时,音频和视频的stream_index不能相等,如果音频的stream_index等于0,那么视频的stream_index需要等于1,可以手动改。出现这种情况的原因是输入的xxx1.mp3可能包含2个流,一个是音频,另一个是视频,音频流索引是0,视频流索引是1。输入的xxx2.mp4至少包含2个流,一个是音频,另一个是视频,而这里视频流索引是0,音频流索引是1。将从输入流解析出的AVPacket的跟时间相关字段,从当前的输入流时基对应的值转为输出流时基对应的值。

2023-05-09 14:46:59 96

原创 声音是如何存储下来的

对声音进行采样,每秒固定采样44100次,那么频率就能量化。对振幅进行采样,振幅就能量化。那么声音就被记录下来了。重现声音的时候,在这44100个时间点去还原出振幅,声音的波形就重现了。而振动只有两个变量,一个是振幅,一个是频率。

2023-04-25 16:23:50 58

原创 ffmpeg在windows编译带ffplay.exe使用msvc工具链

改脚本(msys2_shell.cmd文件set MSYS2_PATH_TYPE=inherit去掉set)-sdl2.pc(/usr/lib/pkgconfig/创建文件sdl2.pc并编辑好)-sdl2 include目录里所有的头文件放入/usr/local/include/sdl2。-SDL2main.lib, SDL2.lib放入/usr/local/lib。这里的/usr/local/include/sdl2是相对msys2的目录。ffmpeg/config.h里面的中文字符去掉。

2023-04-25 15:25:51 45

原创 通过经纬度计算两座城市的距离

【代码】通过经纬度计算两座城市的距离。

2023-03-30 14:15:54 91

原创 魔兽争霸3游戏改键原理

如果是war3的窗口,则判断此键盘消息的键值码是否是z的键值码,如果是,则通过代码产生一个虚拟按键事件,如果不是,则也进行默认的消息处理。虚拟键盘事件也同按了键盘一样,会在系统消息队列产生新的小键盘1的键盘消息,然后此消息又会被全局钩子捕获到,但它此时不是z了,默认不处理派发给游戏窗口。至此,本来按z产生的键盘消息,变成了按1产生的键盘消息,被放入游戏窗口队列,被游戏窗口的消息处理函数处理,从而实现了改键。当按下z的时候,把这个键盘消息替换为小键盘1,再传递给游戏窗口队列,需求就能实现。

2023-03-30 12:14:12 117

原创 访问多点计算最短路线

举例,武汉出发,想去五岳旅游,最后返回武汉,如果全程高铁或动车,怎样依次访问到并费用最低?我的思路比较简单,首先手动查询票价信息,整理成表格。然后列出全排列并记录。最后计算费用,找出最低值并打印整理出的表格,为简化问题仅考虑高铁动车费用,10000表示不方便(需要多次换乘等) 武汉 泰山 华山 恒山 衡山 嵩山 武汉 0 497.5 419 651.5 229 312 泰山 506 0

2022-04-26 11:26:30 239

原创 delete基类指针能不能释放子类对象

#include <stdio.h>class A{public: A() { printf("A\n"); } ~A() { printf("~A\n"); }};class B : public A{public: B() { printf("B\n"); } ~B() { printf("~B\n"); }};int main(){ A *p = new B; delete p; return 0;}执行结果:AB~A基类析构函.

2021-03-02 10:39:20 1007 1

原创 getdelim

详见man手册man getdelim#include <stdio.h>ssize_t getline(char **lineptr, size_t *n, FILE *stream);如果用户没有给*lineptr分配堆内存,那么系统默认分配的堆内存长度是120。如果用户有给*lineptr分配堆内存,如果足够,系统不会修改长度,如果不够,系统会realloc两倍的长度。第二个参数类型需要时size_t,不要是int。参数类型尽量一致,搞规范,不要随意地搞隐式转.

2020-09-09 17:29:50 830

原创 研究va_list

测试代码#include <stdarg.h>#include <stdio.h>void s(const char* str1, const char* str2, ...){ va_list va_list_; va_start(va_list_, str1); const char* p1 = va_arg(va_list_, const char*); printf("p1 : [%p] [%s]\n", p1, p1); c...

2020-08-21 12:08:26 88

原创 16进制字符串数转10进制整数

bool hexchar2int(char* p, int* num){ if (*p >= '0' && *p <= '9') *num = *p - '0'; else if (*p >= 'A' && *p <= 'F') *num = *p - 'A' + 10; else if (*p >= 'a' && *p <= 'f') *num = ...

2020-08-14 14:50:41 127

原创 研究C++类的成员变量构造析构顺序

#include <stdio.h>class A{public: A() { printf("a\n"); } ~A() { printf("~a\n"); }};class B{public: B() { printf("b\n"); } ~B() { printf("~b\n"); }};class C{public: C() { printf("c\n"); } ~C() { printf("~c\n".

2020-07-08 14:53:09 3059

原创 修改vscode文本编辑器默认的输入方式

vscode的文本编辑器继承了linux上vim的功能。用vscode打开源文件后,可能默认的模式是一般模式,这种模式下是不能输入字符的,对于用惯了windows的人来说是非常不习惯的。如何将默认的模式更改为插入模式呢。File-Preferences-Settings,搜索vim.startInInsertMode,再Start in Insert mode前面打上勾。...

2020-06-01 11:50:45 4888

原创 零基础尝试使用cmake

本文适合新手,从未使用过cmake的人。本文介绍自己对cmake的理解。同时也介绍自己在linux下成功使用cmake编译好自己的项目,及踩过的坑。cmake是一个跨平台的工具,起初耳闻cmake,是为了解决当项目变大源文件变多时,在linux写Makefile工作量太大,所以使用cmake来自动生成Makefile,以减轻工作量。在linux上确实是如此...

2020-05-17 10:32:59 527

原创 boost::asio异步收消息

需求背景说明,boost::asio网络编程库,在进行同步收发消息的时候,本身是不支持超时的。如果自己想尝试去实现,给同步收消息增加一个超时,会有一系列弊端,比如额外的工作量,简单的代码变得不好看,程序可能变得不稳定。同时,在高并发情况下,就更是需要使用异步收消息来提升性能,开更少的线程去做更多的事。本人能力有限,本文只介绍boost::asio异步收消息的基本使用。要想实现异步操作,就...

2020-04-27 18:03:42 515

原创 MFC控件组合框

组合框,例如为了确定ip是30网段还是50网段,可以在对话框提供一个组合框来选择。当点击组合框的下拉按钮的时候,就显示出30和50来选择。组合框对应的是CComboBox类。在对话框中,拖入的组合框控件上,右键-添加变量-添加CComboBox类型的变量,输入变量名。那么,对话框中就有此组合框类的成员变量了,并且自动在DoDateExchange()里面添加了DDX_Control(),这样对话框...

2020-04-22 11:43:50 226

原创 缓存数据时别名的使用

在缓存数据时,写了一个类,专门负责保存数据,保存到类的成员变量里,并提供写入和读取接口。在保存的时候,使用写入接口,传递参数时不能使用别名,否则成员变量不能真的把数据保存下来,使用别名,在外面的局部变量析构后,数据就没了。所以在保存时,不能使用别名,保存时需要拷贝一次,从局部变量拷贝到类的成员变量。在读取时,需要使用别名,否则读取不到。变量在传参时,就拷贝了一次,在函数里面,拷贝的变量是能拿到数据...

2020-04-16 10:15:06 142

原创 程序员好的工作习惯

作为一名新手程序员,刚开始工作的时候,总感觉乱七八糟的。现在写代码,完成一个或多个需求,就编译,然后自测,最好进行路径覆盖,自测没问题后,就上传代码到svn。这样一连串的一套动作,都完成,才算一个需求完成了。如果代码写完不自测,不将没问题的代码上传到svn,就好像吃完饭不洗碗,起床不叠被子,比较乱,该做的工作并没有做完。...

2020-04-16 10:09:48 186

空空如也

空空如也

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

TA关注的人

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