自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

weixin_41605683的博客

记录、总结、分享工作点滴

  • 博客(57)
  • 资源 (1)
  • 收藏
  • 关注

原创 Qt项目移植到mac上一些问题汇总

【代码】Qt项目移植到mac上一些问题汇总。

2022-09-13 15:02:12 571 2

原创 mac上breakpad dmp文件脚本实现自动解析

1,需要提前确认目前文件夹下有以下文件:dump_syms、minidump_stackwalk、APPNAME.app.dSYM(这个要和崩溃发生的应用对应,编译时生成,每次发版本需要保存下来),最近的mac项目集成了breakpad收集dmp文件,但是每次解析都要一行一行命令执行,太麻烦了,所以项目完成后,自己整了个下面的parse_crash.sh脚本,方便崩溃问题的快速解决。4,最终会在该文件夹下创建与dmp文件一一对应的txt文件,解析堆栈信息存放在对应文件里。...

2022-08-12 14:34:14 1260

原创 编译MediaPipe自分割GPU模块为aar包,实现抠图替换背景

实现背景替换功能,目前搜到的MediaPipe解决方案都不是GPU方式(自己手机测试,非GPU背景替换时的性能参数CPU使用20%左右、内存120M左右、FPS20左右、Detect time:30-50m),下边是编译GPU方式(GPU方式可以大大减少CPU负担,自测发现CPU使用10%左右)实现的AAR,为了方便编译,我这边使用windows下的子系统wsl。...

2022-08-12 14:05:06 931 2

原创 Qt在mac上的解压问题

项目是用的Qt写的,在windows上稳定运行长时间后,准备移植到mac上,发现windows上的quazip解压在mac上有问题:zip包解压后,替身全部变成原始文件。所以,放弃quazip库,使用Qt自己的QZipReader来解压(bool QZipReader::extractAll(const QString &destinationDir) ),但是又发现extractAll解压出来后全是文件夹(没有文件),这个是Qt自己的api本身就是如此。...

2022-08-08 19:55:07 357

原创 Mark 2022年4月的日子

