
NDK
NDK
六号表哥
这个作者很懒,什么都没留下…
展开
-
Android 利用 FFmpeg 解码音视频数据
一、本节目标继上节获取解封装的 AvPacket 数据包之后,我们知道 AvPacket 存储的都是编码后的数据,因此我们需要将数据包进行解码,从而得到原始的数据,而 FFmpeg 使用 AvFrame 这个数据结构来存储解码后的数据。对于解码后的数据:视频原始数据一般是用 yuv 表示。音频原始数据一般用 pcm 表示。而在开始之前,我们还是来回顾一下 FFmpeg 处理流的整个过...原创 2019-01-21 00:11:39 · 1676 阅读 · 0 评论 -
Android 利用 FFmpeg 获取每一帧数据信息
一、本节目标在上一节中演示了如果打开码流并且获取音视频的相关信息。这一节来获取码流每一帧的信息。在开始之前,首先来了解一下 FFmpeg 的对码流的处理过程。FFmeg 处理流程如下:1、得到输入流,打开输入流2、解封装格式->得到编码数据包 AvPacket3、解码数据包->得到解码的原始数据 AvFrame4、处理数据->例如滤镜处理等5、编码原始数据-&...原创 2019-01-20 20:51:03 · 3328 阅读 · 0 评论 -
Android C++生产者与消费者简易Demo
1. C++生产者与消费者在了解生产者与消费者之前,我们先来看看 C++ 关于线程的一些基本知识:线程锁pthread_mutex_t :用于创建线程锁对象如:pthread_mutex_t mutex;pthread_mutex_init :用于初始化pthread_mutex_t锁对象如:pthread_mutex_init(&a原创 2019-01-04 13:07:55 · 304 阅读 · 0 评论 -
Android 在JNI子线程调用Java方法
1. C++ 全局调用Java方法之前讨论过,如何C++主线程中调用 Java 函数C++主线程调用Java方法,下面来看看如何在子线程中调用 Java 函数。由于JNIEnv是与线程绑定的,就像 Android 的 Looper 也是和线程绑定一样,每一个 Looper 会对应一个线程。因此要在子线程中调用 Java 的方法,需要得到当前线程的 JNIEnv 实例。那么如何在获取当前线程的...原创 2019-01-01 17:19:27 · 2069 阅读 · 0 评论 -
Android 在JNI主线程调用Java方法
1. C++ 全局调用Java方法1.1 C++主线程调用Java方法在 Android C++多线程-创建子线程中演示了在 Java 层调用 native 层的方法,但是如何在 native 层去调用 Java 层的方法呢?下面这个类,我们想在调用 callJavaMethodOnCPPMainThread 方法之后,然后在 native 层回调 JniThreadDemo 的 onSuc...原创 2019-01-01 16:58:05 · 777 阅读 · 0 评论 -
Android 引入 FFMpeg 并打印编解码库
在编译完 Android 平台下的 FFMpeg 库之后,我们接下来接入到 AndroidStudio 工程中。我们验证的目的是想在 AndroidStudio 控制台中打印 FFMpeg 所有支持的编解码库信息,下面我们来一步一步的实现这个过程。要完成这个功能主要有以下 2 步:创建支持 C++ 的 AndroidStudio 工程。配置 FFMpeg1.1 创建支持 C++...原创 2019-01-01 16:18:03 · 23757 阅读 · 5 评论 -
Android C++多线程-创建子线程
在编译完 Android 平台下的 FFMpeg 库之后,我们接下来接入到 AndroidStudio 工程中。我们验证的目的是想在 AndroidStudio 控制台中打印 FFMpeg 所有支持的编解码库信息,下面我们来一步一步的实现这个过程。要完成这个功能主要有以下 4 步:创建支持 C++ 的 AndroidStudio 工程。配置 FFMpeg1.1 创建支持 C++...原创 2018-12-31 23:48:23 · 1177 阅读 · 0 评论