gpt4 book ai didi

android - 使用 MediaCodec 录制 720p 视频但编码视频的 fps 太低

转载 作者:太空狗 更新时间:2023-10-29 13:17:53 26 4
gpt4 key购买 nike

我写了一个视频录制demo,我的实现和Grafika的ContinuousCaptureActivity是一样的。 在 ContinuousCaptureActivity.java 中,作者在 SurfaceCreated 中创建了在 UI 线程中运行的 egl 对象,并在 UI 线程中调用了 drawFrame。他在 drawFrame 中做了两件事,将帧绘制到屏幕并将数据推送到编码器。

请在此处查看代码:ContinuousCaptureActivity

由于我将编码视频大小设置为1280*720,较大,导致相机预览不流畅,目标视频fps低。 我打算创建一个新线程来完成编码工作,但我不知道如何处理 opengl es 的多线程。谁能给点建议?

补充:我发现Texture2dProgram的drawFrame使用了GLES20.glDrawArrays,请问GLES20.glDrawElements性能会更好吗?

最佳答案

首先,1280x720 不应该成为主流设备的问题。一些 super 便宜的低端设备可能会遇到困难,但如果硬件根本无法处理 1280x720x30fps,您实际上无能为力。

我见过的 720p 低 FPS 的最常见原因是未能使用合理的 fps 值配置相机(使用 setPreviewFpsRange() 和来自 getSupportedPreviewFpsRange()< 的值),并且无法调用 setRecordingHint(true)(或 Camera2 等效项)。后者可以让您从 15fps 到 30fps,但可能会影响预览的纵横比。

视频编码在称为媒体服务器的单独进程中执行,该进程管理与视频编码器硬件的所有交互。已有多个线程在运行,因此添加另一个线程也无济于事。

GLES 代码正在绘制两个带纹理的三角形。使用不同的 API 不会改变差异。

如果你认为存在性能瓶颈,你需要使用像systrace这样的工具缩小范围。

关于android - 使用 MediaCodec 录制 720p 视频但编码视频的 fps 太低,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32804950/

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