- 博客(34)
- 资源 (3)
- 收藏
- 关注
原创 在CLion下使用Conan包管理工具构建C++ CMake工程
在开发跨平台工程时为了减少库的依赖关系增加的使用成本,让开发者有更多的时间关注C/C++功能的开发,所以需要一个跨平台的方案来构建CMake工程。本文环境64位 Windows11。
2024-05-17 11:28:55
1646
1
原创 FFMPEG视频编码的基础知识
帧内压缩:将视频的每一帧画面都压缩成JPEG这类有损图像,原理就是尽可能保存视频亮度信息,压缩颜色信息尤其是复杂的颜色信息,通俗来讲就是记录关键帧,剩余的依靠运动轨迹来预测生成视频。又节省了一半的空间,提供最高的压缩比,它既需要之前的图 像帧(I帧或P帧),也需要后来的图像帧(P帧),采用运动预测的方式进行帧间双向预测编码。通过上图可知一秒钟的视频应该是342MB,但实际我们看的视频并没有这么大,那是因为我们看的视频都是进行压缩之后的,实际大小只有。码率直接决定了视频的最终大小及视频的质量。
2023-07-21 10:16:04
1084
原创 使用WinDbg分析Windows dump文件方法
analyze -v"链接,或者在下面的命令窗口中输入“!analyze -v”命令,工具就对dump文件进行分析,然后输出导致系统崩溃的起因等相关信息。在安装Windows SDK的过程中,可以选择只安装WinDbg(Debugging Tools for Windows)这个组件。工具来分析windows系统产生的dump文件,此工具属于Windows SDK的一个组件,在微软官方网站可以下载(1)打开WinDbg工具,通过菜单“File”->“Open Crash Dump”打开dmp文件。
2023-06-16 23:14:03
5675
原创 WebAssembly(wasm) debug调试c++项目
一、安装调试工具Chrome Devtools使用Chrome89+ 版本,点击https://chrome.google.com/webstore/detail/cc%20%20-devtools-support-dwa/pdcpmagijalfljmkmjngeonclgbbannbx下载 C/C++ DevTools Support (DWARF)工具二、启用调试配置F12开发者模式下点击设置。在实验性一栏找到WebAssemblyDebugging 项目,勾...
2022-01-22 21:52:52
3008
原创 图像原始格式 YUV444 YUV422 YUV420 详细解析
前段时间搞x264编码测试,传参的时候需要告诉编码器我的原始数据格式是什么,其中在x264.h头文件中定义了如下一堆类型。但是这个定义只是对于这个应用而言,对于其他的应用或者场景中,相同的数据格式却有着不同的名字,于是为了弄懂他们的差别关系,检索了一大堆信息,整理了一个图文出来如下。首先要介绍的是YUV444,这种格式占用空间最大,每个像素点有一个Y分量+一个U分量+一个V分量所以和rgb一样每个像素点占用3个字节!但是根据UV存储顺序不一样,又有两种不同的格式。...
2021-10-04 11:00:14
19948
1
原创 chromium中的base库 ipc进程间通信 ChannelProxy分析
1. chromium进程通信的基本模式进程间通信,叫做IPC(Inter-Process Communication),在Chrome不多的文档中,有一篇就是介绍这个的,在这里。Chrome最主要有三类进程,一类是Browser主进程,我们一直尊称它老人家为老大;还有一类是各个Render进程,前面也提过了;另外还有一类一直没说过,是Plugin进程,每一个插件,在Chrome中都是以进程的形式呈现,等到后面说插件的时候再提罢了。Render进程和Plugin进程都与老大保持进程间的通信,Rende.
2020-08-04 23:48:52
1989
原创 【网络模拟,丢包】Network Emulator for Windows Toolkit和Network Link Conditioner
软件界面:正常的网络时ping一下其他PC:正常的网络环境下没有丢包,延迟时间<1ms接下来使用NEWT,创建一个过滤器,可以在菜单中点击configuration->new filter,也可以点击快捷按钮进行创建:弹出的界面中,点击add按钮后,点击close按钮Filter List Property框的下方列表中为排除的网段和协议的选项,由于Network Type中勾选的是All Network,点击add的按钮默认添加的是所有网段和协议,故此处不点击勾选按钮接着创
2020-07-21 11:06:15
2348
3
原创 chromium的base源码阅读一 callback的使用
简介本文描述下chromium使用base库中的callback,相关代码位于base库的根目录下的callback及cal...
2020-07-14 18:32:00
1073
原创 使用VS2019和WDK10编译OpenVPM 2.5
编译OpenVPИ 2.5写在前面非常重要:需要64位操作系统才能完成编译!环境搭建前期准备安装VS1029安装WDK 10安...
2020-06-17 15:06:37
924
4
原创 使用 VS2019和WDK10 编译Tap-Windows6的教程
编译Tap-Windows6写在前面非常重要:需要64位操作系统才能完成编译!环境搭建前期准备安装VS1029安装WDK 10...
2020-06-17 15:01:18
3685
3
原创 快速上手python socket编程
之前在编写四层发现的代码时都是使用TCP/UDP协议, 但是看了很多的代码都是用socket来完成的,所以就 来学习一下socket。什么是socket网络中的两台主机之间进行通信,本质上是主机中所 运行的进程之间的通信,两个进程如果需要进行通信 ,最基本的前提是每一个进程要有一个唯一的标识。在本地进程通信中可以使用PID来唯一标识一个程, 但PID在 本地是唯一,可以用 "IP地+ 协议+端口号" 来组成唯一标识的网络进程,这就是socket。无论使用何种网络协议,最本质上都是在进.
2020-06-02 14:32:15
392
1
原创 Boost::signals2 类QT的信号槽实现机制
signals2 基于Boost里的另一个库signals,实现了线程安全的观察者模式。它是一种函数回调机制,当一个信号关联了多个槽时,信号发出,这些槽将会被调用。其实Qt也提供了它自己的信号和槽机制,那个是非常的灵活和好用的,但是它依赖于Qt的框架,所以退而求其次,选择了Boost提供了signals2;signals2库位于命名空间boost::signals2中,为了使用它,需要包含头文件<boost/signals2.hpp>;文章目录 信号(Signal)..
2020-05-22 10:33:15
1626
原创 Windows过滤驱动 WFP代码基本流程的剖析 bypass前期准备
今天实际看一下,WFP的Callout驱动的代码。先从DriverEntry开始:1,在DriverEntry需要创建驱动对象和设备对象,1.1 由于不是PNP设备,需要设置创建驱动对象的标志为config.DriverInitFlags |= WdfDriverInitNonPnpDriver.1.2 调用WdfDriverCreate创建驱动对象。1.3 调用WdfControlDeviceInitAllocate通过驱动对象创建 WDFDEVICE_IN...
2020-05-12 13:46:00
2485
原创 StrongSwan安装部署、配置使用方法总结
StrongSwan官网:https://www.strongswan.org/下载地址:https://www.strongswan.org/download.html一、StrongSwan安装1.编译安装1.我习惯创建/opt/package目录,用于存放下载的程序包文件[root@ecs-e84a package]# mkdir -p /opt/package...
2020-05-07 18:38:01
25911
原创 跨平台qt程序的CMakeLists.txt配置转为平台的qt的.pro项目工程文件
一些比较正规的跨平台qt项目没有.pro项目文件只有CMakeLists.txt文件,如果要编译调试的话得转为qt项目cd到源码目录的CMakeLists.txt文件夹下使用命令:qmake -project会生成一个*.pro文件,可以直接使用QT打开,一般情况下比使用QT直接打开cmakelist载入的信息全面。有些工程载入pro文件反而丧失了信息,载入camkelist却能...
2020-03-24 13:40:18
4841
转载 FMPEG4.1 - 音频解码
FFMPEG4.1 - 音频解码原文件为采样率44100,单声道,fltp音频格式的mp4文件解码后,将fltp转变为s16标准的pcm格式然后使用ffplay播放:ffplay -ar 44100 -ac 1 -f s16le -i 2.pcm1、下面是使用swr_convert进行转换s16的代码// 解码为PCM格式文件// 检查解码内容,使用如下命令:#in...
2019-12-04 10:59:15
478
转载 FFMPEG4.1 - 视频解码与解码(上)
一、视频解码1、使用sws_scale转换格式为yuv420p,保存在文件中原mp4的宽高为640x640,改变了宽和高,为原来的1/2测试播放命令:ffplay -video_size 320x320 -pix_fmt yuv420p -i 2.yuv#include <memory>extern "C" {#include "libavcodec/avc...
2019-12-04 10:55:47
436
原创 音视频文件码率与文件大小计算公式
编码率/比特率直接与文件体积有关。且编码率与编码格式配合是否合适,直接关系到视频文件是否清晰。在视频编码领域,比特率常翻译为编码率,单位是Kbps,ps是每秒的意思,例如800Kbps其中,1K=1024 1M=1024Kb 为 比特(bit)这个就是电脑文件大小的计量单位,1KB=8Kb,区分大小写,B代表字节(Byte)s 为 秒(second) p 为 每(per)以800kb...
2019-12-03 12:11:18
11772
转载 用FFmpeg获取视频流+音频流的信息(编码格式、分辨率、帧率、播放时长...)
我们经常需要知道一个媒体文件所包含的媒体流的信息,比如文件格式、播放时长、码率、视音频编码格式,视频分辨率,帧率,音频属性等信息。如何使用FFmpeg API获取这些信息呢?下面我会给出一个完善的类,这个类封装了FFmpeg读取文件信息的相关的API,读者只需要调类的方法就可以获得相关的信息。这个类能够读取媒体文件的哪些信息呢?假如我们给出一个媒体文件(MP4,AVI,MKV。。。),里面至少...
2019-11-28 18:28:48
5963
转载 android gradle自动构建大总结
一、自动构建背景 日常出版本和线上出版本时,需要手动修改一些配置,包括key配置、线上/测试环境配置、版本号增加等,过程繁琐。所以对构建脚本进行改进,达到自动构建目的。 PS:build.gradle 完整脚本在文章末尾 二、自动打包说明1. 打测试包 命令:gradle assemble...
2019-10-29 15:15:46
555
转载 自定义GLSurfaceView+Opengl es(使用了VBO)实现摄像头预览
在https://blog.csdn.net/llxyy299/article/details/82659683这篇文章中记录了自己创建EGL环境,自己实现一个GLSurfaceView,但是还没有记录怎么用,这篇文章来记录怎么使用自定义的GLSurfaceView。1、首先创建一个CameraHelper...
2018-12-17 15:49:11
471
转载 个人记录 Ubuntu编译ijkplayer
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/NianandShao/article/details/83342424 编译环境Vbox虚拟机Ubuntu 18下载并配置NDK SDK JDKSDK下载NDK...
2018-12-04 10:04:39
162
转载 git删除未跟踪文件
# 删除 untracked filesgit clean -f # 连 untracked 的目录也一起删掉git clean -fd # 连 gitignore 的untrack 文件/目录也一起删掉 (慎用,一般这个是用来删掉编译出来的 .o之类的文件用的)git clean -xfd # 在用上述 git clean 前,强烈建议加上 -n 参数来先看看...
2018-11-22 19:24:48
1281
原创 在windows平台上使用mingw编译PYQT5
1、准备工作下载 pyqt5:https://sourceforge.net/projects/pyqt/files/PyQt5/ 下载zip文件下载 sip :点击打开链接下载 python:点击打开链接下载 mingw:点击打开链接下载 qt5:http://download.qt.io/archive/qt/ 下载mingw版本2、设置环境变量解压 pyqt5 到指定目录,安装qt5到指...
2017-05-04 12:06:16
1548
Connectify2018破解版
2018-10-10
gcc-linaro-arm-linux-gnueabihf 4.9
2015-12-01
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人