自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

原创 Android 常见的多线程设计

Android 常见的多线程设计一. Android 上层业务常见的多线程设计二. 一个播放器的多线程设计1. 视频播放器的原理图:2.播放器的多线程设计三. 总结 Android端的开发多线程并发编程其实并不是很复杂,因为大多数业务都比较简单,都是从服务器拉去数据,在UI上面进行渲染显示,再加...

2020-03-14 16:47:12 38 0

原创 Android 端IjkPlayer交叉编译的逻辑分析

Android 端IjkPlayer交叉编译的逻辑分析交叉编译的原理为什么要交叉编译交叉编译的工具Android NDK 支持的编译器Android NDK 提供了两种编译器: GCC、ClangAndroid平台的交叉编译Android NDK 的目录结构高版本NDK toolchiains目录...

2020-03-14 16:21:06 57 0

原创 JNI(连接Java代码与原生代码的桥梁)

一、前言 我们在学习完AndroidStudio NDK环境3中搭建方式和Android NDK构建系统后,已经明白了如何创建一个简单的Android NDK工程。本篇博客将以前两篇为基础,更深入的了解NDK开发。学习如何通过JNI技术实现Java代码与Native代码的通信; 二、知识点概述...

2019-01-14 17:27:02 290 0

原创 Android NDK构建系统

一、前言 当我们把C/C++代码写好了之后,如何编译成动态库(Java端代码调用)?这就需要我们编写一个构建文档(Android.mk/Application.mk) NDK交叉编译器根据构建文档编译出我们需要的、Java端可以调用的动态库; Android NDK --初始android N...

2019-01-03 17:28:30 148 0

原创 AndroidStudio NDK环境3种搭建方式

一、前言 如今Android开发IDE都是使用的AndroidStudio,之前我写过一篇文章介绍的是如何在Eclipse中搭建NDK环境 Android NDK --初始android NDK 这边博客介绍下在AndroidStudio中搭建NDK环境的三种方式。 二、知识点概述 本片我...

2019-01-02 18:29:06 1285 0

转载 音视频开发指南

参考: android音视频点/直播模块开发 [总结]视音频编解码技术零基础学习方法 android 音视频开发过程 键盘舞者113的博客 转载: Android 音视频开发入门指南 Android开发,本身并不是一个可以走得多远的方向,它只是一个平台,提供了许多封装好的API,让大...

2018-06-08 14:58:18 851 0

转载 C语言SOCKET编程指南

1、介绍 Socket 编程让你沮丧吗?从man pages中很难得到有用的信息吗?你想跟上时代去编Internet相关的程序,但是为你在调用 connect() 前的bind() 的结构而不知所措?等等… 好在我已经将这些事完成了,我将和所有人共享我的知识了。如果你了解 C语言并想穿过网络...

2018-01-31 16:51:53 154 0

原创 全局变量、静态全局变量、静态局部变量和局部变量的区别

变量可以分为:全局变量、静态全局变量、静态局部变量和局部变量。 (1) 按存储区域分,全局变量、静态全局变量和静态局部变量都存放在内存的静态存储区域,局部变量存放在内存的栈区。 (2) 按作用域分,全局变量在整个工程文件内都有效;静态全局变量只在定义它的文件内有效;静态局部变量只在定义它的函数...

2018-01-31 16:10:42 136 0

转载 Android Studio Java代码调试及NDK调试

Android Studio Java代码调试 debug模式断点调试 写一个简单的调试程序,我们先来一个for循环; 设置断点(点击红点位置添加或取消断点) 点击debug模式运行 查看调试面板 简单调试 step ove...

2018-01-24 14:11:13 1484 0

转载 Android JNI局部引用表溢出:local reference table overflow (max=512)

转载:http://blog.csdn.net/xyang81/article/details/44873769 在《JNI局部引用、全局引用和弱全局引用》这篇文章中详细介绍了在JNI中三种引用的使用方式,区别、应用场景和开发注意事项。由于都是理论,看完之后可能印象不够深刻,由其是在开发当中容易...

2018-01-23 19:47:55 481 0

原创 Error: Cannot determine signature for Surface

在进行NDK开发时,我们需要向jni层传递Surface,Bitmap, …… 时,就会出现Error:Cannot determine signature for xxxx; 原因:the javah tool does not recognize Android classes, so yo...

2018-01-20 11:11:14 304 0

转载 [Android NDK]命令行编译C++代码(JNI)的方式(windows和linux通用)

1,假设工程名字叫ProjTest,先建一个ProjTest文件夹,然后在ProjTest目录下新建两个目录:jni和lib,最终结果如下: ProjTest |----jni |----libs 2,在jni目录下加入你的C/C++代码,这里测试用的C代...

2018-01-19 18:08:01 579 0

转载 [Android NDK]添加C++11和C++14支持

网上查了一下,大概时间表是这样的: android ndk从2013年开始支持了C++11,从2015年开始支持C++14。 设置方法: 1、支持标准: 在 Android.mk 中加入 ① c++ 11 标准: LOCAL_CPPFLAGS += -std=c++11 ② ...

