Android 利用 FFmpeg 获取每一帧数据信息

一、本节目标

在上一节中演示了如果打开码流并且获取音视频的相关信息。这一节来获取码流每一帧的信息。在开始之前,首先来了解一下 FFmpeg 的对码流的处理过程。

FFmeg 处理流程如下:

  • 1、得到输入流,打开输入流
  • 2、解封装格式->得到编码数据包 AvPacket
  • 3、解码数据包->得到解码的原始数据 AvFrame
  • 4、处理数据->例如滤镜处理,重采样,像素格式转化等
  • 5、编码原始数据->得到编码后的数据
  • 6、封装格式
  • 7、得到输出文件

通过了解上面的步骤可以知道,我们本小节的目的就需要处理第1,2步即可。

那么我们需要得到每一帧的什么数据呢?

  • 1、 确定是音频帧还是视频帧(暂时不考虑字幕) -> 将对应的数据交给指定的解码器处理。
  • 2、 帧的数据以及大小 -> 获取帧的内容,例如音频重采样,视频像素格式转化。
  • 3、 帧的时间戳 -> 可以用于音视频同步。
  • 4、 是否为关键帧 -> 追帧优化

二、解封装

第1步在上一小节已经描述过了,现在直接跳到第2步。
在 FFmpeg 中使用 AvPacket结构体来记录每一帧数据。它是在解封装时调用 av_read_frame 函数将当前帧数据保存到 AvPacket 中。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值