我正在尝试通过ffmpeg在android中流式传输视频,解码后得到的输出是YUV格式。是否可以直接在Android屏幕中渲染YUV图像格式?
最佳答案
是和否。
摄像头和硬件视频解码器的输出一般是YUV。来自这些源的帧通常直接发送到显示器。它们可以由驱动程序转换,通常使用硬件缩放器和格式转换器。这对于提高效率是必要的。
没有 API 允许应用程序以相同的方式传递 YUV 帧。基本问题是“YUV”覆盖了很多地方。视频解码器使用的缓冲格式可以是各种硬件模块可以有效处理的专有内部格式;为了让您的应用程序创建这种格式的表面,它必须执行转换,并且您又回到了性能方面的状态。
您应该能够使用 GLES2 着色器在显示过程中为您进行转换,但我没有指向演示这一点的代码的指针。
更新:对 this question 的回答有一个链接到 WebRTC source file演示了在 GLES2 着色器中进行 YUV 转换。
关于android - 在android中渲染YUV格式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26336024/