gpt4 book ai didi

android - 使用 ndk 与 ffmpeg 和 opencv 在 android 上的视频处理非常慢

转载 作者:塔克拉玛干 更新时间:2023-11-03 06:41:52 24 4
gpt4 key购买 nike

我正在使用 ndk 在 android 上进行一些视频处理。

我现在正在做的是使用 ffmpeg 解码视频,抓取帧,将其转换为 opencv mat,然后在其上叠加一些图像,然后将其转换回 avframe,将其编码回视频。

但是速度很慢!处理 15 fps 的 480*480 视频大约需要 50 秒。

我尝试使用 opengl es 执行此操作,使用 glReadPixels 读取结果图像,但据我了解,glReadPixels 在某些设备上并不适用。所以我不得不放弃。

据我了解,我当前的工作流程中有一些非常昂贵的操作,

  1. 将 AVFrame 从 yuv 转换为 bgr 颜色空间,然后转换为 opencv mat
  2. 将一个垫子覆盖在另一个垫子上
  3. 将 opencv mat 转换为 AVFrame,然后将帧从 bgr 转换为 yuv 空间,然后将其编码为视频。

那么,有什么方法可以改进我当前的工作流程吗?

我正在添加多线程功能,但只有配备多核 cup 的设备才能从中受益。

最佳答案

OpenGL ES 不是为直接处理视频而设计的。您需要使用一些 EGL 扩展并使用着色器代码将帧从 YUV 转换为 RGB 颜色空间。这提供了最大的性能增益。您也不得使用 glTexImage2D() 和 glReadPixels()。这answer包含指向展示如何将 OpenGL ES 用于视频的文章的链接。

关于android - 使用 ndk 与 ffmpeg 和 opencv 在 android 上的视频处理非常慢,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27145616/

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