上一节记录了Android使用FFmpeg环境搭建过程。这一节记录视频解码过程。
问题描述
在开发中使用某摄像头的SDK,只能获取到一帧帧的 H264 视频数据,不知道视频流地址,需要自己解码出图像并播放。
问题解决
编译FFmpeg
开发环境配置
解码H264
原始数据格式
首先看我们能获取到数据格式
public class VideoStream{
//video buffer
byte[] streamBuffer;
//pps
byte[] ppsBuffer;
//sps
byte[] spsBuffer;
//当前是I帧还是P帧
int frameType;
}
Java层代码
我们需要将从Java层取到的原始数据通过JNI传递到C层,交给FFmpeg解析。 Java 类大致如下:
public class H264FrameRender {
static {
//加载自己的 so 库
System.loadLibrary("decoder");
}
//保存C中的对象内存地址
private long nativeObject;
public H264FrameRender() {
long address = this._init();
if (address <=