【Android音视频开发】从AVFrame到MediaFrame数组(一)

最近在学习Android中的音视频开发,《从AVFrame到MediaFrame数组》是一个学习的记录
它共分为4个部分:
(一): 是对《从AVFrame到MediaFrame数组》所实现的功能以及涉及到知识点的介绍
(二): 从AVFrame到Java层的Bitmap
(三): 从AVFrame到Java层自定义的实体类MediaFrame
(四): 从AVFrame到Java层自定义的实体类MediaFrame的数组

简介

目的

输入:一个视频素材
输出:Android屏幕上的画面

分析

用户将一个视频文件传递到底层,我们在底层通过FFmpeg解码视频,得到一个个视频帧(AVFrame),下面列举三种将AVFrame转换后,回传给Java层的情况:

  1. 将AVFrame转换成Bitmap,回调Java层接口,将Bitmap传递给Java层去渲染到Android屏幕上
  2. 实际项目中可能除了Bitmap,我们还需要Bitmap额外的数据,比如加一个Id,那我们就需要自定义一个实体类,封住一下这个Bitmap,我们给这个实体类起一个名字,叫MediaFrame:

    public class MediaFrame {
        private String id;
        private Bitmap bitmap;
        
        public void setId(String id) { this.id = id; }
        public String getId() { return id; }
        
        public void setBitmap(Bitmap bmp) { this.bitmap = bmp; }
        public Bitmap getBitmap() { return bitmap; }
    }
  3. 有时候我们可能不只要上传一个图片,有可能要显示多个帧,那么我们就要返回给Java层一个MediaFrame数组

实现

基于上述三种回调,分别用三篇文章去记录,一步一步实现:

  1. AVFrame -> Bitmap
  2. AVFrame -> Bitmap -> MediaFrame
  3. AVFrame -> Bitmap -> MediaFrame -> MediaFrame[]

链接到下一文:《从AVFrame到MediaFrame数组(二)》

你可能感兴趣的:(ffmpeg,jni,ndk,android)