2018-01-19 17:58:58 7713 0

原创 Configure CMake

A CMake build script is a plain text file that you must name CMakeLists.txt and includes commands CMake uses to build your C/C++ libraries. If your n...

2018-01-19 16:23:49 268 0

转载 在编译好的SDL2库引入SDL2_image库的编译步骤

一 .前言  由于在使用SDL2开发的过程,需要加载png图片,而SDL2本身不提供加载png图片的功能实现。所以需要在引入SDL2_image库。   如果想查看Android Studio下怎么编译SDL2库,请查看 http://www.cnblogs.com/yongfengnice/p...

2017-12-16 15:40:41 1687 0

转载 Android Studio下编译SDL库的步骤

一. 下载并解压SDL源代码下载链接:https://libsdl.org/download-2.0.php 二. 导入项目2-1.导入项目, 如图:2-2. 找到下载好的SDL源代码,选择android-project,点击OK,如图2-3. 选择一个空目录,作为导入的Android工程目录,然...

2017-12-16 15:28:29 232 0

转载 Android APP终极瘦身指南

Android APP终极瘦身指南

2017-11-30 14:10:57 135 0

转载 ijkplayer程序结构整理

整个程序的结构从文件: ijkplayer_jni.c开始: 参照: static JNINativeMethod g_methods[] = { …… }一、在JNI_OnLoad()/ijkplayer_jni.c 调用ijkmp_global_init()/ff_ffplay.c完...

2017-11-21 11:31:47 676 0

转载 JNI局部引用、全局引用和弱全局引用

本文转载:http://blog.csdn.net/xyang81/article/details/44657385这篇文章比较偏理论,详细介绍了在编写本地代码时三种引用的使用场景和注意事项。可能看起来有点枯燥,但引用是在JNI中最容易出错的一个点,如果使用不当,容易使程序造成内存溢出,程序崩溃等...

2017-10-21 11:54:06 403 0

转载 JNI异常处理

文章转载:http://blog.csdn.net/xyang81/article/details/45770551异常简介异常,显而意见就是程序在运行期间没有按照正常的程序逻辑执行,在执行过程当中出现了某种错误,导致程序崩溃。在Java中异常分为运行时异常(RuntimeException)和编...

2017-10-20 15:32:18 184 0

原创 GLES20.glTexImage2D、GLUtils.texImage2D 使用区别