前记3月4日周五,这周的最后一天班后感觉有点疲惫,想休息下。下班后,在黑夜的路灯下,熟悉地丈量着这条通往住处的道路,心里暗暗地做了决定,这周末不加班了,好好休息下。没想到的是,接下来上海发生了大家都知道的事情,直接导致远程居家办公:3月7号一直到3月31号这段时间,偶尔关注下上海的疫情数字,中间以为会和之前一样,大事化小,小事化了,很快就可以回到公司继续现场办公,最后,没想到这波上海疫情会发展到这种程度(后面说面上超过了武汉,但是危险程度没有超过,毕竟此时的大上海,大部分人都已经打了疫苗的第二针甚至第

2022-04-07 21:49:30 157

原创 批量检测出mp4文件的音量偏小问题

文章目录背景脚本使用背景服务端配置异常导致线上出现大量音频异常的mp4文件。上千个文件不可能让审核人员一个个打开检查,所以需要脚本自动检测出异常的视频。脚本我的脚本名称是check_low_volume.sh,内容如下:baseDirForScriptSelf=$(cd "$(dirname "$0")"; pwd)FFMPEG_PATH="/Volumes/MacintoshHD/Git/ffmpeg/ffmpeg/ffmpeg"Dir=$1THREASHOLD=-30.0LOW_VO

2022-04-06 08:41:52 469

原创 native层日志输出

部分代码如下:Logger.h代码//// Created by Administrator on 2021/12/28.//#ifndef EMLIVESDK_LOGGER_H#define EMLIVESDK_LOGGER_H#include <stdarg.h>#define Logv( msg , ...) log(Log_Level_V , msg , ##__VA_ARGS__);#define Logd( msg , ...) log(Log_Level_D ,

2022-01-04 17:38:33 886

原创 java.lang.IllegalStateException: Only fullscreen activities can request orientation

文章目录1,问题2,原因3,解决1,问题升级target version28后出现java.lang.IllegalStateException: Only fullscreen activities can request orientation / Only fullscreen opaque activities can request orientation2,原因安卓源码全局搜索该报错信息发现:版本26的源码是这样晒的, if (ActivityInfo.isFixedOrien

2021-11-24 09:23:37 368

原创 挖空屏、水滴屏等动态隐藏显示状态栏和导航栏

也没什么特别的,主要是可能在高版本上出现页面跳动或闪烁,直接上代码, private void setSystemUIVisible(boolean visible){ Window window = mWindow; if(window == null){ return; } WindowManager.LayoutParams attr = window.getAttributes(); i

2021-11-12 16:00:33 306

原创 ViewPager设置android:layout_height=“wrap_content“失效的根本原因和解决方案

文章目录准备知识:1,原因分析(源码里找原因)2,解决方法方法一、直接在xml中给ViewPager设置layout_witdh=100dp(具体的某个值)方法二、重写ViewPager的onMeasure,在里面修改它的measureSpec准备知识:1,xml布局文件:在LayoutInflater里的parser解析,就和普通的标签文件解析一样,通过反射实例化view并获得attrs.2,LayoutParams:LayoutInflater.inflate时如果root!=null会去根据xm

2021-08-20 10:32:08 2149

原创 安卓动态加载资源的实现方案

文章目录准备知识:在项目中可能会遇到需要在应用内动态或静态添加皮肤或多国文字切换等资源类修改需求准备知识:安卓的资源打包会生成一个resources.arsc文件,将生成的apk拖到android studio可以看到里面的内容(如下图):主要两个方案:一、...

2021-08-10 11:25:26 698

转载 Android 平台 Native 代码的崩溃捕获机制及实现

好东西分享一下,出自:https://mp.weixin.qq.com/s/g-WzYF3wWAljok1XjPoo7w一、背景在Android平台,native crash一直是crash里的大头。native crash具有上下文不全、出错信息模糊、难以捕捉等特点,比java crash更难修复。所以一个合格的异常捕获组件也要能达到以下目的:支持在crash时进行更多扩展操作,如:打印logcat和应用日志上报crash次数对不同的crash做不同的恢复措施可以针对业务不断改进和适应二、现有的方案其实

2021-07-07 17:52:56 1104

原创 android native crash 分析和解决

文章目录常见错误:1,日志及其解释:2,使用工具定位问题代码2.1,ndk-stack2.2,addr2line.exe2.3,objdump.exe常见错误:初始化错误数组/迭代器/指针访问越界访问无效/空指针对象内存泄露参数错误堆栈溢出类型转换错误等1,日志及其解释:日志收集,默认已经有了哈,如果是自己测试收集日志可以直接:adb logcat -b crash > logs.txt06-30 18:19:07.867 F/DEBUG (32224): *** ***

2021-07-05 13:25:45 1102 8

原创 lame源码android studio下编译

1,下载lame源码下载地址:https://lame.sourceforge.io/download.php2,

2021-06-28 17:07:01 370 4

转载 Windows下ppt放映获取不到窗口的问题

一、问题 在屏幕分享或者投屏,选择单个应用窗口进行分享或者投屏时,当我们选择了PPT的窗口,如果在分享的中途,点击了放映PPT,此时会新创建一个窗口,句柄HWND也会不一样,但是此时远端看到的还是我们最开始那个PPT窗口 二、要求 1、PPT放映后可以自动切换到PPT幻灯片放映窗口,并且结束放映后可以自动切换到原来的窗口 2、使用 Alt + Tab 键可以自动切换PPT放映窗口和原窗口 三、实现步骤(假设我们这里已经拿到了最开始的那个可以编辑的...

2021-06-23 14:10:41 636 1

原创 渲染界面添加水印等思路

文章目录预备知识方案一方案二预备知识默认已经将相机采集的数据通过opengl渲染在安卓的surface上了。渲染需传的主要参数是顶点坐标、纹理坐标和纹理。既然是想将水印放到相机已经采集的纹理上,肯定需要传递水印转换来的纹理到shader里面去,这一步简单,关键是水印坐标如何转换并传递进去。我们要知道渲染的大概理解:surface(如整块黑板)->viewport(如黑板上的显示区域,坐标转换成了中心为(0,0),范围是-1~1的xy轴坐标)->顶点着色器顶点坐标(如在显示区域绘制的图形

2021-06-08 15:10:07 300

原创 Android 文字动态高亮读取进度效果

文章目录1,效果图2,代码结构和实现3,其它1,效果图类似歌词的效果。播放下面文字的音频,同时音频播放的进度和文字高亮进度保持一致。2,代码结构和实现简单的类图:ISubtitleView接口代码如下:/** * 简要功能描述 * <p> * <详细功能描述> * * @author : liuxs * @date : 2021/3/18 */public interface ISubtitleView { /** * 获取当前的带

2021-05-19 11:31:33 289 2

原创 安卓 eglMakeCurrent使用

安卓要想在native层使用egl api,需要先执行eglMakeCurrent,下面是相关代码。m_egl_display = eglGetDisplay(EGL_DEFAULT_DISPLAY); if (m_egl_display == EGL_NO_DISPLAY) { ml_logE << "eglGetDisplay failed." << std::endl; return; } EGLint major_ve

2021-05-18 19:46:08 589

原创 安卓opengl基本使用

创建program //创建着色器对象 //顶点着色器(GL_VERTEX_SHADER)/片段着色器(GL_FRAGMENT_SHADER) int shader = glCreateShader(type); if (shader == 0) return 0;//创建失败 //加载着色器源 glShaderSource(shader, shaderSource); //编译着色器

2021-05-13 16:41:50 470 2

转载 VuePress搭建自己的博客

有阅读障碍的同学,可以跳过第一至四节,下载我写好的工具包: git clone https://github.com/zhangyunchencc/vuepress-devkit.git 然后从第五节开始看。一、为什么你需要一个博客?优秀的程序员都在写博客,写博客有很多好处:帮助自己梳理、总结、理解知识点(个人提升)帮助别人理解知识点(好人一生平安)简历更好看,更多面试机会(升职加薪)二、什么是 VuePress,为什么要使用 VuePress ?VuePress&.

2021-05-12 10:25:01 180

原创 ffprobe常用命令使用

文章目录前言1,ffprobe -show_format的使用2,ffprobe -show_streams的使用3,ffprobe -show_packets的使用4,ffprobe -show_frames的使用样式前言下面的命令主要是按照包含关系的顺序排序的:文件(对应format)、文件里面的流(对应是stream)、流的组成packet(对应的是packets)、packet里面包含的frame(对应的是frames)1,ffprobe -show_format的使用用来查看当前文件的信息

2021-05-07 17:29:24 914

原创 安卓播放语音时,蓝牙耳机、有线耳机、听筒、免提切换

文章目录1,效果图2,语音播放输出方式切换代码3,是否连接耳机判断、监听管理类1,效果图来电图:接通后的默认听筒播放图:点击免提后的图:当连接上有线耳机或者蓝牙耳机时,免提按钮不可以点击2,语音播放输出方式切换代码下面切换工具类针对的是StreamType为AudioManager.STREAM_VOICE_CALL(注意不是AudioManager.STREAM_MUSIC)package com.eastmoney.emvideovisit.util;import androi

2021-04-30 16:26:03 1934 4

原创 android studio使用cmake编译生成库

1,app build.gradle里加上如下:(这里需要自己先创建一个CMakeLists.txt空文件,如果没有安装cmake记得先安装cmake)externalNativeBuild { cmake { path file('src/main/cpp/CMakeLists.txt')//也可以右击项目app可以link C++自动添加 } } ndk { abiFilters "armeabi", armea

2021-03-21 15:12:43 768

原创 基于ffmpeg的播放器,播放m3u8文件时,seek问题

文章目录1,准备知识,seek代码流程:策略:2,问题描述,3,原因分析,1,准备知识,seek代码流程:首先,调用seek设置pls->seek_timestamp等参数ffplay.c:avformat_seek_file->av_seek_frame -> utils.c:seek_frame_internal -> hls.c:hls_read_seek然后,在read_thread里读取packet时是否有seek操作,有的话则判断当前packet和seek ti

2021-03-06 10:01:10 1926 5

原创 msys2下载和编译ffmpeg debug版本,并且使用Qt debug或查看源码

1,官网下载msys2-x86_64-20210105.exe和ffmpeg源码2,打开msys2_shell.cmd,去掉set MSYS2_PATH_TYPE=inherit的注释并运行3,pacman -S make下载make4,./configure --toolchain=msvc --enable-shared --prefix=../output_lib --disable-x86asm --enable-debug5,make install后将D:\Git\ffmpeg\..

2021-02-04 14:17:26 291

原创 安卓硬解MediaCodec主要api

获得输入数据inIndex/** * Returns the index of an input buffer to be filled with valid data * or -1 if no such buffer is currently available. * This method will return immediately if timeoutUs == 0, wait indefinitely * for the availability of an input buffer

2021-01-29 16:04:01 415

原创 ffmpeg实现变速播放的两种方案

文章目录1,变速变调2,变速不变调(使用sonic)3,注意1,变速变调在ffplay.c里找到static int audio_decode_frame(EMAVPlayer *player)方法,修改如下(倍速值为player->pf_playback_rate)://设置转换参数 is->swr_ctx = swr_alloc_set_opts(NULL, is->audio_tgt.channel_layout, is->audio_tgt.f

2021-01-26 15:57:07 4159 2

原创 shell脚本上传到maven

文章目录1, 新建脚本文件2,新建配置文件3,执行命令4,上传结果检查5,使用另一种方式上传mavn,sh文件脚本执行上传。区别于这一篇1, 新建脚本文件新建mavnpost.sh(名字随意)内容如下:VERSION=$1 #$1在shell中表示传入的第1个参数if test -z "$VERSION";then #test –z 字符串 表示字符串的长度为零返回true echo "not specify sdk version." exit -1fimvn -s set

2021-01-08 15:10:28 465

原创 基于AndroidVideoCache实现预加载

https://github.com/danikula/AndroidVideoCachedependencies {compile project(’:library’)compile ‘com.android.support:support-v4:23.1.0’compile ‘org.androidannotations:androidannotations-api:3.3.2’// compile ‘com.danikula:videocache:2.7.1’compile ‘co

2020-12-22 08:52:03 927

原创 git submodule使用

对于较大的项目,被划分为多个模块,多人同步开发,可以使用多个子git库。具体实现命令和解释如下:cd projectRoot //项目根目录文件夹下git submodule add projectPartA.git projectPartA//将地址projectPartA.git的库作为子git库,并且文件夹名为projectPartA执行完上面后git status可以看到多出.gitmodules和projectPartA文件夹.gitmodules里面的内容类似如下:[submodul

2020-12-05 09:45:31 81

原创 http文件上传理解

文章目录1,postman上传文件2,代码上传文件3,解释MIME(Multipurpose Internet Mail Extensions)多用途互联网邮件扩展类型。是设定某种扩展名的文件用一种应用程序来打开的方式类型,当该扩展名文件被访问的时候,浏览器会自动使用指定应用程序来打开。多用于指定一些客户端自定义的文件名,以及一些媒体文件打开方式。1,postman上传文件如下图:勾选Content-Type2,代码上传文件QT代码: QString fileName; if

2020-12-03 20:12:46 459

转载 断点续传实现原理

我们都用过网盘,不管是例如百度网盘之类的公共网盘,还是自己搭建的私有网盘,都会或多或少的涉及到断点续传和秒传。断点续传和秒传大大提高了网盘上传的效率,下面我们就来讲解一下这两种技术的具体原理和实现,这里的讲解不涉及任何前后端编程语言,适合所有语言开发人员阅读。零、断点续传这里以上传为例,下载方式的断点续传类似。简述原理断点续传说白了就是将一个文件按照一定的规则人为的分割成多个小文件,然后客户端每次只上传一个小文件(当然我们也可以利用多线程技术每次上传多个小文件),服务器接收到上传过来的小文件后根据一定的规则

2020-12-03 17:05:45 2130

原创 Kotlin基本使用

package com.xs.base.networkimport android.view.Viewimport android.widget.Buttonimport android.widget.CheckBox/** * 简要功能描述 * * <详细功能描述> * * @author : liuxs * @date : 2020/01/03 *///构造函数ModuleApi(var a:Int)是主构造函数,后面的IAPi()是类才需要(),如果是i

2020-12-02 16:42:43 147

原创 Android Studio升级4.1.1后各种错误和解决

升级了Android Studio后编译出现CMake Error: CMake was unable to find a build program corresponding to “Ninja”.CMAKE_MAKE_PROGRAM is not set.执行编译查看编译详细信息gradlew :emsinglerecord:assembleDebug --stacktrace --info确认路径下...

2020-11-27 15:18:06 5967 17

转载 使用Fiddler抓包

    Fiddler不仅可以对手机进行抓包,还可以抓取别的电脑的请求包,今天就想讲一讲使用Fiddler手机抓包!使用Fiddler手机抓包有两个条件:一:手机连的网络或WiFi必须和电脑(使用fiddler)连的网络或WiFi是一样的二:手机不能离开电脑太远距离,一定要保持手机可以上网(不能断网)下面是操作步骤: 1,启动Fiddler,打开菜单栏中的 Tools > Fiddler Options,打开“Fiddler Options”对话.

2020-11-21 15:54:19 353

原创 Moco使用过程

简介实际开发中,如果遇到后端接口开发跟不上前端开发,或者前端开发需要测试模拟一些服务端返回的边界测试参数等情况,可以用到moco工具模拟服务端接口并且返回自己想要的参数。Moco 是一个搭建模拟服务器的工具,其支持 API 和独立运行两种方式,前者通常是在 junit 等测试框架中使用,后者则是通过运行一个 jar 包开启服务。接下来讲的是独立使用的使用过程。1,下载moc jar包下载路径:https://repo1.maven.org/maven2/com/github/dreamhead/mo

2020-11-21 15:38:00 551

原创 时间复杂度汇总

1,设语句 i*=2运行t次,则,t=maxtt,s.t.2t<n,即t是使2^t<n成立最大的t。故t=log2n(向下取整)。故时间复杂度O(log2 n)void fun(int n){ int i = 1; while(i<n) i*=2;}

2020-11-19 13:50:24 889

原创 QT PC 使用QLabel实现circle图片显示和图片旋转动画的功能

文章目录一、实现图片circle显示二、旋转动画功能1,一种是通过设置定时器不停地更新2,第二种方法是使用属性动画QPropertyAnimation3,结合上面两种方法的优缺点,自己总结了第三种方法一、实现图片circle显示大概思路是:先获得一个周边透明的圆形画布(安卓是画布,这里是painter),然后将要显示的图片画上去,这样获得了圆形的pixmap,将pixmap设置到QLabel上后OK。void CircleLabel::setCirclePixmap(const QPixmap &a

2020-10-14 15:56:18 2747 3

转载 C++开发者都应该使用的10个C++11特性

在C++11新标准中,语言本身和标准库都增加了很多新内容,本文只涉及了一些皮毛。不过我相信这些新特性当中有一些,应该成为所有C++开发者的常规装备。你也许看到过许多类似介绍各种C++11特性的文章。下面是我总结的,C++开发者都需要学习和使用的C++11新特性。1、auto在C++11之前,auto关键字用来指定存储期。在新标准中,它的功能变为类型推断。auto现在成了一个类型的占位符,通知编译器去根据初始化代码推断所声明变量的真实类型。各种作用域内声明变量都可以用到它。例如,名空间中,程序块中,或是f

2020-09-23 10:08:07 213

原创 QT线程简单使用

mark一下,QT线程使用://可以waitForFinished等待执行完成,但是无法暂停和取消 //调用外部函数 QFuture<void> f1 =QtConcurrent::run(func,QString(index++)); //调用类成员函数(分为const引用和指针) QFuture<void> f2 =QtConcurrent::run(this,&Widget::myFunc,QString("aaa")); //

2020-09-08 17:53:28 409

反编译tools.zip

里面有使用文档 apktool d Mms.apk dex2jar classes.dex

2021-08-19

空空如也

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

TA关注的人

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