android NDK
文章平均质量分 94
从c语言 到jni 到 ffmpag 音视频处理 一步一个脚印
六道对穿肠
android开发程序员,写过小程序,前端. 喜欢用技术解决实际问题.
展开
-
glide4.11.0封装gfilib优化gif图片加载
文章目录具体步骤 :下载giflib 和 framesequence导入并集成 giflib 和 framesequenceglide的配置gif使用giflib集成开始使用加载思路创建自定义GifDrawable需求: 目前项目中加载进度框采用的是一个gif图片, 使用图片加载框架为glide.Glide 是如何加载 GIF 动图的?首先需要区分加载的图片类型,即网络请求拿到输入流后,获取输入流的前三个字节,若为 GIF 文件头,则返回图片类型为 GIF。确认为 GIF 动图后,会构建一个 GIF原创 2021-04-12 16:14:48 · 1293 阅读 · 0 评论 -
FFMpeg 获取音频播放时长 以及当前时长
https://blog.csdn.net/bixinwei22/article/details/78770090这个说的不错.理论:ffmpeg里面有个time_base的概念,刻度,这是ffmpeg里面时间的基本刻度,时间基.如果把1秒分为25等份,你可以理解就是一把尺,那么每一格表示的就是1/25秒。此时的time_base={1,25} .如果你是把1秒分成90000份,每...原创 2018-11-06 16:57:52 · 12716 阅读 · 0 评论 -
NDK开发中小技巧
LOG日志工具类 将运行时判断是否debug 放入AndroidLog.h中判断,在AndroidLog.h中修改即可区分是否打印日志#ifndef MYMUSIC_ANDROIDLOG_H#define MYMUSIC_ANDROIDLOG_H#include "android/log.h"#define LOG_DEBUG true //日志开关,true为开,其它为关#...原创 2018-11-05 16:24:10 · 325 阅读 · 0 评论 -
Open SL ES 调用ffmpeg 播放声音(有注释用于回看)
资料https://blog.csdn.net/ywl5320/article/details/78503768 http://www.cnblogs.com/renhui/p/9567332.htmlAndroidStudio使用OpenSL ES官方配置文档 https://developer.android.com/ndk/guides/audio/getting-sta...原创 2018-09-15 11:24:22 · 715 阅读 · 1 评论 -
FFMPEG 在linux下编译 给自己看的 一步步做下来终于OK
[TOC] - 下载地址 http://ffmpeg.org/olddownload.html 我下载的是3.0.11版本. 备注: 别搞最新的 要最稳定的 免得编译不通过,掉坑里出不来.注意 NDK版本和FFMPEG的版本 貌似必须对应上 如果对应不上报错正确对应版本 NDK 14 FFMPEG 3.0 终于成功了错误 我在这里卡了很久才明白/bin/sh...原创 2018-09-17 17:44:08 · 1129 阅读 · 0 评论 -
使用OpenSL ES 播放PCM数据(主要用于自己拷贝)
资料:https://github.com/googlesamples/android-ndk里面找到https://github.com/googlesamples/android-ndk/tree/master/native-audio里面是google 的模板代码sd 卡根目录有一个output.pcm 的数据java 的代码public class MainActivity ...原创 2018-10-25 14:49:48 · 589 阅读 · 1 评论 -
1.利用FFMpeg进行MP4视频转YUV格式,2.ffmpeg解码MP4后用surfaceview播放
1 利用FFMpeg进行MP3视频转YUV格式理论:YUV,是一种颜色编码方法 详细看这里https://blog.csdn.net/junzia/article/details/76315120为什么需要转yuv格式 现在绝大多数视频解码后播放的格式都是YUV 所以需要做下YUV格式一个通道. 前面放Y 后面放UV 比例是 4:1:1视频yuv 音频 是...原创 2018-09-05 11:51:06 · 4797 阅读 · 0 评论 -
jni中的线程, 同步以及生产者消费者模式
编译环境centos6.×64线程创建以及结束连接和分离线程例子1例子2多线程问题线程的同步生产者消费者阻塞在条件变量上pthread_cond_wait解除在条件变量上的阻塞pthread_cond_signal线程创建以及结束http://www.runoob.com/cplusplus/cpp-multithreading.html...原创 2018-09-11 17:30:46 · 589 阅读 · 0 评论 -
Makefile 语法 和 CmakeLists 使用
一个工程中的源文件不计其数,其按类型、功能、模块分别放在若干个目录中,makefile定义了一系列的规则来指定,哪些文件需要先编译,哪些文件需要后编译,哪些文件需要重新编译,甚至于进行更复杂的功能操作,因为 makefile就像一个Shell脚本一样,其中也可以执行操作系统的命令。linux 下 编译c 文件 并运行利用vim 创建一个c文件#include <std...原创 2018-08-30 19:36:32 · 13134 阅读 · 0 评论 -
linux 环境配置 ndk jdk tomcat
centos配置NDK环境先看下vim有没有安装 输入vim . 没装的话装一下 1. yum install -y vim* 安装vim下载NDK linux 版本https://developer.android.com/ndk/downloads/ 下载地址(没找到命令下载的地址)下载到本地然后上传到linux服务器(我下载10分钟 上传半个小时)安装zip命令 yum ...原创 2018-08-28 16:57:08 · 298 阅读 · 0 评论 -
JNI函数调用流程,基本数据类型
[TOC] JNIjava native interface什么时候使用:java api 不能满足我们程序的需要的时候。 算法计算,图像渲染 效率要求非常高, 当需要访问一些已有的本地库NDK 工具的集合。帮助开放者快速开放C/C++ 动态库的工具。JNI 开发c 用visual studio , java 用 eclipse例子01 静态方法 jni...原创 2018-08-10 16:23:16 · 1106 阅读 · 0 评论 -
JNI访问静态or非静态方法or构造方法
让eclipse自动加载dll文件.具体操作: 在环境变量里面添加visual studio编译生成的dll文件夹目录.感觉很少用参数中的Jclass 一般都用JNIEnv * env, jobject obj只有用静态本地方法的时候才会出现jClass例子01 c 调用 非静态 java 方法java代码; package test2;import ja...原创 2018-08-15 11:01:51 · 851 阅读 · 0 评论 -
JNI-开发流程 so文件生成.c实现文件拆分,合并,jni中的线程
使用so库和头文件开发gradle指定开发平台,在defaultConfig目录里面 ndk { abiFilters "armeabi","x86" }引入第三方库,在app.gralde中的android目录下 sourceSets.main { jniLibs.sr原创 2018-08-23 14:28:54 · 816 阅读 · 0 评论 -
c++语法基础,构造函数,析构函数,命名空间,
C++ 以前学校的时候写过. 开始写代码了.通过案例学习c++.visual studio 下 面向对象的语言.怎么写一个对象 1. 创建一个空项目 2. c++ 一般情况下 头文件和源文件分开,所以 右键项目在文件资源管理器中打开文件夹,新建两个文件夹include,src.用于存放头文件和源文件 3. 回到项目右键头文件->新建项->位置->选择刚才创建的...原创 2018-08-23 14:45:12 · 844 阅读 · 0 评论 -
c++ 继承 继承 的二义性 虚函数
其他知识关于NULL 的问题 建议以后还是都用nullptr替代NULL吧。 https://blog.csdn.net/gcs6564157/article/details/75045949pragma oncepragma once是一个比较常用的C/C++杂注,只要在头文件的最开始加入这条杂注,就能够保证头文件只被编译一次。父类里面没有默认的构造函数,那么子类里面...原创 2018-08-25 10:47:10 · 435 阅读 · 0 评论 -
c++ 友元函数,模板函数
友元函数.类的友元函数是定义在类外部,但有权访问类的所有私有(private)成员和保护(protected)成员。尽管友元函数的原型有在类的定义中出现过,但是友元函数并不是成员函数。友元可以是一个函数,该函数被称为友元函数;友元也可以是一个类,该类被称为友元类,在这种情况下,整个类及其所有成员都是友元。如果要声明函数为一个类的友元,需要在类定义中该函数原型前使用关键字 friend...原创 2018-08-25 10:47:46 · 1215 阅读 · 0 评论 -
android ndk 05 C语言 _union_enum 联合体 枚举 IO文件操作(文件加密解密)
联合体(共用体)//联合体(共用体)//不同类型的变量共同占用一段内存(相互覆盖),联合变量任何时刻只有一个成员存在,节省内存//联合体变量的大小=最大的成员所占的字节数//比喻:同穿一条裤子#include <stdio.h>#include <stdlib.h>union MyValue{ int x; int y; double z;};void main(){原创 2017-08-29 20:00:59 · 657 阅读 · 0 评论 -
android ndk 04 C语言 结构体_结构体指针,typedef
### 结构体_结构体指针,tyepdef结构体定义#define _CRT_SECURE_NO_WARNINGS#include <stdio.h>#include <stdlib.h>#include <string.h>#include <Windows.h>//上面的头文件 下面几个例子都要有//结构体 关键字 struct //结构体是一种构造数据类型//把不同的数据类型整原创 2017-08-27 16:02:53 · 656 阅读 · 0 评论 -
android ndk 03 C语言 动态分配内存,字符串操作
动态分配内存,字符串操作动态内存分配在说动态内存分配之前先说下 静态内存分配void main(){ //静态内存分派 int a[1024*1024*10];//申请10m //这样申请会提示堆栈溢出}堆内存 栈内存下面代码 作用 每隔一秒申请40M 内存 看任务管理器 可以看到 别搞死机了,可以把free注释 打开 不过就看不到效果了//堆内存void heap原创 2017-08-07 16:17:46 · 1024 阅读 · 0 评论 -
android ndk 02 C语言 二级指针 指针运算 指针与数组
c函数速查: https://pan.baidu.com/s/1sllYdul通过几个例子 复习 二级指针 指针的运算 指针与数组 函数指针 练习指针为什么要有类型指针和地址的区别, 指针有类型 地址没有类型.#include <stdio.h>#include <stdlib.h>#include <Windows.h>#include <math.h>#include <time.原创 2017-07-31 17:27:39 · 783 阅读 · 0 评论 -
android ndk 01 c语言 基本数据类型_输入输出_指针
开始复习c了 ndk 开始深入学习 一步一步来 每天写一点工作环境 win10 64位 开发工具visual studio 2013下载地址 https://pan.baidu.com/s/1eS8EBnG安装过程就不说了 全部勾选默认安装就行.建立项目基本按照http://jingyan.baidu.com/article/adc8151355a09cf723bf73c5.html 来做但原创 2017-07-26 19:13:08 · 670 阅读 · 0 评论