- 博客(89)
- 资源 (6)
- 收藏
- 关注
原创 Android FFmpeg 编译可执行命令程序(依赖动态库)
项目中有两种情况用到 FFmpeg :C++ 底层代码调用 FFmpeg 用于音视频解码Android 上层使用 FFmpeg 命令行工具用于音视频裁剪、分离、加水印等一般用法是编译一份 FFmpeg 静态库或动态库(大小 4M+)用于底层依赖和调用,再编译一份 ffmpeg 可执行程序(大小 4M+),但这样实际上项目中有两份 ffmpeg 核心库,会增加安装包体积。因此优化如下:编译一份 libffmepg.so 用于底层代码依赖和调用(大小 4M+);将 ffmpeg.c 等代码依赖
2020-07-15 12:09:33
1041
1
原创 编译OpenCV Android库(自定义配置)
根据自己需要的模块交叉编译 Android OpenCV 库,如下面的脚本只编译了 opencv_core 、opencv_imgproc、opencv_video 三个模块,如果需要裁剪自定制,可以修改 build_opencv_modules 函数,打开或关闭你需要的模块。模块所需要依赖的其他模块可在 OptionArgs.txt 里查找 xxx_LIB_DEPENDS,xxx 为要编译的模块。比如,要编译 opencv_video,可以在 OptionArgs.txt 里搜索 opencv_video
2020-06-23 20:51:35
5026
4
原创 MNN 编译不过问题
/Users/Alan/work/VideoAudio/FaceDetect/MNN-master/3rd_party/flatbuffers/src/idl_gen_cpp.cpp:77:3: error: constructor for ‘flatbuffers::cpp::CppGenerator’ must explicitlyinitialize the const member ‘...
2019-10-30 20:39:12
1658
原创 C/C++ Main获取命令行参数
在用 C/C++ 写一些工具时,需要通过命令行传一些参数,这样就可以在命令行终端使用该工具或在脚本中使用该工具,从而实现批量处理。比如近期需要实现一个对文件进行加解密的工具,我需要通过命令行传递如下参数:需要处理的输入文件;处理类型:加密还是解密;处理多少长度;输出文件;1、函数说明本文采用的短参数,函数定义如下:#include <unistd.h> //系统头...
2019-09-28 13:41:17
11500
1
原创 OpenCV flip transpose 实现图像旋转90°、180°、270°
opencv 图像旋转,使用 opencv flip transpose 实现图像旋转 90 180 270
2019-09-10 20:34:25
9436
1
原创 Android 无线调试手机(WiFi 调试)
今天调试时手机没电了,USB 插在电脑上充电非常慢,因此想着试试无线调试,手机查找电源上快速充电。1、手机和电脑连接同一局域网(连同一个 WiFi)2、在手机的设置、网络连接查看连接的 WiFi 下手机的 IP 地址3、手机连上电脑,输入命令:adb tcpip <端口号>,<端口号> 可任意取,只要没被占用,如 6666 4、拔掉数据线输入命...
2019-05-27 20:55:14
18245
5
原创 Android JNI 编程之动态注册(设置返回 long float double 型数据)
jni静态注册和 jni动态注册,jni返回double型数据, jni返回float型数据,jni返回long型数据,jni返回java对象,jni返回传递对象静态注册理解和使用方式简单, 使用相关工具按流程操作就行, 编码出错率低JNI 层函数名特别长,且当需要更改类名,包名或者方法时, 需要按照之前方法重新生成头文件, 灵活性不高初次调用 native 函数时要根据函数...
2019-05-18 21:14:58
1196
1
原创 Android 使用 mp4parser 做视频拼接合并
做短视频拍摄时,在分段录制结束需要将多个视频片段拼接成一个视频文件,然后进入预览界面播放。有两种方案:方案一:使用 FFMpeg 进行视频拼接,命令如下:// inputListFilePath 为需要合并的文件列表文件,每行一个文件路径String cmd = "ffmpeg -y -f concat -safe 0 -i " + inputListFilePath + " -c co...
2019-04-16 01:07:07
4852
1
原创 Python从txt文件中读取float数据
有如下存在 txt 文件的数据,需要将其读取为 float 型数据并处理:0.000000000000000000e+00 0.000000000000000000e+000.000000000000000000e+00 0.000000000000000000e+001.000000000000000000e+00 5.876317942364757073e+031.0000000000...
2019-04-11 20:02:33
16564
7
原创 Mac 查找目录下包含某字符串的所有文件
如题,在需要查找的目录下,输入如下命令:grep -n "get_spg2lsf" -r ./该命令会查找当前目录及其子目录下所有包含指定字符串的文件,会列出文件位置、该行的内容以及行号。如下:...
2019-04-11 02:00:24
22340
1
原创 TensorFlow 安装指定版本:Could not find a version that satisfies the requirement tensorflow
Mac OS 安装 TensorFlow 出现如题错误。Collecting tensorflow==1.5 Could not find a version that satisfies the requirement tensorflow==1.5 (from versions: 1.13.0rc1, 1.13.0rc2, 1.13.1, 2.0.0a0)No matching dis...
2019-04-11 01:50:25
1507
原创 Failed to load the native TensorFlow runtime in Mac OS 10.11.6
当前环境:Mac OSX 10.11.6TensorFlow installed with pipTensorFlow version: 1.13.0Python version: 3.6.5执行:import tensorflow as tf 时报如下错误:Traceback (most recent call last): File "/Users/mikko/dev/wi...
2019-04-11 01:35:05
6028
2
原创 Python 降级到3.6版本的解决方案(Mac降低python版本)
Python 降级到3.6版本的解决方案,Mac降低python版本
2019-04-11 00:44:36
27334
1
原创 OpenCV C/C++实现图像拼接(opencv 贴小图到大图)
利用 OpenCV 实现将多张小图拼接成一张大图,并支持小图放任意位置。OpenCV C++实现图像拼接,opencv 贴小图到大图,opencv 贴多张图到大图
2019-03-06 21:53:58
7990
1
原创 Android 使用 mp4parser 做视频裁剪
做音视频时我们很多时候需要做音视频裁剪,本文介绍使用开源库 [mp4parser](https://github.com/sannies/mp4parser) 做裁剪。使用时先在 gradle 中配置依赖:compile 'com.googlecode.mp4parser:isoparser:1.1.21'将 mp4parser 封装成音视频裁剪工具类:import android.t...
2018-11-20 20:59:47
5629
1
原创 OpenCV 绘制人脸检测框和关键点
在做人脸检测时,我们需要将检测的结果绘制到图片上查看效果,这时可以利用 OpenCV 的基本绘图函数将人脸检测框和人脸关键点绘制到原图上。关键代码如下:// TODO FaceDetectEngine 初始化cv::Mat image = cv::imread(test_file, cv::IMREAD_UNCHANGED);// 原始图像cv::Mat gray;cv::cvtCol...
2018-11-16 20:06:16
7566
2
原创 Python 用 OpenCV 显示文字 (6)
利用 OpenCV 自带的 putText() 函数绘制文字 并显示,其函数声明如下:cv2.putText(img, text, org, fontFace, fontScale, color[, thickness[, lineType[, bottomLeftOrigin]]])img:要画的圆所在的矩形或图像text:要绘制的文字org:文字在图像中的左下角坐标fontFa...
2018-11-15 20:35:40
14117
3
原创 Python 用 OpenCV 画椭圆 (5)
利用 OpenCV 自带的 ellipse() 函数画椭圆并显示,其函数声明如下:cv2.ellipse(img, center, axes, rotateAngle, startAngle, endAngle, color[, thickness[, lineType[, shift]]]) img:要画的圆所在的矩形或图像center:椭圆的中心点axes:椭圆的长半轴和短半轴的...
2018-11-13 21:38:13
6980
1
原创 Python 用 OpenCV 画矩形 (4)
利用 OpenCV 自带的 rectangle() 函数画矩形并显示,其函数声明如下:cv2.rectangle(img, pt1, pt2, color[, thickness[, lineType[, shift]]]) img:要画的圆所在的矩形或图像pt1:矩形左上角的点pt2:矩形右下角的点color:线条颜色,如 (0, 0, 255) 红色,BGRthickness...
2018-11-13 21:15:03
42383
6
原创 Python 用 OpenCV 画线 (3)
利用 OpenCV 自带的 line() 函数画直线并显示,其函数声明如下:cv2.line(img, pt1, pt2, color[, thickness[, lineType[, shift]]])img:要画的圆所在的矩形或图像pt1:直线起点pt2:直线终点color:线条颜色,如 (0, 0, 255) 红色,BGRthickness:线条宽度lineType:- ...
2018-11-12 22:11:27
49768
1
原创 Python 用 OpenCV 画点和圆 (2)
利用 opencv 里自带的circle() 函数可以绘制以一个点为圆心特定半径的圆,其函数的声明如下:cv2.circle(img, center, radius, color[, thickness[, lineType[, shift]]])函数参数含义如下:img:要画的圆所在的矩形或图像center:圆心坐标,如 (100, 100)radius:半径,如 10color...
2018-11-10 21:20:21
131057
4
原创 Python 安装 OpenCV 及显示图像 (1)
1、Python 安装 OpenCVPython 安装 OpenCV 的命令很简单,就一条命令,如下(前置条件是已安装 pip):pip install opencv-python出现如下输出即表示安装成功:2、Python 代码中用 OpenCV 读取图片并显示#!/usr/bin/python# -*- coding: UTF-8 -*-import numpy as np...
2018-11-10 20:08:17
2261
原创 OpenCV Mat 数据读写
1、创建 Mat 对象:// 创建一个 320x240 的 8 位无符号型 4 通道全 0 的 Matcv::Mat mBGRAImg = cv::Mat::zeros(320, 240, CV_8UC4);// 创建一个 320x240 的 8 位无符号型 1 通道全 0 的 Matcv::Mat mGrayImg = cv::Mat::zeros(320, 240, CV_...
2018-11-07 21:39:22
15149
原创 gradle 配置生成不同 ABI 版本及不同名字的 APK
def releaseTime() { return new Date().format("yyyy-MM-dd-HH-mm")}import com.android.build.OutputFileandroid { ... splits { abi { enable true reset() ...
2018-10-19 16:34:14
3571
原创 FileDownLoader https 无法下载问题(SSLHandshakeException)
1、问题:项目下载改为 https 协议,连接代理后使用 liulishuo 的 FileDownLoader 无法下载,抛出异常如下:javax.net.ssl.SSLHandshakeException: java.security.cert.CertPathValidatorException: Trust anchor for certification path not fou...
2018-08-30 20:31:12
4948
2
原创 使用 cmake 编译可执行文件
如我们写好源代码和主函数,可以不使用 IDE 直接用命令行编译成可执行文件。比如需要提供一个工具程序提供给后端通过命令行调用。可能有的人认为直接编译成可执行文件给别人不就 OK 了吗?但问题来了,你本地编译的平台和架构可能和别人的不一样,直接给别人编译好的可执行文件可能跑不起来,举个栗子,我本地是 Mac 电脑,我编译好的执行文件在 Mac 电脑上跑没问题,但服务端同学是 Linux 的就跑不...
2018-08-15 13:15:04
44872
2
原创 编程技巧之用 do{}while(false) 进行多错误处理
编程中我们经常会遇到这样的问题,一个函数中有很多处理逻辑,每个步骤都有可能出错,对于出错的要做相同的错误处理,错误出口很多。那么通常我们怎么处理呢?一般有两种处理方式:if else 多层嵌套如下,可以看到这种处理嵌套逻辑特别深void function() { if(a != null) { if(b() == true) { if(c() == ...
2018-06-30 15:47:01
1044
原创 Python 获取指定文件夹下的目录和文件
经常有需要扫描目录,对文件做批量处理的需求,所以对目录处理这块做了下学习和总结。Python 中扫描目录有两种方法:os.listdir 和 os.walk。一、os.listdir 方法os.listdir() 方法用于返回指定的目录下包含的文件或子目录的名字的列表。这个列表以字母顺序。其得到的是仅当前路径下的文件名,不包括子目录中的文件,如果需要得到所有文件需要递归。 它也不包括 '.' 和...
2018-06-30 15:04:27
65745
原创 Android 拦截音量键,控制系统媒体音量
在上一篇文章中介绍过,在做 SAPA 适配时由于其直连驱动层不经过 Android 的音量增益控制,所以调节系统媒体音量对音量改变无效。如果没有音乐在放的时候,按调节音量的键,默认调节的是铃声的音量,所以在使用 SAPA 播放音频时,因为不经过 Android 层,系统认为没有音乐播放,在按音量键时调节的是铃声音量无法控制播放音量。思路:调用系统 API 强制设置为控制媒体音量截获物理音量键的按键...
2018-06-06 09:19:55
8192
原创 Android 监听系统媒体音量变化
在做 SAPA 适配时由于其直连驱动层不经过 Android 的音量增益控制,所以调节系统媒体音量对音量改变无效。现要调节系统音量时也可以控制播放的音量,那么就需要监听系统音量变化,然后转换成增益给输出数据乘以对应比率从而实现对音量的控制。一般监听音量多是监听手机物理音量按键的点击事件,但是在音量控制面板拖动音量条改变音量就无法监听。那么我们需要分析无论是按音量键还是拖动音量条,系统都做了什么呢?...
2018-05-31 20:10:29
21915
10
原创 java.util.concurrent.ExecutionException
java.util.concurrent.ExecutionException在向项目中添加 .9 图片资源时编译出错,报出如下异常:FAILURE: Build failed with an exception.* What went wrong:Execution failed for task ':app:mergeProductDebugResources'.> Error...
2018-05-04 15:17:32
11306
1
原创 Python 获取命令行参数
一、sys 模块在 Python 中,通过 sys 模块中的 sys.argv 可以访问到所有的命令行参数,它的返回值是包含所有命令行参数的列表。sys.argv :是命令行参数列表len(sys.argv) :是命令行参数个数sys.argv[0]:参数1sys.argv[1]:参数2实例#!/usr/bin/python# -*- coding: UTF-8 -*-"""@Time ...
2018-04-16 08:44:00
2814
原创 JNI 传递和返回基本参数
Java 中的基本类型包括 boolean,byte,char,short,int,long,float,double 这样几种,本文主要介绍上层向底层传递基本类型数据,以及底层向上层返回基本数据类型的情况。jni静态注册,jni动态注册,jni返回double型数据, jni返回float型数据,jni返回long型数据,jni返回java对象,jni返回传递对象
2018-03-31 08:07:13
10758
1
原创 CMake Error: undefined reference to 'vtable for IDenoise'
/Users/XXXXXXX/git/xxxxx/libraries/mediacore/src/main/cpp/audio/webrtc/IDenoise.h:12: error: undefined reference to 'vtable for IDenoise' /Users/XXXXXXX/AndroidDev/sdk/ndk-bundle/toolchains/arm-lin
2017-11-09 11:40:35
1876
原创 CMake Error: shared library text segment is not shareable
在编译ffmpeg时遇到以下错误/Users/XXXXX/Alan/MyAndroidPro/FfmpegLib/app/src/main/cpp/libs/x86/lib/libavutil.a -lm -lz -latomic -lm "/Users/XXXXX/AndroidDev/sdk/ndk-bundle/sources/cxx-stl/gnu-libstdc++/4.9/libs/x...
2017-11-09 11:29:22
2230
翻译 Android OpenGL ES2.0编程教程系列之响应触摸事件(六)
原文链接像旋转三角形一样,通过预设程序来让对象移动对于吸引注意是很有用的,但是如果你想让你的OpenGL图形有用户交互呢?让你的OpenGL ES应用有触摸交互的关键是,扩展你的GLSurfaceView的实现重载onTouchEvent()方法来监听触摸事件。本节内容将向你展示如何监听触摸事件来让用户旋转一个图形。设置触摸事件为了你的OpenGL ES应用能够响应触摸事件,你必须
2016-05-29 15:46:36
1282
翻译 Android OpenGL ES2.0编程教程系列之添加运动(五)
原文链接在屏幕上绘制图形只是OpenGL的相当基础的特点,你也可以用其他的Android图形框架类来实现这些,包括Canvas和Drawable对象。OpenGL ES为在三维空间中移动和变换提供了额外的功能,并提供了创建引人注目的用户体验的独特方式。在本次课程中,你将进一步使用OpenGL ES学习怎样为你的图形添加一个旋转动作。旋转一个图形用OpenGL ES 2.0来旋转一个
2016-05-29 15:10:33
937
动态加载控件(用于图文并茂显示)
2013-09-02
Android OpenGL ES例程代码
2016-05-29
JNI 传递和返回基本参数
2018-03-31
Android 手机sdcard目录或文件的拷贝 移动 删除 递归
2014-09-26
Android 设置Wifi热点、打开与关闭的监听
2015-06-14
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人