• 作者:老汪软件技巧
  • 发表时间:2024-11-11 21:03
  • 浏览量:

们在知识星球上创建的音视频技术社群关键帧的音视频开发圈已经运营了一段时间了,在这里大家可以一起交流和分享音视频技术知识和实战方案。我们会不定期整理一些音视频相关的面试题,汇集一份。也会循序渐进地归纳总结音视频技术知识,绘制一幅。

下面是第 11 期音视频面试题集锦的几条精选:

1、OpenGL 的双缓冲机制是什么?eglCreateWindowSurface、eglCreatePbuffferSurface 和双缓冲机制有什么关联吗?

双缓冲机制主要目的是为了解决计算机图形学中的屏幕闪烁和画面流畅性问题。该机制通过在内存中创建两个缓冲区:一个用于绘制图像的后缓冲区,一个用于显示图像的前缓冲区,来避免因为输入输出速度不匹配造成的界面闪烁、卡顿等现象。这个问题是很老的问题了,目前的系统基本都已经支持双缓冲了。

双缓冲机制与的eglCreateWindowSurface、eglCreatePbuffferSurface这两个方法没有直接的关系。这两个方法是为了实现当前屏幕渲染和离屏渲染的功能,eglCreateWindowSurface是创建屏幕上的渲染区域来实现屏幕渲染,eglCreatePbuffferSurface是创建屏幕外的渲染区域来实现离屏渲染。也就是说你创建eglCreateWindowSurface就自动支持双缓冲机制了。

2、请问 Android 上如何识别一个视频是哪种格式的 HDR 视频:Dolby/HLG/HDR10/HDR10+?

public void onOutputFormatChanged(@NonNull MediaCodec mediaCodec, @NonNull MediaFormat mediaFormat) {
 if (format.containsKey(MediaFormat.KEY_HDR10_PLUS_INFO)){
   Log.d(TAG, "hdr10");
 } else if (format.containsKey(MediaFormat.KEY_HDR_STATIC_INFO)){
   Log.d(TAG, "hdr10+");
 }
}

3、HEVC OpenGOP 的新增的帧类型有哪些,在开发中需要注意什么?

HEVC 包含大量不同的帧类型。这些类型都会在 NALU 头信息中标记便于我们识别帧类型。其中 OpenGOP 包含下列帧类型:

尾随帧(Trailing pictures):在输出和解码顺序上均在 IRAP 和前导图片之后。TSA(Temporal Sublayer Access)和STSA(Stepwise Temporal Sublayer Access):标记解码器需要切换视频分辨率的帧,也是编码分层逻辑里面的分层转换点。

图片

HEVC Open GOP

开发 OpenGOP 视频需要注意的点,读者可以结合上面的示例来理解:

_星球视频的星球社区咋没了_星球社群

4、介绍一下 Android 14 引入了 Ultra HDR Image 格式?

Ultra HDR 图片格式的原理是结合了标准 8-bit JPEG 基础图像与一个较低分辨率的、带有增益映射的 JPEG 图像以及用于 HDR 重建的元数据。首先,它通过加入一个标准 8-bit 的 JPEG 压缩图像,这个图像提供了基础的色彩和细节。然后,它关联了一个较低分辨率的 JPEG 图像,这个图像带有增益映射,可以提供额外的细节和动态范围。最后,它还包含了用于 HDR 重建的元数据,这些元数据可以用来创建 HDR 图像。

Ultra HDR 图片格式的核心优势在于其自适应的渲染方式。它可以根据硬件设备、显示能力的条件来选择最终的渲染方式。即使硬件设备或应用程序无法识别文件中的 HDR,Ultra HDR 照片格式仍然可以作为普通的 SDR JPEG 文件进行解析和显示,具备完全的向下兼容性。

图片

Ultra HDR Image

Ultra HDR 图片解码过程如下:

图片

Ultra HDR 图片编码

Ultra HDR 编码主要有以下 5 个步骤:

如果你也对音视频技术感兴趣,比如,符合下面的情况:

vx 搜索『gjzkeyframe』 关注『关键帧Keyframe』。发送消息『知识星球』来获得知识星球二维码