博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Android视频编码器(1)——CameraYUV送给ffmpeg进行软编码,保存为h264
阅读量:5082 次
发布时间:2019-06-13

本文共 929 字,大约阅读时间需要 3 分钟。

http://blog.csdn.net/a992036795/article/details/54020491

一、目的

在Android上使用FFmpeg将摄像头采集的YUV裸流编码为h264。
二、环境准备
1、使用FFmpeg动态库(这个动态库需要有libx264的实现,否则可能会出现寻找编码器失败异常)。关于如何获得这样的一个动态库可以参考http://blog.csdn.net/a992036795/article/details/53941436
2、android开发环境(我用的是Android Studio2.2.3) 和最新的ndk。
三、思路
1、初始化ffmpeg的一些配置。
2、调用系统摄像头设置参数使用mCamera.setPreviewCallbackWithBuffer();设置回调接口用来接受YUV数据。
3、将摄像头获得的YUV数据(默认是NV21)转化成YUV420P格式
3、将获得的修改后的数据传给编码器,进行编码
4、输出
四、流程
这里写图片描述

流程基本分三大步

1、初始化(包括打开输出文件,设置参数,寻找编码器、写入头信息等。)
2、实时传入数据进行编码
3、刷帧,并写入尾部信息。释放资源

我用三个jni方法分别对应这三步:

/** * 初始化。 * * @param destUrl 目标url * @param w       宽 * @param h       高 * @return 结果 */public static native int init(String destUrl, int w, int h);/** * 传入数据。 *  * @param bytes * @param w * @param h * @return */public static native int push(byte[] bytes,int w,int h);/** * 停止 * @return */public static native int stop();

五、代码

参考原作者。

转载于:https://www.cnblogs.com/stnlcd/p/7152217.html

你可能感兴趣的文章
Zookeeper常用命令 (转)
查看>>
Java程序IP v6与IP v4的设置
查看>>
RUP(Rational Unified Process),统一软件开发过程
查看>>
数据库链路创建方法
查看>>
Enterprise Library - Data Access Application Block 6.0.1304
查看>>
重构代码 —— 函数即变量(Replace temp with Query)
查看>>
Bootstrap栅格学习
查看>>
程序员的数学
查看>>
聚合与组合
查看>>
jQuery如何获得select选中的值?input单选radio选中的值
查看>>
设计模式 之 享元模式
查看>>
如何理解汉诺塔
查看>>
洛谷 P2089 烤鸡【DFS递归/10重枚举】
查看>>
15 FFT及其框图实现
查看>>
Linux基本操作
查看>>
osg ifc ifccolumn
查看>>
C++ STL partial_sort
查看>>
3.0.35 platform 设备资源和数据
查看>>
centos redis 安装过程,解决办法
查看>>
IOS小技巧整理
查看>>