我正在尝试将 1080p 视频聊天流嵌入到 Android 上的 Unity 应用程序中。
为此我尝试使用Agora.io,但当前版本的 Agora for Unity 完全在 CPU 上运行,并且在我的 Android 设备上将 1080p 纹理从 CPU 复制到 GPU 需要 20 毫秒 - 太慢而无法保持一致的 60fps 帧速率在我的应用程序中。理想情况下,我需要复制操作不阻塞渲染线程,或者我需要在 10 毫秒内完成复制,或者我需要完全在硬件中进行解码。
我已经深入研究了其他视频播放器应用程序是如何实现这一点的,通常它们使用 Android MediaCodec 或 ExoPlayer 将视频直接解码为硬件中的纹理。但是,这对于视频聊天应用程序来说似乎并不可行,因为将视频流编码为Android 支持的格式之一的过程会引入过多的延迟。
我很好奇 Skype 和 Hangouts 等应用程序是如何实现这一点的——但我怀疑它们要么以 30fps 运行,要么将视频分辨率限制在 720p 或更低。
我也考虑过创建我自己的视频聊天协议,使用像Basis 纹理压缩这样的东西来解压缩 GPU 而不是 CPU 上的纹理,但是关于如何将 Basis 编译和集成到 Android 应用程序中的信息很少。
所以我的问题是,有没有人知道视频聊天 SDK 可以提供这种性能和保真度而无需过多的开发工作?