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

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

简介

目的

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

分析

用户将一个视频文件传递到底层,咱们在底层经过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数组

实现

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

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

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

相关文章
相关标签/搜索