gpt4 book ai didi

android - 将 MediaCodec 解码的视频帧绘制到屏幕的最快方法?

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:50:58 25 4
gpt4 key购买 nike

我正在寻找最快的方法来获取从 MediaCodec 解码器接收到的图像帧并将其绘制到 Android 设备屏幕上。重要的约束和解释是:

  1. 无法使用 MediaPlayer。不允许使用中间应用。

  2. 必须尽快将 MediaCodec 解码器的输出帧绘制到屏幕(尽量减少延迟)。

  3. 可用的解码器输出格式如下:
    ColorFormat[0] 0x00000013 COLOR_FormatYUV420Planar
    ColorFormat[1] 0x00000015 COLOR_FormatYUV420SemiPlanar
    ColorFormat[2] 0x7F000001 OMX_SEC_COLOR_FormatNV12TPhysicalAddress
    ColorFormat[3] 0x7FC00002 OMX_SEC_COLOR_FormatNV12Tiled

  4. 视频分辨率以及每个输出帧的分辨率为 960x720。

  5. 目标平台是 Galaxy Note II,方法可以特定于该平台(例如,利用可用的硬件功能)。这不需要在其他平台上工作或成为通用解决方案。

用时少于 66 毫秒的方法会很好。少于 33 毫秒会很棒。我目前的方法需要 80-90 毫秒,这很糟糕。 (我不会费心去描述它,因为我不想在任何特定方向上歪曲答案。)

最佳答案

最好的办法是直接解码到 Surface。解码为 ByteBuffer 会大大降低您的速度。关于 bigflake 的一些例子(例如 ExtractMpegFramesTest)将解码器的输出发送到屏幕外的表面并使用 GLES 检查它,但这是一个简单的改变就可以让它在屏幕上工作 SurfaceView .

更新: Grafika有两个不同的基于 MediaCodec 的视频播放器,分别将输出发送到 SurfaceView 和 TextureView。

关于android - 将 MediaCodec 解码的视频帧绘制到屏幕的最快方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20203480/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com