Android调用JNI的进阶实例(摄像头预览数据转码RGB播放)

本文介绍了一个Android使用JNI处理摄像头预览数据的进阶实例,通过JNI调用C/C++函数将YUV视频帧转换为RGB并显示。主要涉及Camera预览、JNI接口、C函数转码以及图像渲染等方面。
摘要由CSDN通过智能技术生成

前一篇的博文介绍了:Android调用JNI的简单实例(附详细步骤),现在带来一个进阶版的,虽然时间隔得有点久远。

这里要说下,尽量不要用Java写编解码的东西,就算你是大神,你写的出来,但那也是不实用的,就像切西瓜一样,拿一把削水果刀去切西瓜,肯定比不上用西瓜刀方便吧,还是老老实实写个JNI调用得了,也不复杂C/C++方便的很,当然,这里不是说Java不行,语言只是工具,做什么事情用什么语言,没必要硬着头皮往上顶对吧。纯属个人观点,大神可以无视。

好了进入正题,该实例主要内容:开启摄像头预览,将获取到的视频帧YUV数据,通过JNI调用C的转码函数转为RGB类型数据然后返回,在自定义控件上绘制播放。

1、工程结构:


该工程是在之前的SimpleJni实例上进行修改的,简单描述一下功能:

CameraEngineActivity主界面,用于加载控件及渲染等;

CameraView摄像头预览控件,用于预览及捕获视频帧YUV数据;

ImageUtilEngine声明调用C函数的接口类,声明native的C函数;

SporeRender渲染画面类,用于绘制图像;

Texture2D图像优化类,用于优化图像纹理;

Demo地址:


2、新建java调用C函数的接口类

package com.eric.complexjni;
/*
 *@author Eric 
 *@2015-12-7下午4:35:18
 */
public class ImageUtilEngine {
	 static {
	        System.loadLibrary("");
	    }

	 public native int[] decodeYUV420SP(byte[] buf, int width, int heigth);
}
3
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值