OpenGL 提供了三个函数来指定纹理: glTexImage1D(), glTexImage2D(), glTexImage3D(). 这三个版本用于相应维数的纹理,我们用到的是 2D 版本: glTexImage2D().函数原型:void glTexImage2D(GLenum target...

2017-10-10 14:34:03 5044 1

转载 shader内置变量和函数

1、uint CreateShader(enum type) : 创建空的shader object;type: VERTEX_SHADER,2、void ShaderSource(uint shader, sizeicount, const **string, const int *length...

2017-10-09 14:23:56 264 0

转载 ffmpeg 新老接口问题及对照集锦

ffmpeg源码包里面有个apichangs文档,里面有各种接口改变的记录,如果你发现接口不能用了,可以去搜索那个文档,可以找到对应的新接口,然后到新接口对应的头文件中找到说明文字网上很多关于ffmpeg (libav)的资料都是N年以前的,而事实上ffmpeg数年来一直在“以时俱进”,因此无论是...

2017-09-04 20:48:08 190 0

转载 Android引用Library的若干问题(全都是坑啊,一定要注意了)

1.库工程里面的assets文件夹无用,不会被打包到APK2.库工程里面的AndroidManifest.xml无用,要声明Activity,必须写到主工程3.当库工程文件中的资源ID和主工程中的资源ID相同时,主工程的资源ID将会覆盖掉库工程的资源ID4.当主工程所引用的两个库工程中有相同的ID...

2017-08-02 20:12:33 5212 2

转载 Ubuntu环境QT出现:-1: error: cannot find -lGL(已解决)

安装完qt之后,构建项目就会出现:-1: error: cannot find -lGL然后使用 $ locate libGL.so 发现/usr/lib/i386-Linux-gnu/mesa/libGL.so.1 /usr/lib/i386-linux-gnu/mesa/libGL.so.1...

2017-06-21 23:32:38 1398 0

原创 Android 小知识

一、创建Dialog时 Dialog dialog = new Dialog(getApplicationContext()); 传入getApplicationContext()上下文在运行期间为什么报错?Caused by: android.view.WindowManager$BadToke...

2017-01-05 18:36:00 211 0

原创 Android NDK --初始android NDK

一、前言Android NDK将用于在Androud平台上的C++开发;Android NDK是SDK的相关工具集,用来扩展Androud SDK的功能,从而使开发人员能够使用机器代码生成的编程语言(如C、C++和汇编语言)实现一些对代码性能要求比较高的模块并将这些模块嵌入到Adroud应用程序中...

2016-10-23 17:49:55 516 0

转载 摄像头Camera视频源数据采集解析

一、前言在视频直播中一般都是两种视频数据源,一个是摄像头数据,一个是录制桌面数据,而一般来说美女妹子直播都是来自于摄像头数据,游戏直播都是录制桌面数据的,那么今天就来看看第一个数据源数据采集分析,Android中使用摄像头的场景很多,在没有直播这个行业出现之前,之前用到摄像头的最多就两个场景,一个...

2016-10-16 17:25:35 14991 3

原创 Android Camera设置颜色格式与Mediacodec编解码颜色格式

前言我们在前面学习的内容都是为了如何通过Camera预览获得录制的视频,然后把音频和视频上传到服务器或把音频与视频合成本地文件保存打好基础;但我们在还需要学习Camera预览的格式以及MediaCodec编解码的颜色格式的联系,否则我们在合成视频、上传到服务器的视频播放时会有颜色异常;比如:颜色不...

2016-10-15 17:15:43 6981 0

原创 AudioRecord、AudioTractor实现音频的录制和播放

前言我们在刚学习多媒体编程的时候,接触音视频的录制时更多的是通过MediaRecorder实现音频的录制;请看我的这篇文章MediaRecorder录制音频及代码的抽取封装 实现音频的播放通过MediaPlayer;可以查看我的这篇博客MediaPlayer播放不同来源的音频文件 SoundP...

2016-10-12 22:31:52 441 0

原创 把一个音视频文件的视频部分抽取出来播放

知识结构MediaCodec: Android中直播视频技术探究之—基础知识大纲介绍、MediaCodec文档翻译 详细介绍了MediaCodec的用法;在这里我们只使用MediaCodec的解码的功能; mMediaCodec.configure(mMediaFormat, mSurface...

2016-10-10 22:43:19 1073 1

原创 实现把一个音频文件的视频抽取出来

前言一个音视频文件是由音频和视频组成的;我们可以通过MediaExtractor、MediaMuxer把音频或视频给单独抽取出来;抽取出来的音频和视频能单独播放;知识结构MediaExtractor :作用是把音频和视频的数据进行分离; 它常用的方法有:1、setDataSource(Strin...

2016-10-09 22:47:58 4424 0

转载 MediaCodec文档翻译

前言之前我们所学习的音视频编解码全都是通过Android已经封装好的MediaRecorder实现的,以后真正在工作中我们很少使用MediaRecorder实现音视频的录制;因为我们接触不了音视频的原始数据,不能对它进行二次处理,比如美颜相机;如今直播的兴起,我们通过直播视频可以看到每一个直播女;...

2016-10-07 23:07:06 1647 0

原创 Android5.0屏幕截屏与屏幕录制

一、屏幕截屏1、屏幕截屏的步骤:1:通过 getSystemService()得到MediaProjectionManager服务; 2:通过MediaProjectionManager创建一个屏幕捕捉意图; 3:通过startActivityForResult开启该意图; 4:创建Imag...

2016-10-07 20:21:22 6658 1

原创 TextureView 实现Camera预览

一、前言在前面的博客中Camera 拍照中我们其实已经介绍过如何通过SurfaceView实现Camera的预览;今天闲着没事就写写怎样通过TextureView实现Camera预览,并介绍下TextureView与SurfaceView的区别。二、知识结构1、相似点我们可能经常使用Surface...

2016-09-15 17:56:06 5606 0

转载 Android中直播视频技术探究之---基础知识大纲介绍

该博客转载于猿是一种能够改变世界的动物!!一、前言最近各种视频直播app到处都是,各种霸屏,当然我们也是需要体验的,关于视频直播的软件这里就不介绍了,在不是技术的人来看,直播是一种潮流,是一种娱乐方式,但是作为一个高技术的,我们除了看看,更重要的是学习技术,其实Android中的视频技术没什么说的...

2016-08-21 08:59:11 1170 0

原创 获取与手机屏幕适中的图片

1、背景我们使用Camera的应用程序捕捉图像时,如:Intent intent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE); startActivityForResult(intent, REQUESTCODE )...

2016-08-20 17:40:40 428 0

原创 Camera 拍照

1、背景同样这篇文章是为了练习代码的抽取能力,其实Camera的拍照后我们会获取到原始照片的数据,这些数据我们可以进行处理;比如加个滤镜,美白等等;这就是我们的美白相机了,但对于图片的处理,我们最好在底层处理;然后把处理的图片数据再转换成图片,最后展示给用户,美白相机的大体流程就是这样的,不过今天...

2016-08-14 16:52:55 319 0

原创 MediaRecorder录制音频及代码的抽取封装

1、背景android提供了MediaRecorder类,通过MediaRecorder录制音频的过程很简单,按步骤进行即可;在很多开发项目中,我们见到代码的封装很好;常常感觉这才是大牛写出的代码,其实我们也是可以写出来的,今天就通过一个MediaRecorder录制音频的实例,进行代码的抽取实现...

2016-08-14 12:07:46 919 0

原创 MediaPlayer播放不同来源的音频文件

1、播放应用的资源文件(在/res/raw中的)播放应用的资源文件需要两步: 1:调用MediaPlayer的create(Context context,int resid)方法,加载指 定资源文件; 2:调用MediaPlayer的start()、stop()、pa...

2016-08-14 10:28:00 2146 0

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