音视频

低端机录制视频时发热的问题要怎么优化?丨有问有答

2022-04-09  本文已影响0人  关键帧Keyframe

前一时间,我在知识星球上创建了一个音视频技术社群:关键帧的音视频开发圈,不少朋友加入并在里面咨询一些音视频相关的技术问题,其中不乏一些开发中普遍遇到的问题,这里我会挑一些放出来供大家参考。

如果你也有音视频技术问题想咨询,或者符合下面的情况:

不妨看看《是的,我建了一个进阶百万年薪的社群》了解一下这个社群,根据自己的需要,按需加入。


今天我们要聊的问题是一位社群的朋友提出的,原文如下:

对于低端机在录制时候发热,除了降低分辨率和码率,请问还有其他优化方案吗?

以下是我对这个问题的一点看法,欢迎大家留言讨论补充:

手机发热的根本原因是:CPU/GPU 使用负载过高。所以要优化低端机发热问题,基本思路是从降低 CPU/GPU 的使用负载出发。

在手机录制的场景下,可能涉及到这些功能模块:

在上述模块中,容易成为发热重点的 CPU/GPU 计算密集型模块一般是:图像处理编码

在低端机上,要优化发热:

1)简单的做法:去掉『可选』,优化『必选』。

2)进阶的做法:数据处理链路降低计算消耗。

3)精细的做法:全机型跑分,动态适配功能模块。

此外,开发 iOS 应用时,可以使用 Xcode 的 Energy Impact、Instrument 的 Energy Log 等工具来分析和定位性能消耗的大户,进行针对性的优化。

接着,这问朋友又问到:

在 iOS 上,如何使用系统能力来减少 GPU 和 CPU 之间的数据拷贝呢?

我补充回答如下:

在 iOS 上,使用设置了 kCVPixelBufferIOSurfacePropertiesKey 属性的 CVPixelBufferRef 是可以支持 GPU 和 CPU 共享内存的。从相机采集出来的、从 VideoToolbox 解码出来的 CVPixelBufferRef 都具有这个属性,所以通常来讲使用系统的 API 时,你并不太需要操心这个问题。

如果你要自己创建一个图像来进行渲染,还希望能读出其数据做其他处理,并且希望支持 GPU 和 CPU 共享内存,可以参考下面的文章:

  • About Texture Cache[1]

参考资料

[1]

About Texture Cache: https://allmybrain.com/2011/12/08/rendering-to-a-texture-with-ios-5-texture-cache-api/

- 完 -

vx 搜索『gjzkeyframe』 关注『关键帧Keyframe』咨询,或知识星球搜『关键帧的音视频开发圈』加入(早加入还有少量优惠券)。

上一篇下一篇

猜你喜欢

热点阅读