public:it:mediacodec

MediaCodec

  • 解码器状态图:
  • 解码器存有缓存,输入帧与输出帧并不是一一对应对应输出,中间会差个几帧,只有收到EOS才会把缓冲帧全部输出。
  • 如果要实现播放器暂停时,调整滚动条的一帧画面显示预览,得如下操作:
    1. flush, 清除之前的缓冲帧
    2. input, 输入当前的一帧关键帧
    3. input, 输入EOS 流结束标志
    4. 接收 output 画面,直到收到 EOS
    5. flush, 让解码器从 EOS 状态转为 Flushed 状态
    6. input, 输入与第二步同样的关键帧,因为播放器此时从暂停转为继续播放的话,会省略之前已发送的帧。如果解码器不先输入关键帧的话,后续的画面会花屏一阵子。
  • public/it/mediacodec.txt
  • 最后更改: 2022/08/03 09:00
  • oakfire